我们最近讨论过,那些被世界银行定义为高收入水平的发达国家,在选择使用什么类型的技术方面,和世界上的其他地方往往有着较大的区别。这类区别中,差异最大的例子之一,就是 Python 编程语言。如果只统计高收入国家的数据,这几年间 Python 的增长量远超过诸如 StackOverflow 趋势工具中显示的全球软件开发工具的增长情况。
今天,我们将深入挖掘一下近五年里 Python 编程语言爆炸性增长的细节数据,主要以高收入国家用户产生的 StackOverflow 流量为指标。当然,我们很难精确定义像“增长速度最快”这样的说法,但我们还是找到了 Python 是近年来增长速度最快的主要编程语言的决定性证据。
除非特别表明,本文以下讨论的所有数据均仅统计高收入国家范围内;这些流量主要来自比如美国、英国、德国、加拿大等发达国家,占了 StackOverflow 总访问量的约 64%;其他一些国家,比如印度、巴西、俄罗斯和中国当然也为全球软件开发生态系统做出了巨大的贡献,限于篇幅本文对此不再详细讨论,但我们也能看到, Python 在这些国家中也表现出增长的趋势。
这里要先强调一点,某种语言的用户数量并不能用于衡量某个语言的质量:我们只是单纯描述开发者使用编程语言的情况,并没有对此做出任何评判。
从 StackOverflow 趋势工具上,我们能看到近几年 Python 的增长势头一直非常迅猛。但如果光考虑高收入国家的情况又如何呢?我们的统计口径是每个问题的阅读量,而不是回答数量——虽然二者结果类似,但阅读量的每月干扰较小,特别对较小的标签更是如此。
对于 StackOverflow 问题的阅读量,我们能获得的统计数据是从2011年末至今。在此范围内,我们将 Python 和其他5中主要的编程语言进行对比。(注意:这个统计范围比趋势工具分析的范围要小,趋势工具的数据是从2008年至今。)这些编程语言是目前 StackOverflow 上高收入国家的用户访问量最多的10大标签中的6个 —— 其他4个没有列入对比的是 CSS 、 HTML、Android、和 JQuery。
从数据上来看,2017年6月,Python 首次超过 Javascript,成为 StackOverflow 上阅读量最高的标签。其中, Python 在美国和英国是国内阅读量第一,在其他几个高收入国家则略微小于 Java 或者 Javascript ,屈居亚军。这可是相当引人注目的成就,要知道在2012年,它比其他5个编程语言都低,而短短的几年内就增加了2.5倍。当然这部分原因是由于 Java 每季度的访问变化规律:由于在大学课程中 Java 的占比相当大,所以 Java 的阅读量在每个学期期中和期末阶段会迎来一个高峰,而到了暑假期间则相对回落。在今年底 Java 是否有可能再度反超 Python 呢?我们用了个趋势分析模型“STL”,将季度性的变化和总体的增长趋势进行整合,并对接下来两年的增长趋势进行了预测:
根据这个模型,Python 有可能继续保持领先,也有可能在今年秋季被 Java 暂时超过(这些都在模型预期的变动范围内),但很明显,在2018年 Python 将毫无疑问成为阅读量排行第一的标签。 STL 模型还推测, Java 和 Javascript 将会继续保持在比较相似的水平,正如它们前两年中的趋势一样。
上述数据都仅限在访问最多的6大编程语言中。但在目前各种技术百花齐放的时候,到底谁才是当下在高收入国家里增长最快的技术呢?
我们决定以2016年度和2017年度的阅读量增长率为指标,分析了各大编程语言( Java 和 Python 之类)以及各种平台(比如 iOS、Android、Windows 和 Linux)的数据,不过没有包括类似 Angular 这样的框架或者 Tensor Flow 这样的工具(虽然它们很多也展现出了不俗的增长势头,也许我们之后会另文讨论)。
由于在不同体量和增长数量上的差异,单纯的增长率数字是不具有可比性的。因此,我们使用了一张平均差图来对比每个标签的总量和增长率。
如图所示,拥有 27% 年增长率的 Python 可谓独占鳌头:基数大的标签中增长最快,增长快的标签中总量最大。与其增长率类似,总量排在第二大的是 R 语言。在高收入国家,大部分总量较大的标签的流量都保持相对稳定,除了 Android 、iOS 和 PHP 有些微的减少。之前我们还讨论过的 Objective-C 、 Perl 和 Ruby 都有比较明显的缩减。各种函数式编程语言中, Scala 是总量最大增长情况也最好的,而 F# 和 Clojure 则总量很低,又呈减少趋势,只有 Haskell 保持居中稳定态势。
不过上图中有一个特殊的成员无法显示,那就是 Typescript 。它的相关问题阅读量在去年增长了 142% 以至于没法摆在图上。同时,你还能看出有许多相对较小的语言的增长速度也和 Python 持平或更高(比如 R、 Go 和 Rust),而 Swift 和 Scala 也显示出了令人印象深刻的增长势头。那么他们的总阅读量情况和 Python 相比如何呢?
类似 R 和 Swift 这些语言的增长速度确实颇为可观, TypeScript 更是在这么短的时间内翻了一番多。这些较小的编程语言的发展,几乎都是从完全默默无闻,到如今在软件生态系统中占有了不可忽视的份额。但根据这张图表我们可以看出,对于总量相对较小的语言,要更快地扩张还是相对容易的。
请注意我们并不是把这些语言和 Python 进行对比,只是尝试解释这些语言的增长速度和总量的关系——这些语言都还有非常广阔的前景。但在目前的统计数据中, Python 确实是独树一帜:它既是这些语言中总阅读量最大的,也是增速最快的之一。(事实上,它的增速还在加快!从2013年以来,每年的平均增长率都在提高。)
至此,我们已经分析了高收入国家中 Python 语言的相关趋势。在全球的其他国家,比如印度、巴西、俄罗斯和中国, Python 是不是也有着类似的增长情况呢?
答案是肯定的。
在其他国家和地区, Python 依旧是增长最快的主要编程语言,它原先也还是保持着较低的水平,比高收入国家迟了两年(2014年)才开始高速增长。事实上,在非高收入国家的用户中, Python 相关标签的阅读量年增长率甚至比高收入国家的还稍微高一点点。虽然上图没有显示,但另一门使用量和GDP呈正相关关系的编程语言: R 语言的访问量在这些国家里也呈增长趋势。
本文中,关于问题标签阅读量增减情况(而不是绝对的排行)的许多结论都是基于高收入国家的数据,但在其他国家和地区也同样成立。在这两种不同区域间的增长率数据的斯皮尔曼相关系数达 0.979。在部分情况下——比如在 Python 语言的增长——你可以看到存在某种像是“延迟”的现象:当一种技术在高收入国家中广泛普及后一两年,才逐渐扩展到全球范围。
我们写这篇文可不是为了引战。某种语言的用户量并不能代表它的质量,当然也不能告诉你对于某种特定情况用哪种语言来解决更好。带着这样的观点,我们相信,通过类似研究,我们可以了解到当前的软件开发生态是由哪些语言组成的,以及据此推测整个产业将会往什么方向改变。