StackOverflow 调查:富裕国家流行 Python 和 C 语言,低收入国家爱用 PHP
英文原文:A Tale of Two Industries: How Programming Languages Differ Between Wealthy and Developing Countries
在这个大数据内容和 AI 每天都抢占头条的年代,每个人似乎都想学习一点编程知识,似乎掌握了编程技术以后,走上人生巅峰就不再是梦。但是其实,在一开始,连选择学习哪种编程语言,都是需有讲究的。一位数据分析师,在对 IT 技术问答网站 Stack Overflow 上不同技术标签的访问量进行分析后,认为全球的软件开发生态其实一分为二,不同国家风靡的编程语言,实际上也大有不同。你以为是自己选择了一种编程语言,殊不知,也许是这种编程语言,选定了你。
在 Stack Overflow,我们有志于使用我们的数据来分享有关全球软件开发社区的见解。最近发布的关于手机移动端开发者的帖子就是一个好例子:这篇帖文探索了世界各地访问 Android 相关问题的流量,发现低收入国家比高收入国家更经常使用 Android 系统。
这篇帖子使我们想知道富国和穷国之间的编程技术有何不同,以及这会如何影响我们对全球软件开发行业的看法。在本文中,我们将探讨这些差异,并证明在软件开发行业中,将高收入国家和世界其他地区区分看待,是有益的。
本文中探讨的所有分析都是在 2017 年 1 月至 8 月期间展开的,我们选择了那段时间流量最高的 250 个标签进行研究。为了减少其他不必要的影响,我们只分析了在这段时间内至少贡献了 500 万次问题访问量的 64 个国家。值得注意的是,这些数据代表了那些了解英语的开发者们的活动。一些针对西班牙语和葡萄牙语网站的分析表明,类似的趋势同样出现在非英语国家,比如墨西哥和巴西。
科技与人均 GDP 相关
在最近的一篇文章中,我们看到关于 Android 问题的流量(占一个国家 Stack Overflow 访问量的百分比)往往与一个国家的人均 GDP 呈负相关。 这不禁让我们怀疑,其他标签是否也有这样的相关性。
当我们搜索主要的编程语言和平台时,除了 Android 之外,还有一些也比较突出,包括 PHP,Python 和R.
标签流量 vs 人均 GDP
流向 Android 和 PHP 的流量数与一个国家的人均收入水平呈负相关,而 Python 和R的话题流量则与国家人均收入水平呈正相关。但无论哪种情况,我们都可以看到有一些例外(韩国使用 Android 的人数比我们预期的要多,中国则更多人使用 Python),但通常情况下,相关性的呈现还是比较明显的。 (在调整并进行多次测试之后,每个R^2 值都在 0.5-0.6 之间,p值<10^-6)。
在此有必要强调一下,我们并不是要指出这当中必然存在的因果关系;也不是说选择哪种编程语言会影响一个国家的平均收入;也不是说一个国家的财富水平直接影响他们对科技的使用。我们怀疑造成这些相关性的原因可能由各种经济和社会因素混合而成的(比如,教育水平,软件行业的发展时间,外包水平),总的来说,这些因素通常都与一个国家的财富相关联。
我们如何将软件开发行业分为两部分?
当我们研究这种趋势时,把国家分为两组:高收入国家和非高收入国家,而不是把所有国家混在一起考虑。国家的财富水平,作为一种既有分类,我们可以引用世界银行的资料数据。下图显示的是按人均 GNI(国民总收入)为标准,各国呈现出的不同财富水平。
世界银行发布的各国收入分类地图
图中共有 78 个高收入经济体,除了美国、加拿大,还有一些西欧国家,部分中东和东亚国家,以及澳大利亚/新西兰。我已经做过一些关于国家间差异的基本原因分析(如主要成分分析),证明这是一个合理的划分方法,并且这种划分方法比其他划分方法更有意义,例如按国家的地理位置,如东半球与西半球来归类国家。 例如,来自澳大利亚的用户所访问的科技标签,通常更接近美国和欧洲的访问情况,而不是中国或印度尼西亚的。
根据收入分类,排行 Stack Overflow 的流量主要来自哪些国家
这种区分方法将 Stack Overflow 流量分为三分之二和另外三分之一:Stack Overflow 上 63.7% 流量来自高收入国家。 这可能是由于高收入国家软件开发量占全球比例更大,更多人口能享受互联网,以及英语用户数量较多的缘故。来自非高收入国家的大部分流量来自印度,其次是巴西,俄罗斯和中国。
高收入国家在使用的技术上有何不同?
我们现在将软件开发世界分为两部分。 高收入国家和非高收入国家在技术使用方面有何不同?
高收入国家和低收入国家在访问技术标签上的差异
我们从图中可以得出几个有趣的见解:
数据科学技术上的差异:正如我们前面看到的,Python 和R与一个国家的收入呈正相关。在高收入国家,Python 标签的访问频率是世界其他地区的两倍,而R标签的访问量大约是其他国家的三倍。我们也可能会注意到,在比较小众的标签中,许多科学领域的重大转变是由 Python 语言和R语言编写的,例如 Panda,numpy,matplotlib 和 ggplot2。这说明,高收入国家更多人使用这两种语言可能是因为在高收入国家,科学技术和学术研究更受到重视。这就能够解释,为什么在较富裕的工业化国家这两种语言更为常见。往往在高收入国家中,科学研究占经济的比重较大,同时,这些国家的程序员更有可能具备高学历。
C/C ++:C/C ++ 是另外两种著名的编程语言,受到高收入国家的青睐。一个假设是,这可能与教育有关:正如我们在之前的文章中能看到的,C和 C++ 语言尤其受到美国各大学的青睐。当然,这也可能与电子行业和制造业的全球地理分布有关。
PHP 和 Android:在之前的文章中,我们探讨了全球的 Android 开发,Android 系统在较低收入国家更受欢迎。PHP 是一种受较低收入国家显青睐的语言。 CodeIgniter 是一个 PHP 开源框架,这个技术标签在低收入国家的访问量最大,远远超过来自其他国家的访问量,是一个访问量地域分布极不平衡的标签。 进一步的检查表明,这个标签在南亚/东南亚地区(特别是印度,印度尼西亚,巴基斯坦和菲律宾)的访问量特别大,而来自美国和欧洲的访问量就很少。 可能许多外包公司,在构建网站的时候,就常常会选择 CodeIgniter。
结论:为什么做这种研究很有必要?
我当然对这些结果十分感兴趣, 因为我认为它们展示了编程语言生态系统中有趣的事实。 它们也将对我们在不久的将来会发布的其他数据研究,产生影响。
当我们提出有关软件开发行业的问题时,重要的是我们要明白,我们其实是“混合”着回答了两个分开的问题,因为软件开发行业本身,就是依据国家的收入水平,一分为二的。
知晓将这个行业一分为二的原因,则会给我们提供更多的信息。
例如,我们通常有兴趣了解哪些技术标签可以带来最多流量,例如查看 Flash 技术标签的人随着时间推移,逐渐减少。 如果我们要创建一个拥有最多访问次数的编程技术清单,那么高收入和低收入国家的清单将会非常不同:
根据国家收入排名人们最常访问的编程技术标签
例如,截止到 2017 年,Python 是高收入国家中访问次数第二高的技术标签,但在世界的其他地区,它的访问量排名只能排到第八位。我学习的语言,R语言,是高收入国家中访问量排名第 15 的标签,但它的访问量在世界其他地区甚至没有进入前 50。