利用 GitHub 統計分析編程語言發展趨勢
英文原文: GitHub language trends and the fragmenting landscape
Donnie Berkholz 分析了 GitHub 的數據,試圖通過 GitHub 新建代碼倉庫的比例,分析編程語言的熱度:
說明
關于這張圖,有幾點需要說明的:
- 只統計新項目,不包括 fork。
- 包括了 2008-2013 年期間在 GitHub 位居前 10 的語言(不包括編輯器配置語言)。
- GitHub 最早主要是 Rails 社區在用。
- 2009 年,Perl 暴漲,這是因為 GitPAN 項目把所有的 CPAN 模塊都導入了 GitHub。
- GitHub 的語言檢測是根據代碼的行數。所以一個項目如果將大量的 JavaScript 庫拷貝進去的話,可能會被誤認為是 JavaScript 項目。
- 這里顯示的是百分比,而不是數量。所以下降的曲線并不意味著更少的新項目,而是意味著其他語言的增長更快。
趨勢
下面我們就每個語言單獨給出統計圖,以便更清楚地顯示單個語言的趨勢:
從這些曲線中,我們可以看到這些趨勢:
- GitHub 成為主流: Ruby 曲線的下降,Java、PHP、Python 等曲線的上揚,意味著 GitHub 從 Rails 社區走向主流。
- JavaScript 的崛起: JavaScript 的增長是最明顯的趨勢。這部分歸功于 Node 的興起。當然,正如我們上面分析的,其中也包含一些誤判的倉庫。
- Windows 和 iOS 開發默默無聞: 令人驚訝的是,C# 和 Objective-C 所占比例很低,而且幾乎看不出增長。這說明這兩個社區的生態不鼓勵開源。
push
如果不從新建項目的角度來觀察,而是從 push 數目來考察,又會有什么結果呢?答案是趨勢和新建項目基本一致,只有兩處不同:Perl 在 2009 年的 push 數比例增長了 4.1%,而 Ruby 在 2008 年減少了 3.5%。
這可能是因為項目的主要開發集中在第一年,絕大多數項目 (98%) 只在創建的第 1 年有提交,然后就再也沒有修改了。以前的另一項研究表明, 87% 的項目的貢獻者不超過 5 人。由于貢獻者稀缺,因此項目很難得到長期維護。
issue
從 issue 提交的數目則可以看出使用情況。讓我們看一下各語言的 issue 提交趨勢:
這些圖形和根據新項目統計的結果相當接近。Ruby、Python、C++ 的峰值應當歸功于 GitHub 早期的一些超級流行的項目,當時的 GitHub 上的項目總數還不大,所以統計結果會受這些明星項目的影響較大。
撇開這些不論,我們仍能看出一些趨勢(側重于和新項目分析不同的地方):
- JavaScript 增長趨緩: JavaScript 一直在增長,但是增速有所放緩,趨向于穩定在 25% 左右的比例。從新建項目的統計中也能看出這一點,但是在這里更明顯。
- Ruby 在 2009 年后顯著下降: 這應該可以從上文所說的 GitHub 走向主流得到解釋。
- Java 和 PHP 經過增長之后已趨于穩定: 經過增長之后,兩者的比例都穩定在 10% 左右。
用戶
如果我們統計使用某語言為主要語言的新用戶數,又會有什么結果呢?從這個角度統計,更能反映每個用戶的偏好,而不會偏向創建大量倉庫、提交大量 issue 的活躍用戶。
從上圖中我們可以看到一些趨勢:
- 長期而言,幾乎所有語言都呈現下降趨勢: 除了 Java 和 CSS 之外,大部分語言都呈現下降趨勢。可能的愿意是:使用非主流語言的用戶越來越多,有些淺度用戶不提交代碼,無法判斷他們使用的語言,而隨著 GitHub 日趨主流,這兩類用戶越來越多。
- 就長期而言,Java 呈現增長態勢: 這是唯一從長期來看呈現增長態勢的語言,這點意味著 GitHub 被越來越多的企業用戶使用。
比較
將以上的統計結果合并在一起,更方便對比,也更容易排除偶然因素的影響:
從中很明顯的可以看出,GitHub 上主流的語言只有五種: JavaScript、Ruby、Java、PHP 和 Python。此外,CSS 有擠入主流的趨勢,C 和 C++ 勉強可以算主流。除此以外的語言所占比例都很低,即使增速極其迅猛的 Go 目前而言仍然不算主流,還要看未來一兩年的發展。
碎片化
接下來我們統計上述 12 種語言之外的語言,結果發現,無論是新增用戶數、新項目數,還是 issue 數,總體而言都有明顯的增長。
注意,新用戶的增速相比其他兩者要高很多,這很可能是因為上面提到的淺度用戶增長迅速的原因。
總體來說,編程語言日趨碎片化,GitHub 則日趨主流。
<span id="shareA4" class="fl"> </span>