1. 程式人生 > >程式語言排名到底是哪來的?

程式語言排名到底是哪來的?

又是週末,這應該是 2019 年度最後一個週末了,各位同學週末快樂。

PS:小編沒斷更~~~~

一到年終,總歸會有各種各樣的排名,和程式設計相關度比較大的莫過於程式語言排名。

好像我們在網路上經常會見到程式語言排名,那麼這個排名到底是從哪裡來的?

神祕的面紗就要揭曉了,這個排名來自於: TIOBE 。

它的官網的地址是:https://www.tiobe.com/tiobe-index/

接著小編要證實一個可能會捱打的問題,PHP 到底是不是全球最好的語言?

我們用 TIOBE 排行榜來說話:

上圖是從 2002 年至 2019 年的前十大程式語言的排名情況。

可以明顯的看到,自從 2010 年前後, PHP 的排名呈現一個總體下降的趨勢,並且在歷史上從來沒有成為過第一。在 2010 之前,最巔峰的時期也不過第 3 、4 名的樣子。

我們找到了程式語言排行的來源,那麼,TIOBE 這又是一傢什麼樣的公司呢?

TIOBE 公司成立於 2000年10月1日,由瑞士的公司 Synspace 和一些獨立的投資人建立。TIOBE是"The Importance Of Being Earnest"的縮寫,該公司主要關注於軟體質量的評估。

TIOBE 程式設計語言指數是由該公司推出並進行維護的,這個指數將程式設計語言以排名列表的形式提供出來,並且每個月更新一次,用來表示程式設計語言的流行度。

TIOBE 排行榜是根據網際網路上有經驗的程式設計師、課程和第三方廠商的數量,並使用搜索引擎(如Google、Bing、Yahoo!)以及 Wikipedia、Amazon、YouTube 統計出排名資料,只是反映某個程式語言的熱門程度,並不能說明一門程式語言好不好,或者一門語言所編寫的程式碼數量多少。

該指數可以用來檢閱開發者的程式設計技能能否跟上趨勢,或是否有必要作出戰略改變,以及什麼程式語言是應該及時掌握的。觀察認為,該指數反應的雖並非當前最流行或應用最廣的語言,但對世界範圍內開發語言的走勢仍具有重要參考意義。

下圖為 TIOBE 12 月最新程式語言前20名:

那麼 TIOBE 是如何來給這些程式語言進行排名的呢?難道是做抽樣調查?站在張江或者中關村的大街上,逢人便問:小哥哥(小姐姐),你最喜歡的程式語言是什麼?

明顯很不靠譜嘛~~~

TIOBE 採用的方式是統計程式語言在主流搜尋引擎上被搜尋的次數來計算的。

簡單來講就是看看哪些程式語言被搜尋了多少次,用搜索的次數來進行排名。

TIOBE 對需要統計的主流搜尋引擎也是有定義的,如下:

  • 該站點的入口頁面包含搜尋工具
  • 查詢站點的結果包含頁面點選數的指示
  • 結果應該在帶有清晰標籤的HTML中可用
  • 具有特殊字元的語言的搜尋引擎應正確編碼
  • 搜尋引擎應至少返回1個查詢的1個匹配項
  • 查詢網站的結果不應包含太多異常值
  • 色情網站被排除在外

而 TIOBE 所選擇的搜尋引擎是在滿足以上條件下還要是在 Alexa 排名最高前 25 個,具體如下:

  • Google.com: 7.69%
  • Baidu.com: 7.38%
  • Wikipedia.org: 7.08%
  • Yahoo.com: 6.77%
  • Csdn.net: 6.46%
  • Bing.com: 6.15%
  • Google.com.hk: 5.85%
  • Ebay.com: 5.54%
  • Google.co.in: 5.23%
  • Msn.com: 4.92%
  • Amazon.in: 4.62%
  • Hao123.com: 4.31%
  • Google.com.br: 4.00%
  • Google.co.jp: 3.69%
  • Google.de: 3.38%
  • Amazon.co.uk: 3.08%
  • Google.ru: 2.77%
  • Indeed.com: 2.46%
  • Google.fr: 2.15%
  • Google.it: 1.85%
  • Google.es: 1.54%
  • Google.com.tw: 1.23%
  • Freepik.com: 0.92%
  • Google.com.sg: 0.62%
  • Google.com.mx: 0.31%

具體程式語言的指數計算公式小編就簡單列舉一下,有興趣的同學可以研究下:

如果用 "hits(PL#i,SE)"表示程式語言 PL 在搜尋引擎 SE 上的指數排名為 i 的搜尋次數,n 表示搜尋引擎個數,則 PL 在前 50 名程式語言中排名評估的計算公式為:

((hits(PL,SE1)/hits(SE1) + ... + hits(PL,SEn)/hits(SEn))/n

排名的機構有了,排名的演算法有了,那麼還剩一個問題,什麼樣的語言才能夠稱得上是程式語言?

TIOBE 指數選擇程式語言的時候有 3 個要求:

  • 該語言應在 Wikipedia 上有自己的條目,並且 Wikipedia 應該明確宣告它與程式語言有關。這就是為什麼不將(Ruby on)Rails,Excel,Android,Boost,Cocoa,ASP和AJAX視為索引的程式語言的原因。
  • 程式語言應為圖靈完備(http://en.wikipedia.org/wiki/Turing_completeness)的。因此,HTML和XML不被視為程式語言。
  • 對於 +"<language> programming" 格式搜尋必須在 Google 上命中 5000 次點選以上。

非常相似的程式語言被分組在一起。當前,在計算分組的等級時會考慮單個語言的最大點選量。 TIOBE 根據以下規則對分組語言的定義進行了分組化:

除了上面介紹一些指數, TIOBE 每年還會評選出一門年度程式語言,用來表示在過去的一年中,上升的最快的程式語言,下面是一些歷年的資料,今年的年度程式語言目前還不清楚:

不過 TIOBE 能反映的只是一個程式語言的流行程度,和這個程式語言的好壞從根本上講是毫無關係的。

當然,關注 TIOBE 程式語言排行榜也是具有一定指導意義的,畢竟做為程式設計領域內唯一具有權威性的排行榜,對我們選擇程式語言時起到一個參考作用,畢竟誰也不想學一個沒有市場的程式語言。

參考

https://www.tiobe.com/tiobe-index/

https://www.cnblogs.com/ityouknow/p/12096366.html

https://www.tiobe.com/company/about/

https://www.tiobe.com/tiobe-index/programming-languages-definition/