Python 悖论
2004年8月
在最近的一次演讲中,我说了一些让很多人不高兴的话:相比于 Java 项目,你更容易找到更聪明的程序员来参与 Python 项目。
我并不是说 Java 程序员很笨。我的意思是 Python 程序员很聪明。学习一门新的编程语言需要付出很多努力。人们学习 Python 不是因为它可以帮助他们找到工作;而是因为他们真正喜欢编程,并且对他们已经掌握的语言不满意。
这使得他们成为公司应该想要雇佣的那种程序员。因此,我将称之为 Python 悖论(暂且没有更好的名字):如果一家公司选择用一种相对冷门的语言来编写软件,他们就能雇佣到更好的程序员,因为他们只会吸引那些足够在意而学习它的人。对于程序员来说,这种悖论更加明显:如果你想找到一份好工作,应该学习的语言是那些人们不仅仅为了找工作而学习的语言。
到目前为止,只有少数公司足够聪明地意识到了这一点。但这里也存在一种选择:他们正是程序员最想为之工作的公司。例如,Google。当他们招聘 Java 编程职位时,他们也希望应聘者有 Python 经验。
我的一位几乎掌握所有常用语言的朋友,在他的大多数项目中使用 Python。他说主要原因是喜欢源代码的样子。选择一种语言而不是另一种语言,这似乎是一个轻率的理由。但这并不像听起来那么轻率:当你编程时,你花在阅读代码上的时间比编写代码的时间更多。你像雕塑家摆弄泥团一样摆弄源代码。因此,对于一位严谨的程序员来说,一种使源代码变得丑陋的语言,就像满是疙瘩的黏土对于雕塑家一样,令人恼火。
一提到丑陋的源代码,人们当然会想到 Perl。但 Perl 表面上的丑陋并不是我所指的那种。真正的丑陋不是刺眼的语法,而是不得不使用错误的概念来构建程序。Perl 可能看起来像一个卡通人物在咒骂,但在某些情况下,它在概念上超越了 Python。
至少目前是这样。当然,这两种语言都在不断发展。但它们与 Ruby(以及 Icon、Joy、J、Lisp 和 Smalltalk)一样,都是由真正关心编程的人创造和使用的。而这些人往往是做得最好的人。