國際:Ruby、Python不能威脅Java的13個理由

最近,到處可以看到大量的文章:Java將會消失取而代之的是腳本語言或其他彙編語言。不,那種情況是不會發生的。下面是我的論據,我們先看些數據。

2008年5月的編程語言受歡迎度情況:雖然有些人並不喜歡Tiobe的基於搜索引擎的編程語言歡迎度調查,但是我認爲還是有根據、公平的。

從圖中的數據發現和“C語法”相似語言佔有較大的份額。
C (15.292) + C++ (10.484) + Java (20.176) + C# (3.963) = 49.915%
表明這四種語言佔據了近一半的市場。如果我們在這裏添加PHP ( 10.637% )(在某種程度上採用了類似的語法)結果是60.552%。

TIOBE Index Top 20 

 

因此,我們得到如下結論:
理由1 :語法是非常重要,因爲它是建立在以往的知識的基礎上。類似的語法具有相近的概念。程序員不需要費很多時間和精力學習新語法。
 
讓我們看看一組挑戰語言:
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 :大的難點是分心。程序員要學習這10種語言並且達到可以評價的水平需要付出很大的努力。況且,大部分的語言具有不同的語法和引入了不同的(有時是根本不同的)概念。

最近7年來的趨勢,我們可以看到大多數的語言流行起來。也有幾個例外,如下降的Perl ,但沒有真的是消失。有週期性的浮動,但在長遠看來,沒有什麼改變。
 
這表明,雖然各種語言在短的時間內會使程序員着迷,但它們被放回到“架子”上也相當快速。這些語言失去了現實中開發項目的機會。 
 

TIOBE Trend

原因3 :缺乏讓程序員轉換的動力。市場是相當穩定,現有的語言工作的相當好,管理者也沒有強制程序員學習新語言。
 
理由4 :挑戰語言似乎並沒有抓住時機,創造一個應用於項目中的機會。
或許跟它們發展和普及慢有關。
理由5 :挑戰語言社區沒有做好吸引程序員的工作。
 
讓我們看看現在就業市場發生了什麼事。indeed.com提供的是我使用的工具和我比較了很多語言製作了下面的表格。


Java, C, C++, C#, Python, Ruby, PHP, Scala Job Trends graph


 

理由6 :短期內沒有很大的誘因讓程序員切換到挑戰語言中,獲得技能但不太可能轉化爲收入。


那麼,我研究所有這些統計數字得到某些結論,但語言本身需要什麼特性和外部條件如何將會受歡迎?
 
原因7 :新的語言沒有對程序員的生活和項目有非常大的推進作用。
 
理由8 :沒有競爭力的應用平臺。


理由9 :所有這些新的語言沒有強大的贊助商和金錢在市場上推動他們。所有這些新語言誕生於大學和研究機構,或來自非常特殊的區域。
 
理由10 :大部分的這些語言左右徘徊,沒有果斷地登上“語言”大舞臺。
 

出於好奇心,這裏是一個名單,談到一些語言與他們的發佈日期:

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)
 

很明顯,大部分這些“新”語言錯過了成功的“列車”。
 
理由11 :“特色”是大項目的災難。
目前的大項目不曾使用過新語言,很難沒有些偏見的評價。偏見正是新語言生長的真正障礙。
 
理由12 :非自然的概念(對大多數程序員而言)提高了入門的門檻。
函數式編程使你的編碼象在解數學方程。但有多少人熱愛數學並能用它來編程呢?面嚮對象語言提供一個很大的優勢:他們讓程序員認爲有想要的模式,而不是語言或機器。
 
理由13 :沒有先進的工具,面對大量的代碼行缺乏重構程序員和開發團隊的能力。
 
Java的危險並是不來自外部。這些新的(其實他們大多是相當老)的語言沒有可能取代Java的。Java的危險來自於它具有太多的“功能”,如果想保留其他語言的一些概念和C++的垃圾回收功能需要進行轉化。 


 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章