分析了 7500w+ GitHub 程式碼倉庫 哪門語言熱度最高?
近日,有開發者在 reddit 釋出了一個帖子,內容是通過對 GitHub 使用者的資料進行分析得到的程式語言排序榜。作者認為,通過計算 GitHub 上有多少人使用每種語言來對所有的程式語言進行排序會很有趣。
下面我們不妨看看這份資料來源“獨特”的排行榜有哪些值得關注的東西。
首先,作者表示這次分析的資料主要來源於 GitHub Archive 和 GHTorrent。他通過分析 GitHub Archive 上 7500w+ 個不同的倉庫中超過 12.5 億次的事件(包括推送新程式碼、fork、star、issue 處理等),每月彙總一次,計算了每種語言的 MAU(月活躍使用者數量),詳細的分析說明可
先看看總體資料,截至 2018 年 1 月 24 日,通過統計 GitHub 上活躍使用者的活動情況,對每種語言的排名結果如下(TOP 25):
整體排名十分有趣,但我們應該深入瞭解這些語言隨著時間的推移有著怎麼的演變。(資料可以追溯到 7 年前)
主流程式語言
可以看到,主流程式語言都有著相對穩定的使用者群,而且大多數也都是你意料之中的。
從追蹤的資料來看,JavaScript, Python, Java, C++ 和 C 保持這種熱度的勢頭已經超過 7 年,所以近段時間依然不會有所改變。
JavaScript 保持它的“龍頭”地位是可以解釋的,因為它基本上是所有程式設計師都需要使用的一門語言。
不過隨著時間的推移,Python 的使用者越來越多,最近已超過 Java 成為 GitHub 上第二大流行的程式語言。Python 的增長大部分似乎都來自開發者對機器學習的興趣。事實上,Python 的整體流行度在這裡可能被低估了(以後可能會更多)。
C++ 似乎也正在超越 C 的地位,而這也是有根據的,像 GCC 這種專案都已經從 C 轉換到 C++,以便使用 C++ 的一些特性。由於 C++ 基本上是 C 的超集,GCC 團隊發現使用 C++ 的有限子集可讓他們編寫更乾淨的程式碼。
2018 年要學習的程式語言
觀察這種程式語言趨勢的最好方法就是,確定具有快速增長的使用者群的新興程式語言:
明顯能看到,使用者群增長最快的語言分別有:Go,TypeScript,Kotlin 和 Rust。
作者表示,在過去的幾周裡他也一直在學習 Go 和 Typescript。他發現,對於編寫併發的伺服器端程式,Go 確實非常有用,而在使用 TypeScript 幾個星期後,自己可能再也不會樂意使用 JavaScript 了。
Kotlin 的崛起是意料之中的,Kotlin 主要用於 Android 應用程式開發,當被宣佈成為 Android 開發的官方支援語言後,看看圖中的斜率變化情況。
對於 Rust,在這裡的增長雖然比其他語言慢,但其中依然有許多令人驚歎的專案。作者推薦了兩個用 Rust 編寫的兩個專案 —— 用於 Ruby 的取樣分析器和 autodifferentiation 框架。
事實上,所有這些語言都有一個共同點,它們背後都有大公司在支援著。正如谷歌之於 Go,微軟之於 TypeScript,JetBrains 之於 Kotlin,Mozilla 之於 Rust。成功推廣一門新的語言需要不少的付出 —— 至少僅僅開發出一門優雅的語言是不夠的,還必須擴大語言背後的社群和生態系統。諸如 IDE 支援,用於常見任務的庫和軟體包、工具和文件,這些對於讓使用者使用某種語言都非常重要,而且都需要付出巨大的努力。
出現下滑趨勢的語言
在過去的 7 年裡,Ruby,PHP,Objective-C,CoffeeScript 和 Perl 在 GitHub 上的使用者比例都顯著下降。
不過值得注意的是,這些資料是以 GitHub 使用者群的百分比得出的,而 GitHub 的使用者數量正在快速增長。在過去的 7 年中,GitHub 的使用者增長已經超過了 20 倍。這意味著即使是市場份額下降的語言也可能擁有不斷增長的使用者群。
這樣來看,相比 2011 年,使用 Ruby 語言的活躍使用者數量已經超過了3倍。它的增長沒有其他語言那麼快,導致它在這個分析上的表現相對較差。
此外要注意的是,某些較新的語言似乎在蠶食舊版語言的使用者群。例如,Objective-C 使用者的下降與 Swift 的上升相對應。另外,CoffeeScript 似乎已經被 TypeScript 取代:
雖然 Objective-C 正在下滑,但整體上 iOS 開發相對穩定。同樣的,CoffeeScript 似乎已經為 TypeScript 鋪平了道路,因為它讓程式設計師習慣於將程式碼編譯成 JavaScript。
函數語言程式設計語言
作者表示,這裡的資料相對較少,排名中的干擾因素較多,他不相信隨著時間的推移,Clojure 和 Haskell 會出現這樣明顯的下滑。而 Elixir 這門語言值得大家留意,雖然未能排在前 25 名。
文中作者還對用於科學領域的語言進行了分析,詳情可檢視原文。作者還表示未來對程式語言流行度的跟蹤將會參考其他一些資料,如 TIOBE 指數、Stack Overflow 上的標籤趨勢圖、GitHub Octoverse 等。
原始碼和整體排名可在 GitHub 上檢視。
最後,reddit 帖子的回帖中,有使用者給出了自己統計的資料以進行對比參考,他統計了 reddit 上十大最受歡迎的程式語言的 subreddits 數量( subreddits 是 reddit 中的子版塊,使用者可根據自己的興趣和需要進行訂閱)
Python – 213594
JavaScript – 199592
Java – 81241
PHP – 58794
C++ – 58788
C# – 52103
Go – 39529
Ruby – 38405
Rust – 33124
C – 32351