文 / 方定宇
Java 已經贏得了 TIOBE 指標的年度程式語言大獎。這是因為 Java 在過去一年當中使用的人口增長幅度大增(+5.94%)。Java 將第二名的 Visual Basic.NET(+1.51%)與第三名 Python(+1.24%)遠遠拋在後頭。
第一眼看到這個消息最讓人驚訝的是:「一個像 Java 這麼老的程式語言居然能奪的這個獎項!」(你要知道,10 年前 Java 可是得過同一個獎項!)再者,Java 現在在企業的後端市場(Enterprise back-end market)中以及在高度成長的行動應用市場(Android)當中,都是最被常使用的程式語言。另外,Java 已經融合了其他的程式語言,像是 Lambda expression 以及 Stream。可以說,Java 的未來是璀璨明亮的。
Java 的崛起與 Objective-C 的衰敗(-5.88%)有很大的關係。蘋果公司在不久之前宣佈將用 Swift 來取代 Objective-C,這是讓 Objective-C 的排名向下掉最主要的原因。而原先大家認為 Swift 會像之前的 Objective-C 一樣受到大家的歡迎,但是結果並不如同大家預期。另外,TIOBE 的客戶並不急著將他們手上的系統轉移至 Swift。
除了 Objective-C 之外,PHP 與甲骨文(Oracle)的 PL/SQL 在 2015 年之中也分別下降了 1.08% 與 1.00%。另外最讓人感到有趣的變化是:Groovy(自 82 名至 17 名)、Erlang(自 89 名上升至 35 名)、Haskell(自 96 名上升至 39 名)
以及 Rust(自 126 名上升至 47),另外 Go、Hack 以及 Clojure 也很有機會進入指標當中的前 50 名。
所以,2016 年有什麼樣子的願景呢? Java、PHP、JavaScript 以及 Swift 最有可能成為 2016 年的前十名贏家。另外,Scala 也許會繼續上升至前 20 名的位置,而 Rust、Clojure、Juila 以及 TypeScript 在 2016 年也會得到較為合理的排名位置。
TIOBE 的程式語言社群指標能夠顯現出一個程式語言的受歡迎程度。TIOBE 指標會每個月更新一次,而排名是基於那些來自四面八方、富有經驗的工程師、相關課程以及第三方廠商的使用數量。一些被大家所熟知的搜尋引擎像是 Google、Bing、Yahoo!、Wikipedia、Amazon、YouTube 以及百度也會被拿來計算排名比重。很重要的一點是,TIOBE 指標並不是要看哪些程式語言是最好的,也不是要看哪些程式語言被寫了最多行。
大家可以從這些指標中來確認程式編寫技巧是否有與時俱進,或是在建立一套全新的軟體系統時決定要採用哪套程式語言來編寫。如果有興趣的話不妨了解一下 TIOBE 指標的定義。
- 其他的程式語言:
第 21~50 名的程式語言被列在下面的這張表中。這張簡略的表格是採用非官方公佈的形式呈現,因為很有可能在編排上遺漏了某些程式語言。如果你知道有程式語言讓你非常驚艷而沒有列在上面的話,請讓 TIOBE 知道。另外,也請參閱所有 TIOBE 所提到程式語言的相關概述。
- 第 51~100 名的程式語言:
下面所列出來的是第 51~100 名的程式語言,僅依照字母順序列出。
ABC, APL, AutoLISP, BBC BASIC, bc, Bourne shell, C shell, CFML, CL (OS/400), Clojure, Common Lisp, cT, Elixir, Emacs Lisp, EXEC, Forth, Go, Hack, Icon, IDL, Inform, INTERCAL, Io, J, J#, Julia, Korn shell, Mathematica, Mercury, Modula-2, MQL4, MS-DOS batch, NATURAL, NXT-G, OCaml, OpenCL, OpenEdge ABL, Oz, PL/I, PowerShell, Programming Without Coding Technology, Pure Data, Q, Smalltalk, Standard ML, Stata, Tcl, thinBasic, Verilog, VHDL。
- 古早時候的歷史排名:
讓我們來看看前十名的程式語言在很久很久前的表現吧!
下面的是最常見的變更及程序錯誤需求。
- 除了“<language> programming”,“programming with <language>”、“<language> development”以及“<language> coding”應該被嘗試看看。
- 加入除了英文以外的自然語言查詢功能。這個想法來自於中文搜尋引擎百度。雖然現在僅實現了部分的功能,但是完整的自然語言查詢功能在接下來的幾個月內將被完成。
- 將那些被退件過的搜尋詞彙列成一張表單。這將會使得重複詢問 Rails、JQuery 以及 JSP 等等程式語言的相同問題的郵件減少許多。
- 經常被詢問的問題(FAQ)
Q:我是否能夠在我的部落格 / 報告 / 出版品當中提到 TIOBE 指標呢?A:可以的。但是必須在後面加註這些資料的來源引用自tiobe.com。
Q:我如何能夠提名一個新的程式語言讓它被列入 TIOBE 指標裡面呢?
A:如果您所提到的程式語言符合下列標準(具有圖靈完備性以及在維基百科全書上擁有自己的項目且明確指出該條列項目是一種程式語言),並且具備一定的普及程度(用“+<language>programming”在 Google 搜尋結果中有超過 5000 個結果),請與我們聯繫。
Q:是否能夠索取完整的 TIOBE 指標的 Data set 呢?
A:為了獲得 TIOBE 指標所需的數據,同時持續的讓 TIOBE 指標不斷更新,如果需要完整的 Data set,組織將收取 5,000 美金的手續費。Data set 自 2001 年持續的運作到現在。它在剛開始的時候僅支援 25 種程式語言,但是到現在已經支援超過 150 種。如果想要知道更多相關的訊息請與 TIOBE 的業務聯繫
Q:為什麼 TIOBE 指標選擇使用最大值來作為一個群組的計算、排名?為什麼不使用總和呢?
A:你可以嘗試兩種運算方式,但其實兩種都是錯誤的。如果你選擇了總和,那們你將會到兩次的交集(intersection)。如果你選擇了最大值,那麼你將會遺漏了之間的差值(difference)。要選擇哪一個方式較為恰當呢?假設有人在原始的程式語言之中參雜進了 10% 的搜尋詞彙,如果你選擇了最大值,這並不會改變任何東西。如果你選擇了總和,那麼計算排名的部分會上升 10%。由此看來,如果採用總和的話,某些使用艱深難懂的語言會因此得到一些多餘的獎勵。正因為如此,我們選擇了最大值的計算方式。
一個較佳且同時能夠解決這麼問題的方式當然是選擇加總,並扣除在這之中的交集(intersection)部分。但是這樣最將會使得需要額外執行的查詢次數暴增。假設有個程式語言在一個群組內有 15 個詞,那麼你將會需要執行 32,768 次的查詢(所有交集組合的次數)。因此,這似乎是不大可能這樣做的…
Q:Java 在 2004 年的 4 月發了什麼事?TIOBE 有改變指標的計算方式嗎?
A:在那個時候 TIOBE 指標並沒有更改任何計算方式,是 Google 在當時更改了他們的搜尋方法。結果,像是 Java 以及 C++ 等一些程式語言在相關的計算排名上大幅下滑。為了防止未來還有可能發生類似的事情,並同時期望降低這種衝擊,我們在發生這種事情的幾個月內多加入了兩個搜尋引擎(MSN 以及 Yahoo)。
Q:為什麼 YouTube 在 TIOBE 指標當中也被視作一個搜尋引擎呢?
A:最剛開始,YouTube 在所有相關的指標排名上都小於 10%,所以對於 TIOBE 指標很難有任何影響。但其實 YouTube 曾因為一些實驗的關係而被加入到指標計算當中。它最終被 TIOBE 指標接受的原因是因為在 Alexa 上 YouTube 有非常高的排名。另外,YouTube 是個新興的平台(可將 YouTube 視作一個程式語言的流行 / 普及程度指標),同時在 YouTube 上有相當多關於程式編寫技巧、程式語言簡介以及相關的課程、演講。
(資料來源:TIOBE SOFTWARE,TIOBE Index for January 2016,未經授權不得轉載;首圖來源:haslo)