Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Java 的封面

原文:Java’s Cover
作者:Paul Graham 发表:2001-04
译者:Claude(baoyu-translate)

2001 年 4 月

本文是从我和好几位别的程序员的对话里发展出来的——我们在聊“为什么 Java 闻起来可疑“。它不是在批评 Java!它是一份关于“黑客嗅觉雷达“的案例研究。

随着时间推移,黑客会发展出对好(和坏)技术的鼻子。我觉得把“是什么让我觉得 Java 可疑“写下来,可能会有意思。

读过这篇的一些人觉得这是一次有意思的尝试——写一种以前没人写过的东西。另一些人说我会因为“看上去在写自己不懂的东西“而惹麻烦。所以——澄清一下,以防有用——我这里写的不是 Java(我从没用过),而是黑客的嗅觉雷达(我想了很多)。

“不能凭封面判断一本书“这条格言,起源于书还以朴素硬纸板封皮卖出、由每个买家按自己品味装订的年代。在那种年代里,你确实没法凭封面判断一本书。但出版业从那以后进步了——现在的出版社拼命让你能从封面认出一本书来。

我在书店里花了大量时间——感觉到现在我已经能理解出版社想通过封面告诉我的关于一本书的一切——也许还要再多一点。我没花在书店里的时间大都花在电脑前——我感觉自己在某种程度上学会了凭封面判断技术。也许只是运气好——但我替自己躲掉了几样真正的烂货技术。

至今为止,Java 在我闻来像一件烂货。我从没写过 Java 程序,对它的参考书也只是匆匆扫过——但我有一种直觉:它不会是一门很成功的语言。我可能会被打脸——做技术预测是一桩危险生意。但姑且当作一份“时间胶囊“——下面是我为什么不喜欢 Java 长的这副样子

  1. 它被太用力地炒作了。 真正的标准不需要被推广。没人需要去推广 C,或者 Unix,或者 HTML。真正的标准在多数人听说它时,往往已经是事实标准。在黑客的雷达屏上,Perl 的体量和 Java 一样大、甚至更大——纯靠它自己的实力

  2. 它瞄得低。 Gosling(Java 之父 James Gosling)在最初的 Java 白皮书里就明确说——Java 是被设计成“对习惯了 C 的程序员而言不要太难“。它被设计成另一个 C++:C 加上一些从更先进语言里取来的想法。就像情景喜剧、垃圾食品、跟团游的制作者——Java 的设计者有意识地在为“不如他们聪明的人“设计产品。从历史上看,为别人设计的语言一直都很糟:Cobol、PL/I、Pascal、Ada、C++。好语言一直是为它们的创造者自己而设计的:C、Perl、Smalltalk、Lisp。

  3. 它别有用心。 有人说过——如果世上的人只在“有话要说“时才写书、而不是在“想出本书“时才写书,世界会更好。同样,我们整天能听到 Java,不是因为它对编程语言有什么话要说——我们听到 Java,是 Sun 削弱 Microsoft 计划的一部分。

  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)赢了。原因:今天的少年黑客就是明天的 CTO

  10. 错的人喜欢它。 我最佩服的程序员,总体上都没被 Java 吸引。那谁喜欢 Java?——“西装人”——他们一种语言和另一种分不清,但知道自己在媒体上不停听到 Java;大公司里的程序员——他们震惊地发现“原来还有比 C++ 更好的东西“;只会套公式硬算的本科生——他们随时准备喜欢任何能让他们找到工作的东西(“这会考吗?”)。这些人的意见跟着风向跑

  11. 它老爸正在难关里。 Sun 的商业模型在两条战线上正被掏空。便宜的 Intel 处理器——和桌面机里用的同款——现在做服务器已经绰绰有余FreeBSD 做服务器 OS 至少和 Solaris 一样好。Sun 的广告暗示——做工业级应用你需要 Sun 服务器。如果这是真的,雅虎本该排在第一位去买 Sun——可我在那儿工作时,服务器全是跑 FreeBSD 的 Intel 主机。这对 Sun 的未来不是好兆头。如果 Sun 出事,他们可能把 Java 一起拉下水

  12. DoD(美国国防部 Department of Defense)喜欢它。 DoD 在鼓励开发者用 Java。这在我看来是所有信号里最致命的一个。DoD 防卫国家的活做得不错(虽然贵),但他们爱的是计划、流程和协议——他们的文化和黑客文化正相反——在软件问题上他们倾向于赌错上一次 DoD 真喜欢一门编程语言,那是 Ada

记住——这不是对 Java 的批评——而是对它的封面的批评。我不够了解 Java 到能喜欢或不喜欢它的程度。这只是一份解释——为什么我不觉得自己有兴趣去学它

不试着用一门语言写程序就先把它毙掉——听起来似乎太草率了。但这是每个程序员都得做的事。可学的技术太多,学不完。你必须学会通过外在迹象判断哪些值得花你的时间。我同样草率地毙掉过 Cobol、Ada、Visual Basic、IBM AS400、VRML、ISO 9000、SET 协议、VMS、Novell Netware、CORBA——它们就是闻起来不对

也许在 Java 这件事上我看错了。也许——一门由一家巨型公司为打压另一家巨型公司而推、由一个委员会为“主流“听众设计、被吹到天上、又被 DoD 钟爱的语言——碰巧是一门干净、漂亮、强大、我会喜欢用来编程的语言。也许吧——但似乎非常不可能