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 旨在破坏 Microsoft 的计划的一部分。
-
没有人喜欢它。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。在我看来,这似乎是最具破坏性的迹象。国防部在保卫国家方面做得很好(尽管代价高昂),但他们喜欢计划、程序和协议。他们的文化与黑客文化相反;在软件问题上,他们往往会赌错。上次国防部真正喜欢一种编程语言时,它是 Ada。
请记住,这不是对 Java 的批评,而是对其封面的批评。我对 Java 的了解不够,无法喜欢或不喜欢它。这只是解释了为什么我发现自己并不渴望学习它。
在你甚至没有尝试用它编写程序之前就驳斥一种语言,这似乎很轻率。但这是所有程序员都必须做的事情。有太多的技术需要学习。你必须学会通过外在迹象来判断哪些值得你花时间。我也同样轻率地驳斥了 Cobol、Ada、Visual Basic、IBM AS400、VRML、ISO 9000、SET 协议、VMS、Novell Netware 和 CORBA 等。它们只是闻起来不对劲。
可能在 Java 的情况下我错了。可能一种由一家大公司推广以破坏另一家公司,由一个委员会为“主流”受众设计,被炒作到天上的,并且受到国防部喜爱的语言,碰巧是一种干净、漂亮、强大的语言,我会喜欢用它编程。这有可能,但似乎不太可能。