寫程序如同作家寫小說一樣,程序就類似一個劇本。如此一來,程序員和作家其實是同行,而且,他們都是坐在電腦跟前不停地敲打着鍵盤,兩人在一起沒準能用鍵盤奏一曲呢~
為咩這麼說呢?小說是從構思到實現,程序從編程到運行,二者都是在運行你的思想,隻是他們的表達出來的形式不太一樣。作家在下筆之前若沒有想法,就會出現很錯亂的故事劇情,毫無邏輯可言。寫程序也一樣,先醞釀好想法,才好寫下來告訴二逼電腦該幹嘛。不過程序語言不是每個人都讀的懂,畢竟對大多數人這是外語。但看不懂火星文,不代表沒有好的火星文作品。
大家都會記得第一次寫出來的作文,是多麼混亂和随意,因此你想寫出好作文必須對寫完的文字進行調整、潤色,這在編程中稱為重構。
并且,作家和程序員,等級也有着明顯的差異。
作家可以創作,程序員也可以。但這跟實力和理想有關。寫程序如寫文章,寫出來的好壞,得看那位程序員的功力。
給大家舉個列子,我看完《指環王》這本書之後,不由得感歎《指環王》真是一部神作。就像程序員寫代碼一樣~
《指環王》最初隻是《霍比特人》的續集。托爾金的出版商想通過續集從大獲成功的《霍比特人》大賺一把。但《精靈寶鑽》并不是成功的續集。于是,托爾金開始打算為《霍比特人》創作一個續集。第一本書的書名是《黑影重臨》,而不是《指環王》。這部小說仍然是寫給孩子看的。弗羅多被稱為賓果,斯特爾德是個名叫特羅特的霍比特人,比爾博打算結婚程序員,魔戒仍然隻是一枚戒指。 這個故事沒有明确的動機或方向。 托爾金曾問道:“霍比特人還能做什麼?”接着,霍比特人的想法湧現了出來。
托爾金寫了一份又一份草稿,尋找引領故事的方向。托爾金寫道《黑騎士》的場景時程序員,一切都變了。一開始,黑騎士實際上是白騎士。甘道夫來找賓果談話。随後故事開始展開。随後,突然之間,馬的顔色從白色變成了黑色,甘道夫變成了披着黑色鬥篷、頭戴兜帽的人, 這就類似于編程中的一個新的框架。
我們怎麼知道,這是一個新的框架呢?幸好,通過克裡斯托弗·托爾金,我們了解了他父親對《指環王》所作的改變。 科裡 · 奧爾森博士(注:托爾金小說的權威研究者)向我們介紹了實際上是《指環王》的 git 日志。
想象一下,這好比是從真正的托爾金研究專家、天才分析師那裡讀到 We Love 論文,這很神奇。
我們看到一個又一個想法在文本中湧現。 這是持續不斷的重構和新開發過程。一些想法從頭貫穿到最後。 許多想法被擯棄,許多想法發生了演變。許多對話被保留下來,但被賦予了不同人物,以便在不同的情形下說出來。
這個創作過程的整體感覺就像是在開發軟件,隻是結果不是一款切實可行的應用軟件,而是有史以來最具影響力的故事之一。
對我來說,這個教訓印證了這句老話: 任何成功的大型系統都是從成功的小型系統開始的。這同樣适用于作家和程序員。 在創作過程中,你很容易對自己沒信心,因而感到沮喪。無論故事還是程序,不一定一開始都很出色;隻有不斷進化,才會獲得出色的結果。
有話要說...