JAVA 的封面
Original2001 年 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 的商业模式正在受到两方面的破坏。廉价的英特尔处理器,与台式机中使用的相同类型,现在已经足够快,可以用于服务器。而且 FreeBSD 似乎至少与 Solaris 一样适合作为服务器操作系统。Sun 的广告暗示你需要 Sun 服务器才能进行工业级强度的应用程序。如果这是真的,雅虎将是第一个购买 Sun 的公司;但当我还在那里工作的时候,服务器都是运行 FreeBSD 的英特尔盒子。这对 Sun 的未来来说是个不祥之兆。如果 Sun 陷入困境,他们可能会把 Java 拖下水。
-
国防部喜欢它。国防部正在鼓励开发人员使用 Java。在我看来,这是最令人不寒而栗的迹象。国防部在保卫国家方面做得很好(尽管很昂贵),但他们喜欢计划、程序和协议。他们的文化与黑客文化相反;在软件问题上,他们往往会押错宝。上一次国防部真正喜欢一种编程语言的时候,是 Ada。
请记住,这不是对 Java 的批评,而是对它的封面的批评。我对 Java 的了解还不够多,无法喜欢它或不喜欢它。这只是解释了为什么我发现自己并不渴望学习它。
在尝试用它编写程序之前就否定一种语言,这似乎很轻率。但这是所有程序员都必须做的事情。有太多技术需要学习。你必须学会通过外在迹象来判断哪些值得你花时间。我同样轻率地否定了 Cobol、Ada、Visual Basic、IBM AS400、VRML、ISO 9000、SET 协议、VMS、Novell Netware 和 CORBA,等等。它们闻起来就是不对劲。
在 Java 的情况下,我可能是错的。可能一种由一家大公司推广以削弱另一家公司的语言,由一个委员会为“主流”受众设计,被炒作到天际,并且受到国防部的喜爱,却恰好是一种干净、美丽、强大的语言,我会喜欢用它编程。这可能是真的,但似乎不太可能。