PG Paul Graham 文集
100%
Part 5 · 早期文章 Early Essays

Java的伪装

2001年4月

本文源于我与几位程序员同行关于Java为何令人起疑的讨论。这并非对Java的批评!而是对黑客直觉的一次案例研究。

随着时间推移,黑客会培养出对技术优劣的敏锐嗅觉。我觉得尝试写下Java为何令我心生疑窦,或许会很有趣。

读过此文的人中,有人认为这是一次有趣的尝试,触及了前人未曾书写过的主题。另一些人则说,我这样写那些自己似乎并不了解的东西,会惹上麻烦。因此,以防万一,让我澄清一下:我在此书写的并非Java(我从未使用过它),而是黑客的直觉(对此我思考良多)。

“人不可貌相”这句格言源于书籍以朴素纸板封面出售的时代,由每位购买者根据个人品味装订。那时,你确实无法凭封面判断一本书。但出版业此后已进步:如今的出版商努力让封面成为你能据以判断一本书的依据。

我花大量时间在书店里,觉得自己如今已能理解出版商想通过封面传达的一切,或许还有几分言外之意。那些不在书店的时光,我大多消磨在电脑前,我同样感到自己某种程度上也学会了以貌取“技术”。也许是运气使然,但这一直觉让我避开了一些后来被证明糟糕透顶的技术。

迄今为止,Java在我看来就像个糟糕货。我从未写过Java程序,最多只是翻过几眼参考书,但我有种预感,它不会成为一门非常成功的语言。我可能判断错误;预测技术是件危险的事。但姑且言之,作为某种时间胶囊,以下是我为何不喜欢Java表象的原因:

  1. 它被炒作得太过用力。真正的标准无需推广。没人需要去推广C语言、Unix或HTML。一个真正的标准往往在大多数人听说之前就已确立。在黑客的直觉屏幕上,Perl与Java一样大,甚至更大,仅凭自身的实力。

  2. 它目标定得低。在最初的Java白皮书中,高斯林明确表示Java设计时不想让习惯于C语言的程序员觉得太难。它被设计成另一个C++:即C语言加上一些从更高级语言中借鉴的想法。就像情景喜剧、垃圾食品或套餐游的设计者一样,Java的设计者有意为不如他们聪明的人设计产品。历史上,为他人使用而设计的语言都很糟糕:Cobol、PL/I、Pascal、Ada、C++。好的语言都是为设计者自己而设计的:C、Perl、Smalltalk、Lisp。

  3. 它别有用心。有人曾说过,如果人们只因有话要说而写书,而非因为想写本书,世界会变得更好。同样,我们总是听到Java的消息,并非因为它对编程语言有何高见。我们听到Java,是因为它是Sun公司打击微软计划的一部分。

  4. 没有人热爱它。C、Perl、Python、Smalltalk和Lisp的程序员都热爱他们的语言。我从未听任何人说他们热爱Java。

  5. 人们被迫使用它。我认识的很多用Java的人都是因为觉得不得不这么做。要么是为获得融资必须如此,要么是认为客户想要,要么是管理层要求。这些都是聪明人;如果这门技术真的好,他们会主动使用的。

  6. 厨子太多。最好的编程语言都是由小团队开发的。Java似乎由一个委员会把持。如果它最终成为一门好语言,那将是历史上第一次由委员会设计出好语言。

  7. 它繁文缛节。就我对Java的一点点了解,做任何事似乎都有大量规程。真正优秀的语言不是这样的。它们让你随心所欲,然后让开道。

  8. 它假装草根。Sun现在假装Java像Perl或Python一样是草根的、开源的语言项目。只不过这个碰巧由一家巨型公司控制。因此,这门语言很可能带有大公司出品的任何东西都有的那种沉闷笨重感。

  9. 它为大型组织设计。大型组织与黑客的目标不同。他们想要的语言被(认为)适合由平庸程序员组成的大团队使用——这种语言具备某些特性,如同U-Haul卡车上的限速器,防止傻瓜造成太大破坏。黑客不喜欢居高临下对他们说话的语言。黑客只想要力量。历史上,为大型组织设计的语言(PL/I、Ada)都失败了,而黑客语言(C、Perl)赢了。原因在于:今天的少年黑客就是明天的首席技术官。

  10. 喜欢它的人不对。我最钦佩的程序员,总体而言,并没有被Java吸引。谁喜欢Java呢?西装革履的管理层,他们分不清语言之间的区别,只知道媒体上总在说Java;大公司的程序员,他们惊讶地发现居然有比C++更好的东西;还有只求混日子的本科生,他们随时准备喜欢任何可能帮他们找到工作的东西(这考试会考吗?)。这些人的观点随风摇摆。

  11. 它的靠山处境艰难。Sun的商业模式正受到两面夹击。廉价的英特尔处理器,与台式机中使用的同类,如今在服务器方面已经绰绰有余。而FreeBSD作为服务器操作系统至少与Solaris一样好。Sun的广告暗示你需要Sun服务器才能运行企业级强度应用。如果这是真的,Yahoo会第一个排队购买Sun服务器;但我在那里工作时,服务器全是运行FreeBSD的英特尔机器。这对Sun的未来不是好兆头。如果Sun陷入困境,他们可能把Java一起拖下水。

  12. 国防部喜欢它。国防部正鼓励开发者使用Java。这在我看来是最具毁灭性的信号。国防部保卫国家做得很好(虽然成本高昂),但他们对计划、流程和协议情有独钟。他们的文化与黑客文化截然相反;在软件问题上,他们往往押错宝。上一次国防部真正喜欢一门编程语言时,那是Ada。

请记住,这不是对Java的批评,而是对其表象的批评。我对Java的了解不足以让我喜欢或讨厌它。这只是在解释为什么我并不急于学习它。

在甚至没试过用一门语言写程序之前就将其否决,似乎显得傲慢。但这正是所有程序员都必须做的事。技术太多,无法全部学习。你必须学会从外在迹象判断什么值得你花时间。我也同样武断地否决过Cobol、Ada、Visual Basic、IBM AS400、VRML、ISO 9000、SET协议、VMS、Novell Netware和CORBA等等。它们就是闻着不对劲。

也许在Java这件事上我错了。也许一门由一家大公司为推动来打压另一家公司的语言,由委员会为“主流”受众设计,被天花乱坠地炒作,又深受国防部青睐的语言,碰巧是一门干净、优美、强大,让我乐意在其中编程的语言。也许如此,但这看起来极不可能。