Java的封面:關(guān)于程序員的嗅覺
關(guān)于譯者
感謝BOOM提供了本文翻譯。BOOM是個程序員,就職于某IT公司,有關(guān)他的更多信息請他的新浪微博:http://weibo.com/huji0624 |
譯者注:這篇文章是Paul Graham寫于2001年的一篇預(yù)言Java的文章。 |
這篇短文起源于我和幾個程序員曾經(jīng)的一次關(guān)于為什么Java不可靠的談話,這不是批評Java,這只是一次關(guān)于程序員的嗅覺的學(xué)習(xí)案例。
長時間以來,程序員們發(fā)展出了對好(或者壞的)技術(shù)的靈敏嗅覺。我想,把對我覺得Java不靠譜的原因?qū)懴聛頃羌浅S幸馑嫉氖虑椤?/p>
有些讀過這篇文章的人覺得像這種方式提出一種新觀點(diǎn)是一種有趣的嘗試.其他人覺得似乎對自己不太了解的事情妄加評論會招來麻煩。所以,以防萬一,我先澄清一下,我所寫的這些不是針對Java的(我從來沒有用過Java),而是關(guān)于程序員的嗅覺的東西(關(guān)于這方面我想過很多)。
有句老話叫“你無法根據(jù)封面看出一本書內(nèi)容(you can‘t tell a book by its cover)”,它源自于書被出售的時候,是以買主的個人喜好來裝訂封面的時代。在那個年代,你不可能通過書的封面辨別出它是哪本書。但隨后出版商們也在進(jìn)步,現(xiàn)代的出版商們讓你很容易就通過書的封面來分辨一本書。
我在書店花費(fèi)了大量的時間,我覺得到目前為止,我已經(jīng)學(xué)會了理解出版商想告訴我的關(guān)于一本書的所有事情,或許更多。在余下我沒有待在書店的時間里,我大部分時間都在電腦前,我覺得從某種程度上來說,我也學(xué)會了通過一種技術(shù)的外在面貌來評判它。有可能是運(yùn)氣的原因,我讓自己免于了幾種最終被證明很不靠譜的技術(shù)。
目前為止,我不太喜歡Java。我從來沒有寫過哪怕一行Java代碼,頂多瞟過一眼Java相關(guān)的參考書籍,但我有種預(yù)感,Java不會成為一門很成功的語言。也許最后會被證明我搞錯了;做技術(shù)預(yù)言是一件很危險的事。但從某意義上來說,把為什么我不喜歡Java的原因,作為一種時間膠囊保存起來,是值得的,以下就是這些原因:
1.它被吹得有點(diǎn)太天花亂墜了。真正的標(biāo)準(zhǔn)是不需要推廣的。沒有人會去推廣C,Unix,或是Html。一個真正的標(biāo)準(zhǔn)往往是隨著時間的推移被建立起來的,在這個過程中大多數(shù)人已經(jīng)聽說過它了。在程序員的雷達(dá)屏幕上,Perl陣營和Java差不多龐大,甚至還要大些,但它是依靠自己的長處逐步發(fā)展起來的。
2.Java的目標(biāo)太低。在最初的Java白皮書中,Gosling明確表示,Java被設(shè)計(jì)得讓程序員更容易使用,而不像C語言那樣。它被設(shè)計(jì)成了另一個C++:C加上一些從幾個更高級的語言里拿過來的思想。就像情景喜劇和垃圾食品或是旅游團(tuán)的發(fā)明者一樣,Java的設(shè)計(jì)者有意識地設(shè)計(jì)了一個供沒有他們聰明的人使用的產(chǎn)品。從歷史上來說,被設(shè)計(jì)成提供給他人使用的語言都不怎么樣: Cobol, PL/I, Pascal, Ada, C++都是這樣的。好的語言是那些設(shè)計(jì)者為自己創(chuàng)造的語言,比如C, Perl, Smalltalk, Lisp.
3.Java動機(jī)不純。有人說過,如果人們只因?yàn)樽约河行┫胝f的話而寫書,而不是為了寫書而寫書,這個世界將會更加美好。同理,我們總是對Java如雷貫耳不是因?yàn)樗氡磉_(dá)一些關(guān)于編程語言的看法。而是因?yàn)镾un把它作為對付微軟的計(jì)劃之一。
4.沒有人真正喜歡它。C, Perl, Python, Smalltalk, 和 Lisp 序員都非常喜歡他們的編程語言。我從來沒有聽人說過他喜歡Java。
5.人們是被強(qiáng)制使用Java的。我認(rèn)識的很多使用Java的人用Java寫程序因?yàn)樗麄冇X得他們不得不用Java。要么是因?yàn)樗麄冇X得他們必須用Java才能吸引到投資,要么是他們覺得顧客需要Java,或者是他們的經(jīng)理讓他們使用Java。他們都是很聰明的人;如果一門技術(shù)很好,那么人們應(yīng)該是自愿使用它的。
6.Java有太多維護(hù)人員。最好的編程語言一直以來都是被一小撥人開發(fā)出來的,但Java似乎是被一個委員會所維護(hù)的。如果Java最終被證明是一門好語言,那歷史上會首次出現(xiàn)委員會設(shè)計(jì)出了一門好語言這樣的事情。
7,官僚作風(fēng)太重。根據(jù)我所知甚少的Java知識,似乎使用Java的時候有很多的規(guī)定需要遵從。真正優(yōu)秀的編程語言不會是這樣的。它會讓你做你自己想做的事,然后摸索出一套自己的辦法。
8.太虛偽。Sun目前假裝Java是一門一如Perl,Python一樣的開源草根語言,而它只是碰巧被大公司控制。所以,Java也擁有了大公司的沉悶。
9.Java是為一些大型組織所設(shè)計(jì)的,大型組織和程序員們有著不同的目標(biāo)。他們希望一種適合于一大幫平庸的碼農(nóng)所使用的語言,這種語言的特點(diǎn)就是把愚蠢的人所犯的錯誤的破壞力減到最小,就像U-Haul卡車上的限速器一樣。程序員們不喜歡居高臨下的編程語言。程序員們只需要力量。歷史上,為大型組織所設(shè)計(jì)的語言(PL/I,Ada)在競爭中敗下陣來,程序員們的語言(C,Perl)最終贏得了勝利。所以有這么個說法:現(xiàn)在的青少年程序員,就是未來的CTO。
10.不靠譜的人才喜歡Java。基本上我欣賞的大多數(shù)程序員都不迷Java。那誰喜歡Java?那些穿著西裝的上班族,所了解的編程語言很少,但是他們經(jīng)常從各種媒體上聽說Java;還有大公司的程序員,因?yàn)樗麄儼l(fā)現(xiàn)盡然有比C++還好的東西;再有就是愣頭青的準(zhǔn)畢業(yè)生,會喜歡任何能給他帶來一份工作的東西(他們比較在乎這個東西會不會出現(xiàn)在測驗(yàn)上)。這些都是些見風(fēng)使舵的人。
11.它老爸都自身難保了.Sun的商業(yè)模式正在從兩個方面上被打壓。用在桌面電腦上同樣類型的廉價Intel處理器,現(xiàn)在用在服務(wù)器上也足夠快了。并且FreBSD作為服務(wù)器的操作系統(tǒng)似乎不比Solaris差。Sun的廣告暗示你需要使用Sun的服務(wù)器來運(yùn)行工業(yè)用的應(yīng)用程序。如果真是這樣,那么Yahoo將會是第一個排隊(duì)購買Sun服務(wù)器的公司;但我在Yahoo工作的時候,那里的服務(wù)器都是運(yùn)行著FreeBSD的Intel鐵盒子。這預(yù)示著Sun的前途不容樂觀。如果Sun遇上了麻煩,那Java也會和它一起被拖下水。
12.國防部喜歡它。國防部鼓勵開發(fā)者使用Java。這對我來說似乎是個毀滅性的信號。國防部在保衛(wèi)國家這件事上干得很好(也很貴),但它熱衷于計(jì)劃,走流程和規(guī)定。他們的文化和黑客文化是完全相反的兩個極端;在軟件問題上,他們常站錯隊(duì)。上一次DoD很喜歡的編程語言是Ada。
謹(jǐn)記,這不是一篇關(guān)于Java的評論,而是一篇關(guān)于Java所表現(xiàn)出來的外在因素的評論。我對Java的了解還沒有充分到喜歡不喜歡它。這只是關(guān)于為什么我沒有急切地想學(xué)習(xí)Java的一種解釋。
在嘗試使用一種語言寫過程序之前就不考慮接受它看起來有點(diǎn)太隨意了。但這是所有程序員不得不做的。這個世界上有太多的技術(shù),你不可能把他們都學(xué)完。你應(yīng)該學(xué)會利用一些外在的信號來評判是否值得花時間去學(xué)習(xí)。我同樣也很隨意地就沒有理會Cobol, Ada, Visual Basic, the IBM AS400, VRML, ISO 9000, the SET protocol, VMS, Novell Netware, 和 CORBA。這些技術(shù)就是讓我覺得有點(diǎn)不對頭。
有可能在這個Java的預(yù)言中,我搞錯了。它有可能成為一門由大公司為了削弱另外一家大公司而推廣,由一個委員會為主流擁護(hù)者而設(shè)計(jì),被捧得天花亂墜,并且被國防部所喜愛的編程語言,雖然如此,但是這門語言又碰巧是一門簡潔美觀而又很強(qiáng)大的語言,我超喜歡用它寫程序。這是有可能的,但是可能性非常小。