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 則日趨主流。