Featured image of post Java的包装

Java的包装

从黑客视角分析Java语言的设计理念和商业动机

📚 返回 Paul Graham 文章目录

Java的包装

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

  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的情况下,我可能是错的。一个由一家大公司推广来削弱另一家公司的语言,由委员会为"主流"受众设计,被大肆宣传,受到国防部青睐,却恰好是一个干净、美丽、强大的语言,我会喜欢用它编程。这有可能,但看起来非常不可能。

英文版:paulgraham.com/javacover.html|中文版:HiJiangChuan.com/paulgraham/007-javas-cover

📚 返回 Paul Graham 文章目录

更新记录: