你最喜爱的编程语言不够好

fmms 13年前
     英文原文:    <a href="/misc/goto?guid=4958334470709857170">Your favourite programming language is not good enough</a>     <p> 我的《<a href="/misc/goto?guid=4958329175515020989" target="_blank">Python is important》</a>这篇博客引来如此多的评论,让我颇为意外。大多数的评论是正面的,但同时多少也都带点不太积极的色彩。我发现,这些评论反映出的一个很突出的问题是,程序员如何看待编程语言:他们去追求完美的语言,热爱它,保护它。为什么如此多的程序员会对他们最喜欢的编程语言如此感性化?试想,其实世上没有哪种语言能够完美的把你的脑子里的思想转变成机器代码,所有的语言都有一定的局限性——它们都会限制你的思想的发挥或不能让机器的充分的施展能力。</p>    <p> 我相信,程序员热烈的去为某种语言编程辩护的行为,其主要的一个原因就是:懒惰。当然,优秀的程序员通常是很懒惰的(他们喜欢让所有的工作都能自动化完成),但我说的这种懒惰是特指的,是非常不好的懒惰——懒得去学习。如果我最爱的语言是最好的,或只要不比其他语言差,我就不需要花时间和精力学习新的语言了。</p>    <p> 这种现象主要的问题是,不仅你不可能找到一种完美的语言,而且当你仅习惯于一两种语言,仅满足于一两种语言后,你解决问的思路也就会仅限于这一两种语言能够实现的方式——如果你会的这一两种语言很相似的话,属于同一种语系,问题就更严重了。</p>    <p> 当你解决一个问题需要选择一种语言时,尽一切可能,选择一种你感觉能最胜任的语言——最强大的,效率最高的,最适宜的,拥有最多程序库的语言。如果你是一个很认真的程序员,而不是那种随便搞搞的程序员,你就需要去学习新的语言,你需要抛弃这种认为这种语言比其它语言都好的思想。所有的编程语言都各有利弊,没有一个是完美的。我们可以说,某种强于其它语言,但没有一种语言会擅长做任何事情,没有一种语言会样样都好。Python 有其自身的问题(我指的不是它的动态类型),各种 Lisp 方言也是这样(我指的不是它们的太多的括弧),Haskell 语言也是(人们公认它有很多奇异之处<sup>*</sup>)。</p>    <p> 学习新的语言。学会不要去盲目崇拜某种语言,学会不要去为“你的”语言辩护、反驳所有的批评。如果你觉得还不到火候,读一读《<a href="/misc/goto?guid=4958334472262830791">计算机程序的构造和解释(Structure and Interpretation of Computer Programs)</a>》,学习一种 Lisp 方言——它会让你看清楚,让你感受到其它语言的局限性,这种痛苦会让你成为一名更好的程序员——不论你是什么语言的程序员。</p>    <p> <sup>*</sup>我是在开玩笑。事实上,Haskell 将是我下一种要学习的语言。</p>    <div id="come_from">     来自:     <a id="link_source2" href="/misc/goto?guid=4958334473058289852" target="_blank">外刊IT评论</a>    </div>