Loading...

JAVA的封面

Original

2001年4月

这篇文章源于我与几位其他程序员的对话,讨论为什么Java让人感到可疑。这不是对Java的批评!这是对黑客雷达的案例研究。

随着时间的推移,黑客们对好的(和坏的)技术逐渐培养出一种嗅觉。我觉得写下是什么让Java在我看来可疑可能会很有趣。

一些读过此文的人认为这是一次有趣的尝试,试图写一些之前没有人写过的东西。另一些人则说我会因为看似在写我不理解的事情而惹上麻烦。因此,为了以防万一,我想澄清一下,我在这里写的不是关于Java(我从未使用过),而是关于黑客雷达(我对此思考了很多)。

“不能仅凭封面判断一本书”的谚语起源于书籍以普通纸板封面出售的时代,购买者可以根据自己的品味进行装订。在那个时代,你无法仅凭封面判断一本书。但自那时以来,出版业已经进步:现代出版商努力使封面成为你可以凭此判断一本书的东西。

我在书店花了很多时间,感觉自己现在已经学会理解出版商想告诉我关于一本书的所有信息,甚至可能更多。我没有在书店花费的时间大多是在电脑前度过的,我觉得在某种程度上,我也学会了通过封面来判断技术。这可能只是运气,但我避免了一些最终证明是糟糕技术的选择。

到目前为止,Java在我看来似乎是个糟糕的选择。我从未写过Java程序,也从未认真翻阅过关于它的参考书,但我有一种直觉,它不会是一种非常成功的语言。我可能会错,但对技术做出预测是一项危险的工作。但不管怎样,作为一种时间胶囊,这就是我不喜欢Java外观的原因:

  1. 它被过度宣传。真正的标准不需要被推广。没有人需要推广C、Unix或HTML。真正的标准在大多数人听说它之前就已经建立。在黑客雷达屏幕上,Perl和Java一样大,甚至更大,完全是凭借自身的优点。

  2. 它的目标太低。在最初的Java白皮书中,Gosling明确表示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的商业模式在两个方面受到削弱。便宜的Intel处理器,和桌面机器中使用的类型相同,现在已经足够快,可以用于服务器。而FreeBSD似乎至少与Solaris一样适合用作服务器操作系统。Sun的广告暗示你需要Sun服务器来处理工业强度的应用。如果这是真的,雅虎会是第一个排队购买Sun的;但当我在那里工作时,所有的服务器都是运行FreeBSD的Intel盒子。这对Sun的未来预示着不妙。如果Sun遇到麻烦,他们可能会把Java拖下水。

  12. 国防部喜欢它。国防部正在鼓励开发者使用Java。这在我看来是最具指控性的迹象。国防部在捍卫国家方面做得很好(尽管代价高昂),但他们喜欢计划、程序和协议。他们的文化与黑客文化正好相反;在软件问题上,他们往往会做出错误的判断。国防部上一次真正喜欢的编程语言是Ada。

请记住,这不是对Java的批评,而是对其封面的批评。我对Java了解得不够,无法喜欢或不喜欢它。这只是我不急于学习它的原因的解释。

在你甚至还没有尝试用它编写程序之前就轻视一种语言,可能看起来很随意。但这是所有程序员都必须做的事情。外面有太多技术,无法全部学习。你必须学会通过外在的迹象来判断哪些值得你花时间。我同样轻率地否定了Cobol、Ada、Visual Basic、IBM AS400、VRML、ISO 9000、SET协议、VMS、Novell Netware和CORBA等技术。它们的气味就是不对。

在Java的情况下,我可能是错的。可能一种由一家大公司推广以削弱另一家公司的语言,设计给“主流”受众的委员会,受到极大宣传,并受到国防部的喜爱,恰好是一个干净、美丽、强大的语言,我会喜欢编程。但这似乎非常不可能。