程式設計與寫作
原文由 Salvatore Sanfilippo 于 發布,訂閱此部落格
一年前,我暫停了寫程式的生活,開始寫一部小說,當時還天真地以為這份新的工作與過去截然不同。經過了一條由文字匯成的長河——寫下不少,但更多時候是在重寫——我現在幾乎可以確定,事實正好相反:打造大型系統與撰寫長篇小說,有著許多共通的特質與相似的過程。
這兩種活動最明顯的相似之處,在於兩者都是在「寫」些什麼。程式碼不是以自然語言寫成的散文,卻也有一套固定的規則(文法),有些寫法對大多數程式設計師來說顯得很自然,有些雖然形式上正確,讀起來卻讓人難以理解。
然而,兩者之間還有更深層的連結:一個好的程式和一本好的小說,都是局部與整體元素完美協作的總和。好的程式碼必須由寫得好、易於閱讀的單一語句所組成,但整體而言,程式的不同部分必須彼此正交、以一致的方式設計,並擁有乾淨的互動。好的小說也必須在微觀與巨觀這兩個尺度上同樣成功。句子必須寫得好,但整體結構與各部分之間的關係也同樣至關重要。
程式設計與寫作之間另一個不那麼結構性的共通點,在於面對兩者時所需要的動力:要成功,就必須有所進展,而要有所進展,就必須持之以恆。到目前為止,大家都普遍同意,程式和小說都還不會自己寫自己。二十年來寫程式的經驗在這方面給了我極大的幫助;我知道唯有每天坐下來寫,事情才會發生:一天寫一百個字,另一天寫兩千個字,但很少有一天我不在紙上留下文字。而如果你寫過的不只是某個更大系統裡的「填充物」,而是你自己的創作,你就會知道,寫程式時同樣會遇到寫作瓶頸。唯一的差別在於,對大多數人而言,你是工程師,所以如果你沒有產出,你就是懶惰。而同樣的懶惰,套在藝術家身上,就會變成創作過程中一個迷人的部分。
差異。
我認為寫作與程式設計之間最鮮明的差異在於,一本小說一旦寫完、編輯、定稿,大致上就固定不變了。當然也有作家在多年後回頭修改自己的小說、出版一個修正錯誤後版本的例子,但這很少見,就算發生,也是一次性的過程。程式碼則會隨著時間演進,不斷受到接連而來的修改,而且往往是由多人經手。這個簡單的事實對兩種過程產生了深遠的影響:程式設計師常常認為系統的第一個版本可以相當不完美;畢竟之後總有時間可以改進。相反地,作家知道每一部小說都只有一次機會,以至於寫散文在很大程度上就是重寫。不斷重寫句子、整個章節、聽起來虛假的對話,有時兩次、三次,甚至十次。
在這方面,我認為程式設計可以向寫作學習:當在撰寫一個新系統最初的核心時,當原創者還獨自一人、與世隔絕、可以為所欲為時,她應該假裝這個最初的核心是她唯一的機會。在系統誕生的過程中,她應該一次又一次地重寫這個原始的核心,以找到最好的設計。我的假設是,這個初始設計將會大大影響之後發生的一切:有機地去擴展一個擁有良好初始結構的東西,即使在遠離最初創作的多年之後,即使最初的核心只是未來系統龐大體量中的一小部分,最終仍會得到一個更好的系統。
如果你有興趣,這裡快速更新一下我的科幻小說的近況。在經過多次自我審閱後,我已經把手稿寄給了我的編輯 Giulio Mozzi。他會在幾週內把修改建議寄給我。我會根據他的筆記展開新一輪的修訂,希望能在一兩個月內完成定稿。然後,終於,我就可以準備出版義大利文版了。同時,定稿後的小說也會寄給我在美國的譯者,等她完成翻譯後,英文版也會隨之出版。這是一段漫長的旅程,但我由衷樂在其中。
隨機一篇部落格
留言
登入後參與討論