天天看點

利用 GitHub 統計分析程式設計語言發展趨勢

Donnie Berkholz 分析了 GitHub 的資料,試圖通過 GitHub 建立代碼倉庫的比例,分析程式設計語言的熱度:

利用 GitHub 統計分析程式設計語言發展趨勢

說明

關于這張圖,有幾點需要說明的:

  • 隻統計新項目,不包括fork。
  • 包括了 2008-2013 年期間在 GitHub 位居前 10 的語言(不包括編輯器配置語言)。
  • GitHub 最早主要是 Rails 社群在用。
  • 2009年,Perl 暴漲,這是因為 GitPAN 項目把所有的 CPAN 子產品都導入了 GitHub。
  • GitHub 的語言檢測是根據代碼的行數。是以一個項目如果将大量的 JavaScript 庫拷貝進去的話,可能會被誤認為是 JavaScript 項目。
  • 這裡顯示的是百分比,而不是數量。是以下降的曲線并不意味着更少的新項目,而是意味着其他語言的增長更快。

趨勢

下面我們就每個語言單獨給出統計圖,以便更清楚地顯示單個語言的趨勢:

利用 GitHub 統計分析程式設計語言發展趨勢

從這些曲線中,我們可以看到這些趨勢:

  • 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 送出趨勢:

利用 GitHub 統計分析程式設計語言發展趨勢

這些圖形和根據新項目統計的結果相當接近。Ruby、Python、C++ 的峰值應當歸功于 GitHub 早期的一些超級流行的項目,當時的 GitHub 上的項目總數還不大,是以統計結果會受這些明星項目的影響較大。

撇開這些不論,我們仍能看出一些趨勢(側重于和新項目分析不同的地方):

  • JavaScript 增長趨緩: JavaScript 一直在增長,但是增速有所放緩,趨向于穩定在 25% 左右的比例。從建立項目的統計中也能看出這一點,但是在這裡更明顯。
  • Ruby 在 2009 年後顯著下降: 這應該可以從上文所說的 GitHub 走向主流得到解釋。
  • Java 和 PHP 經過增長之後已趨于穩定: 經過增長之後,兩者的比例都穩定在 10% 左右。

使用者

如果我們統計使用某語言為主要語言的新使用者數,又會有什麼結果呢?從這個角度統計,更能反映每個使用者的偏好,而不會偏向建立大量倉庫、送出大量 issue 的活躍使用者。

利用 GitHub 統計分析程式設計語言發展趨勢

從上圖中我們可以看到一些趨勢:

  • 長期而言,幾乎所有語言都呈現下降趨勢: 除了 Java 和 CSS 之外,大部分語言都呈現下降趨勢。可能的願意是:使用非主流語言的使用者越來越多,有些淺度使用者不送出代碼,無法判斷他們使用的語言,而随着 GitHub 日趨主流,這兩類使用者越來越多。
  • 就長期而言,Java呈現增長态勢: 這是唯一從長期來看呈現增長态勢的語言,這點意味着 GitHub 被越來越多的企業使用者使用。

比較

将以上的統計結果合并在一起,更友善對比,也更容易排除偶然因素的影響:

利用 GitHub 統計分析程式設計語言發展趨勢

從中很明顯的可以看出,GitHub 上主流的語言隻有五種: JavaScript、Ruby、Java、PHP 和 Python。此外,CSS 有擠入主流的趨勢,C 和 C++ 勉強可以算主流。除此以外的語言所占比例都很低,即使

增速極其迅猛的Go

目前而言仍然不算主流,還要看未來一兩年的發展。

碎片化

接下來我們統計上述12種語言之外的語言,結果發現,無論是新增使用者數、新項目數,還是 issue 數,總體而言都有明顯的增長。

利用 GitHub 統計分析程式設計語言發展趨勢

注意,新使用者的增速相比其他兩者要高很多,這很可能是因為上面提到的淺度使用者增長迅速的原因。

總體來說,程式設計語言日趨碎片化,GitHub 則日趨主流。