假如海明威會寫JavaScript…
英文原文:If Hemingway wrote JavaScript
編者按:這篇文章來自一名極客兼書呆子 Angus Croll。Angus Croll 在 推ter 就職并專門開設了一個關于 Javascript 的博客。
很久很久以前,在我還沒有開始寫一行代碼以前,我就開始喜歡文學了。不過…現在,我是個用 JavaScript 寫代碼,寫很多很多代碼的極客,而且,我還要為此出書了。
你一定很好奇,為什么 JavaScript 會吸引那么多文學死忠呢?其實我有幾個半生不熟的理論來證明這種語言實際潛藏的巨大表達力,不過…要等到下回才說。這回我們來說說,那些偉大的作家們會如 何使用 JavaScript,又能把 JavaScript 玩出什么花樣來。
其實,這個想法源自我自己的一個夢。在這個夢里,我要求海明威和其他的幾個文豪為我寫一個 JavaScript 函數,這個函數可以返回一個特定長度的斐波納契數列。很有意思的是,每個作家都選擇了用一種不同的方法來解決同一個問題。來看一下吧:
海明威
毫無疑問,對海明威這樣一個倡導極簡主義的作家而言,他寫的 JavaScript 代碼也是直擊要害,沒有半字多余。這代碼寫得一點兒也不花哨,甚至可以說是有點兒迂腐,不過,這正是海明威的作品之美。無需復雜的邏輯或是巧妙的變量名, 代碼寫得簡潔清楚,既完成了任務又絕不節外生枝。
另外,海明威可從來都不會待見那些傻瓜們。所以,假如你需要輸出一個元素個數少于 2 的斐波納契數列,他會直接將你忽略掉:“我累了,而且這個問題很傻。”
莎士比亞
咱的大文豪大詩人在此時顯得有些啰嗦,不過我們只會得到這樣的結果。注意看莎翁給我們寫的代碼注釋(大家注意不是什么字幕或者舞臺指導),都是 用五音步抑揚格寫成的!莎翁在他的戲劇中就經常會背離嚴格的五音步抑揚格,來增強一些戲劇性的重點,比如說,他可能會在臺詞里面故意增加一個音節,或者使 用一個交變應力。看起來,他在寫代碼的時候也用了同一招哦。
狄更斯
我自己本人可不是狄更斯的粉絲。亨利詹姆斯的評價我大部分都同意:
“假如我們可以大膽定義他文學作品中的人物,那么,我們應該稱他為最偉大的淺薄小說家。我們清楚,這樣說會把他歸為文字工作者中較為低劣的一 級,但我們還是接受這種說法。在我們看來,假如我們將狄更斯歸入最偉大的小說家之列,那就是對人道的一種違背。因為…在這里重申上面暗示的觀點,他除了塑 造了人物之外,再無其他貢獻,也并沒有提升我們對人性的理解。”——亨利詹姆斯,《回顧我們共同的朋友》,1865年發表于《The Nation》
他的這種淺薄也體現在它提供的斐波那契數列解決方案中。沒錯,這里面確實有一些比較有趣的名字,不過這個方案本質上卻完全缺乏內涵和理解。他沒有真正理解斐波那契數列的哲學,而是在解決問題的過程中訴諸棍棒,用了乘法。唉…
結束語
不管怎樣,優質的 JavaScript 代碼跟教條主義無關。有些開發人員喜歡各種規則手冊和樣板,而這也是為什么我們會有 Java。JavaScript 的真正樂趣在于它靈活性高,潛藏著各種可能性,而自然語言也有相同的特點。最好的作家和最優質的 JavaScript 程序員都是那些對語言癡迷,并在日常生活中對其進行不斷探索以發展自己的風格、自己的習語、自己的表達的人。
這就是我想說的全部,希望你會喜歡,不過,大部分都是 nonesense。