Java的外衣
2001年4月
这篇文章源于我与几位程序员关于Java为何气味可疑的对话。这不是对Java的批判!这是黑客雷达的一个案例研究。
随着时间的推移,黑客对好(和坏)技术培养出了一种嗅觉。我想试着写下是什么让Java对我来说似乎可疑,这可能会很有趣。
一些读过这篇文章的人认为这是试图以前所未有的方式写一些有趣的事情。其他人说我将因为看起来写我不理解的东西而陷入麻烦。所以,以防万一有任何好处,让我澄清我在这里不是在写Java(我从未使用过),而是在写黑客雷达(我对此思考很多)。
“不能凭封面判断一本书"这句格言起源于书籍用普通纸板封面出售的时代,由每个购买者根据自己的品味装订。在那个时代,你不能凭封面判断一本书。但出版业从那时起进步了:现在的出版商努力使封面成为你可以判断一本书的依据。
我花了很多时间在书店,我觉得我现在已经学会理解出版商想要告诉我关于一本书的一切,可能还有更多。我没有在书店度过的时间主要花在电脑前,我觉得我在某种程度上已经学会了通过封面来判断技术。这可能只是运气,但我已经让自己避免了一些最终被证明是真正糟糕的技术。
到目前为止,Java对我来说似乎很糟糕。我从未写过Java程序,从未看过关于它的参考书,但我有一个预感,它不会是一种非常成功的语言。我可能被证明是错的;对技术做出预测是危险的事情。但作为某种时间胶囊,就其价值而言,这就是为什么我不喜欢Java的外观:
-
它被如此热情地炒作。真正的标准不需要被推广。没有人需要推广C、Unix或HTML。真正的标准在大多数人听到它之前就已经建立了。在黑客雷达屏幕上,Perl和Java一样大,或者更大,仅仅是凭借自身的优点。
-
它的目标很低。在最初的Java白皮书中,Gosling明确表示Java的设计对习惯C的程序员来说不会太困难。它被设计成另一个C++:C加上一些从更高级语言中借来的想法。就像情景喜剧、垃圾食品或包价旅游的创造者一样,Java的设计者有意识地为不如他们聪明的人设计产品。历史上,为他人使用而设计的语言都很糟糕:Cobol、PL/I、Pascal、Ada、C++。好的语言是那些为自己的设计者设计的:C、Perl、Smalltalk、Lisp。
-
它有不可告人的动机。有人说过,如果人们只在有话要说时才写书,而不是因为想写书,世界会变得更美好。同样,我们一直听到Java的原因不是因为它对编程语言有什么要说的。我们听到Java作为Sun公司削弱微软计划的一部分。
-
没有人喜欢它。C、Perl、Python、Smalltalk和Lisp程序员都喜欢他们的语言。我从未听任何人说过他们喜欢Java。
-
人们被迫使用它。我认识的许多使用Java的人使用它是因为他们觉得必须这样做。要么是他们觉得为了获得资助必须这样做,要么是他们认为客户会想要,要么是管理层告诉他们要这样做。这些都是聪明人;如果技术好,他们会自愿使用它。
-
它有太多的厨师。最好的编程语言是由小团体开发的。Java似乎是由一个委员会管理的。如果它最终成为一种好语言,这将是历史上委员会第一次设计出好语言。
-
它是官僚主义的。据我对Java的一点点了解,似乎有很多做事的协议。真正的好语言不是那样的。它们让你做你想做的事,然后让路。
-
它是伪时髦的。Sun现在假装Java是一种像Perl或Python那样的草根、开源语言努力。这个恰好由一家大公司控制。所以这种语言很可能具有与大公司生产的任何东西相同的单调笨重。
-
它是为大型组织设计的。大型组织的目标与黑客不同。他们想要适合大型平庸程序员团队使用的语言——具有像U-Haul卡车中的限速器那样的功能,防止傻瓜造成太大损害。黑客不喜欢对他们居高临下的语言。黑客只想要力量。历史上,为大型组织设计的语言(PL/I、Ada)都失败了,而黑客语言(C、Perl)获胜了。原因:今天的青少年黑客是明天的CTO。
-
错误的人喜欢它。我最钦佩的程序员整体上没有被Java迷住。谁喜欢Java?西装革履的人,不知道一种语言与另一种的区别,但知道他们在媒体上不断听到Java;大公司的程序员,惊讶地发现还有比C++更好的东西;以及即插即用的本科生,准备好喜欢任何可能让他们找到工作的东西(这会考试吗?)。这些人的意见随风而变。
-
它的爸爸陷入困境。Sun的商业模式正受到两方面的侵蚀。与台式机相同类型的廉价Intel处理器现在对服务器来说已经足够快了。而且FreeBSD似乎至少与Solaris一样适合作为服务器操作系统。Sun的广告暗示你需要Sun服务器用于工业级应用程序。如果这是真的,Yahoo会第一个排队购买Sun;但当我在那里工作时,服务器都是运行FreeBSD的Intel盒子。这对Sun的未来是个坏兆头。如果Sun遇到麻烦,他们可能会把Java拖下水。
-
国防部喜欢它。国防部鼓励开发者使用Java。这在我看来是最 damning 的迹象。国防部的国防工作做得很好(虽然昂贵),但他们喜欢计划、程序和协议。他们的文化与黑客文化相反;在软件问题上他们往往会下错注。国防部最后一次真正喜欢一种编程语言是Ada。
请记住,这不是对Java的批判,而是对其外衣的批判。我对Java的了解还不足以喜欢或不喜欢它。这只是为什么我不觉得急于学习它的解释。
在尝试用一种语言编写程序之前就将其 dismissed 可能看起来 cavalier。但这是所有程序员都必须做的事情。外面的技术太多了,无法全部学习。你必须学会通过外部迹象来判断哪些值得你花时间。我同样 cavalier 地 dismissed 了Cobol、Ada、Visual Basic、IBM AS400、VRML、ISO 9000、SET协议、VMS、Novell Netware和CORBA等。它们只是气味不对。
在Java的情况下我可能错了。可能一种由一家大公司推广以削弱另一家大公司、由委员会为"主流"受众设计、被炒作到天际、国防部喜欢的语言,碰巧是一种我会喜欢编程的干净、美丽、强大的语言。可能,但这似乎非常不可能。
Trevor Re: Java’s Cover | Berners-Lee Re: Java | Being Popular | Sun Internal Memo | 2005: BusinessWeek Agrees
日语翻译