最近,到處可以看到大量的文章:Java將會(huì)消失取而代之的是腳本語言或其他匯編語言。不,那種情況是不會(huì)發(fā)生的。下面是我的論據(jù),我們先看些數(shù)據(jù)。
2008年5月的編程語言受歡迎度情況:雖然有些人并不喜歡Tiobe的基于搜索引擎的編程語言歡迎度調(diào)查,但是我認(rèn)為還是有根據(jù)、公平的。
從圖中的數(shù)據(jù)發(fā)現(xiàn)和“C語法”相似語言占有較大的份額。
C (15.292) + C++ (10.484) + Java (20.176) + C# (3.963) = 49.915%
表明這四種語言占據(jù)了近一半的市場(chǎng)。如果我們?cè)谶@里添加PHP ( 10.637% )(在某種程度上采用了類似的語法)結(jié)果是60.552%。

因此,我們得到如下結(jié)論:
理由1 :語法是非常重要,因?yàn)樗墙⒃谝酝闹R(shí)的基礎(chǔ)上。類似的語法具有相近的概念。程序員不需要費(fèi)很多時(shí)間和精力學(xué)習(xí)新語法。
讓我們看看一組挑戰(zhàn)語言:
Python (4.613) + Ruby (2.851) + Lisp/Scheme (0.449) + Lua (0.393) + SmallTalk (0.138) +
Haskell (0.137) + Groovy (0.131) + Erlang (0.110) + Caml (0.090) + Scala (0.073) = 8.985%
上面10種語言的總比例比VisualBasic(10.782%)的還少。

原因2 :大的難點(diǎn)是分心。程序員要學(xué)習(xí)這10種語言并且達(dá)到可以評(píng)價(jià)的水平需要付出很大的努力。況且,大部分的語言具有不同的語法和引入了不同的(有時(shí)是根本不同的)概念。
最近7年來的趨勢(shì),我們可以看到大多數(shù)的語言流行起來。也有幾個(gè)例外,如下降的Perl ,但沒有真的是消失。有周期性的浮動(dòng),但在長遠(yuǎn)看來,沒有什么改變。
這表明,雖然各種語言在短的時(shí)間內(nèi)會(huì)使程序員著迷,但它們被放回到“架子”上也相當(dāng)快速。這些語言失去了現(xiàn)實(shí)中開發(fā)項(xiàng)目的機(jī)會(huì)。

原因3 :缺乏讓程序員轉(zhuǎn)換的動(dòng)力。市場(chǎng)是相當(dāng)穩(wěn)定,現(xiàn)有的語言工作的相當(dāng)好,管理者也沒有強(qiáng)制程序員學(xué)習(xí)新語言。
理由4 :挑戰(zhàn)語言似乎并沒有抓住時(shí)機(jī),創(chuàng)造一個(gè)應(yīng)用于項(xiàng)目中的機(jī)會(huì)。或許跟它們發(fā)展和普及慢有關(guān)。
理由5 :挑戰(zhàn)語言社區(qū)沒有做好吸引程序員的工作。
讓我們看看現(xiàn)在就業(yè)市場(chǎng)發(fā)生了什么事。indeed.com提供的是我使用的工具和我比較了很多語言制作了下面的表格。

理由6 :短期內(nèi)沒有很大的誘因讓程序員切換到挑戰(zhàn)語言中,獲得技能但不太可能轉(zhuǎn)化為收入。
那么,我研究所有這些統(tǒng)計(jì)數(shù)字得到某些結(jié)論,但語言本身需要什么特性和外部條件如何將會(huì)受歡迎?
原因7 :新的語言沒有對(duì)程序員的生活和項(xiàng)目有非常大的推進(jìn)作用。
理由8 :沒有競(jìng)爭力的應(yīng)用平臺(tái)。
理由9 :所有這些新的語言沒有強(qiáng)大的贊助商和金錢在市場(chǎng)上推動(dòng)他們。所有這些新語言誕生于大學(xué)和研究機(jī)構(gòu),或來自非常特殊的區(qū)域。
理由10 :大部分的這些語言左右徘徊,沒有果斷地登上“語言”大舞臺(tái)。
出于好奇心,這里是一個(gè)名單,談到一些語言與他們的發(fā)布日期:
Ruby (mid 1990s), Python (1991), Lisp (1958), Scheme (1970s), Lua (1993), Smalltalk (1969-1980), Haskell (1990), Erlang (1987), Caml (1985), OCaml (1996), Groovy (2003), Scala (2003)
和成功的語言相比:
C (1972), C++ (1983), Java (1995), C# (2001), BASIC (1964), Pascal (1970), FORTRAN (1957), Ada (1983), COBOL (1959)
很明顯,大部分這些“新”語言錯(cuò)過了成功的“列車”。
理由11 :“特色”是大項(xiàng)目的災(zāi)難。目前的大項(xiàng)目不曾使用過新語言,很難沒有些偏見的評(píng)價(jià)。偏見正是新語言生長的真正障礙。
理由12 :非自然的概念(對(duì)大多數(shù)程序員而言)提高了入門的門檻。函數(shù)式編程使你的編碼象在解數(shù)學(xué)方程。但有多少人熱愛數(shù)學(xué)并能用它來編程呢?面向?qū)ο笳Z言提供一個(gè)很大的優(yōu)勢(shì):他們讓程序員認(rèn)為有想要的模式,而不是語言或機(jī)器。
理由13 :沒有先進(jìn)的工具,面對(duì)大量的代碼行缺乏重構(gòu)程序員和開發(fā)團(tuán)隊(duì)的能力。
Java的危險(xiǎn)并是不來自外部。這些新的(其實(shí)他們大多是相當(dāng)老)的語言沒有可能取代Java的。Java的危險(xiǎn)來自于它具有太多的“功能”,如果想保留其他語言的一些概念和C++的垃圾回收功能需要進(jìn)行轉(zhuǎn)化。