程式語言排名到底是哪來的?資料真的準確嗎?

2022-06-06 09:09:09 字數 3338 閱讀 4271

關於程式語言好像我們在網路上經常會見到一些排名榜,那麼這個排名到底是從**來的?準確嗎?

這個神秘的面紗來自於: tiobe 。

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

我們用 tiobe 排行榜來說話:

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

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

我們找到了程式語言排行的**,那麼,tiobe 這又是一家什麼樣的公司呢?

tiobe 公司成立於 2023年10月1日,由瑞士的公司 synspace 和一些獨立的投資人建立。tiobe是"the importance of being earnest"的縮寫,該公司主要關注於軟體質量的評估。

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

tiobe 排行榜是根據網際網路上有經驗的程式設計師、課程和第三方廠商的數量,並使用搜尋引擎(如google、bing、yahoo!)以及 wikipedia、amazon、youtube 統計出排名資料,只是反映某個程式語言的熱門程度,並不能說明一門程式語言好不好,或者一門語言所編寫的**數量多少。

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

下圖為 tiobe 某 月最新程式語言前20名:

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

明顯很不靠譜嘛~~~

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

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

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

▶ 該站點的入口頁面包含搜尋工具

▶ 查詢站點的結果包含頁面點選數的指示

▶ 結果應該在帶有清晰標籤的html中可用

▶ 具有特殊字元的語言的搜尋引擎應正確編碼

▶ 搜尋引擎應至少返回1個查詢的1個匹配項

▶ 查詢**的結果不應包含太多異常值

▶ 色情**被排除在外

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

如果用 "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視為索引的程式語言的原因。

✿  程式語言應為圖靈完備的。因此,html和xml不被視為程式語言。

✿  對於 +" programming" 格式搜尋必須在 google 上命中 5000 次點選以上。

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

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

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

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

看到這裡你是不是又學到了很多新知識呢~

如果你很想學程式設計,小編推薦我的c語言/c++程式設計學習基地【點選進入】!

都是學程式設計小夥伴們,帶你入個門還是簡簡單單啦,一起學習,一起加油~

涉及:遊戲開發、常用軟體開發、程式設計基礎知識、課程設計、黑客等等......

大資料時代的資料到底是怎麼回事?

說起大資料那就不得不說到資訊,之前的人們經常會將知識的獲得概念稱為資訊,於是資訊產業 資訊科技以及資訊化的概念出現了。那麼,資訊與資料是一回事嗎?其實兩者是不同的,非常容易混淆和困惑。舉例而言,電腦裡儲存的東西,如果能看得懂那就是資訊,但如果看不懂,那就不是資訊,而稱為資料。資料可以是大量的,但資訊...

GO語言的結構體到底是個什麼東西

前邊的內容中介紹過go語言的陣列點我直達,它只能儲存同一資料型別的資料,但再結構體中,可以定義不同資料型別的資料進行儲存,和c語言的struct有異曲同工之處。定義結構體 type info struct例項化結構體 var cheo info var 變數名 結構體名 初始化結構體 cheo.na...

Java 繼承後修改的物件資料屬性到底是誰的?

rt,我們平時在用繼承類時,常常想為什麼父類裡的成員變數,為什麼我非要覆蓋。我專心擴充套件我的東西不是更簡約嗎?class aclass bextends a void f a ad public class main 在a中 在b中 int n b.n實際使用的是super.n int n int...