利用 GitHub 统计分析编程语言发展趋势

jopen 10年前

英文原文: GitHub language trends and the fragmenting landscape

        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 则日趋主流。

        原始数据