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