你最喜愛的程式語言不夠好

發表於2012-03-27

英文原文:Your favourite programming language is not good enough,翻譯:外刊IT評論

我的《為什麼Python對程式設計師重要?》這篇部落格引來如此多的評論,讓我頗為意外。大多數的評論是正面的,但同時多少也都帶點不太積極的色彩。我發現,這些評論反映出的一個很突出的問題是,程式設計師如何看待程式語言:他們去追求完美的語言,熱愛它,保護它。為什麼如此多的程式設計師會對他們最喜歡的程式語言如此感性化?試想,其實世上沒有哪種語言能夠完美的把你的腦子裡的思想轉變成機器程式碼,所有的語言都有一定的侷限性——它們都會限制你的思想的發揮或不能讓機器的充分的施展能力。

我相信,程式設計師熱烈的去為某種語言程式設計辯護的行為,其主要的一個原因就是:懶惰。當然,優秀的程式設計師通常是很懶惰的(他們喜歡讓所有的工作都能自動 化完成),但我說的這種懶惰是特指的,是非常不好的懶惰——懶得去學習。如果我最愛的語言是最好的,或只要不比其他語言差,我就不需要花時間和精力學習新 的語言了。

這種現象主要的問題是,不僅你不可能找到一種完美的語言,而且當你僅習慣於一兩種語言,僅滿足於一兩種語言後,你解決問的思路也就會僅限於這一兩種語言能夠實現的方式——如果你會的這一兩種語言很相似的話,屬於同一種語系,問題就更嚴重了。

當你解決一個問題需要選擇一種語言時,盡一切可能,選擇一種你感覺能最勝任的語言——最強大的,效率最高的,最適宜的,擁有最多程式庫的語言。如果 你是一個很認真的程式設計師,而不是那種隨便搞搞的程式設計師,你就需要去學習新的語言,你需要拋棄這種認為這種語言比其它語言都好的思想。所有的程式語言都各有 利弊,沒有一個是完美的。我們可以說,某種強於其它語言,但沒有一種語言會擅長做任何事情,沒有一種語言會樣樣都好。Python有其自身的問題(我指的 不是它的動態型別),各種Lisp方言也是這樣(我指的不是它們的太多的括弧),Haskell語言也是(人們公認它有很多奇異之處*)。

學習新的語言。學會不要去盲目崇拜某種語言,學會不要去為“你的”語言辯護、反駁所有的批評。如果你覺得還不到火候,讀一讀《計算機程式的構造和解釋(Structure and Interpretation of Computer Programs)》,學習一種Lisp方言——它會讓你看清楚,讓你感受到其它語言的侷限性,這種痛苦會讓你成為一名更好的程式設計師——不論你是什麼語言的程式設計師。

*我是在開玩笑。事實上,Haskell將是我下一種要學習的語言。

相關文章