[译] 编程语言的选择与国家贫富的相关性

1,010 阅读4分钟

简评:Stack Overflow 分析了其网站上各编程语言标签的访问情况:高收入国家倾向用 Python、R(重视科研)、C 与 C++(重视教育);低收入国家则更多使用 PHP 与 Android 开发。

Stack Overflow 作为程序员版的知乎,一直对外分享着软件开发社区的数据。最近这篇文章「Where in the World is Mobile Development?」就是一个很好的例子,文中分析了来自世界各地关于 Android 标签的流量,发现来自低收入国家的访问会更多。

这个结论也直接促使我们探寻在不同经济状况的国家中,使用的编程技术会有何不同,以及它又将如何影响我们对全球软件行业的看法。

本文的分析数据为从 2017 年 1 月至 8 月流量最高的 250 个标签。为了减少噪声,只采纳该时间段内超过 500 万次访问的 64 个国家。(值得注意的是,这些数据代表的是懂英语的开发者之间的行为)

技术与人均 GDP 相关

此前一篇文章中,我们注意到 Android 流量往往与一个国家的人均 GDP 呈现负相关,那么其他语言会是什么情况呢?

我们发现,除了 Android,类似的表现还包括 PHP、Python 和 R 语言:

  • Android 和 PHP 流量与国家的人均 GDP 呈负相关

  • Python 和 R 语言与国家的人均 GDP 则呈正相关

尽管在每种情况下,我们都可以看到异常 —— 韩国使用 Android 比我们预期的要多,而中国则更多采用 Python。但总体来看,编程语言和国家的人均 GDP 相关性很强。(R-square 为 0.5 - 0.6)

相关性并不代表因果关系,不是说编程语言的选择就会影响国家的平均收入,也不代表国家的财富会影响开发者对技术的选择。这个趋势是混合了各项经济和社会因素(教育水平,软件行业年龄,外包水平等),而这通常和一国的财富相关。

软件开发分类依据

当我们研究趋势时,谈论两组不同收入的国家会比考虑一系列相关性更加有用。作为一个既有分类,我们可以参考世界银行收入分类,这是根据人均国民总收入计算得到的数据。


一共有 78 个高收入经济体,主要由美国、加拿大、西欧、中东和东亚部分地区,以及澳大利亚和新西兰组成。

事先我们已经对国家间的差异的根本驱动因素进行了一些分析(如主成分分析),并一致认为,相较于其他分类方法(东西半球等),本文的分类更有参考价值。


这个分类将 Stack Overflow 的流量分为两部分,其中 63.7% 来自高收入国家。这可能是因为在这些国家中,互联网普及度更高,软件开发比例较大。而在非发达国家中,大部分流量来自印度,其次是巴西、俄罗斯和中国。

发达国家的技术使用差异?

现在我们已经把软件开发行业按国家收入划分为两个部分,那么,不同收入的国家在技术使用上又会有什么差异呢?

从上面的散点图中我们可以得到几个有意思的结论:

  • 数据科学方面的技术差异

如上所述,Python 和 R 语言与国家的人均 GDP 则呈正相关。
在发达国家,Python 的访问次数是世界其他地区的两倍,R 语言大约是三倍,这可能是由于这两种语言在学术研究中的作用。另外,更富有的工业化国家,科学研究占经济的较大部分,程序员也更可能获得高等学位。

  • C / C ++

C / C ++ 这两种经典的语言的访问也更多来自于高收入国家。同样是基于高等教育因素的假设,毕竟它们几乎是美国大学中的必修课。同时,它们的流量也可能与电子产业的地理分布有关。

  • PHP / Android

前文有提到 Android 和 PHP 是两项与低收入国家相关的技术。

有意思的是,PHP 开源框架 CodeIgniter 的流量访问在低收入国家中出奇的大,特别是在东亚和东南亚的国家中(印度、印度尼西亚、巴基斯坦和菲律宾),而来自美国和欧洲的访问很少。这可能是因为开源框架 CodeIgniter 是建立网站的外包公司常用的选择。

小结

这些数据结果其实是个很有意思的事实,它反应了编程语言生态系统的一些状况。

当我们提出软件开发行业的问题时,对于我们很重要的一点是,我们是否真正回答了这些混合了不同因素的问题,我们是否注意到不同因素中间的主要矛盾。

感谢阅读!