用超 7500 萬的 GitHub 代碼倉庫實力解讀:哪門編程語言熱度最高 (轉)

轉載:開源中國

近日,有開發者在 reddit 發布了一個帖子,內容是通過對 GitHub 用戶的數據進行分析得到的編程語言排序榜。作者認為,通過計算 GitHub 上有多少人使用每種語言來對所有的編程語言進行排序會很有趣。

下面我們不妨看看這份數據源「獨特」的排行榜有哪些值得關注的東西。

首先,作者表示這次分析的數據主要來源於 GitHub Archive 和 GHTorrent。他通過分析 GitHub Archive 上 7500w+ 個不同的倉庫中超過 12.5 億次的事件(包括推送新代碼、fork、star、issue 處理等),每月匯總一次,計算了每種語言的 MAU(月活躍用戶數量),詳細的分析說明可查看:github.com/benfred/gith

先看看總體數據,截至 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

推薦閱讀:

12月份最火的10個GitHub開源項目
如何塑造一個拿的出手的 GitHub 賬號?
Github上的開源項目的價值可以用錢衡量嗎?
聊聊GITHUB上的那些小工具01——代碼質量
如何優雅的管理 github 上 star 的項目?

TAG:機器學習 | GitHub | Python |