编程语言的选择与国家贫富的相关性浏览量 69

原文作者:David Robinson

原文链接:https://stackoverflow.blog/2017/08/29/tale-two-industries-programming-languages-differ-wealthy-developing-countries/

译者:ekse

在 Stack Overflow 上,我们对通过我们的数据来分析全球软件开发社区的一些见解很感兴趣。最近这篇[1]关于移动端开发人员分布的文章就是个很好的示例:它分析了来自全球有关 Android 的问题,发现访问 Android 相关内容的开发者,更多的是来自低收入国家,比高收入国家的访问量多很多。

这让我们对其他的编程技术在发达国家和贫穷国家的区别,怎么影响全球软件开发工业产生了兴趣。在这篇文章里,我们将探索这些区别,然后显示软件开发行业划分为高收入国家和其他地区是有用的。

文章中所有的分析都是根据 2017 年到现在的数据,在此期间大约 250 个标签有着不同的访问量。为了减少噪音,我们分析了在这段时间里超过 500 万次问题请求的 64 个国家。需要注意的是这些数据代表了那些懂英语的开发者直接的活动。(有分析表明在西班牙语和葡萄牙语的一些趋势在非英语母语的国家比如墨西哥和巴西同样适用)。

技术和国内人均生产总值相关

最近的一篇文章中,我们发现 Android 问题的流量往往和国家的人均生产总值负相关。这让我们对其他的标签是否也这样产生了兴趣。

当我们研究主要的编程语言和平台时,除了 Android 以外,PHP,Python 和 R 也脱颖而出。

Alt text

Android 和 PHP 的流量总量和一个国家的收入负相关,但是 Python 和 R 是正相关。每个用例我们都能看到例外的情况(韩国使用更多的 Android,但是中国更多的使用 Python),但是大致上关联性都是很强的。(多次测验调整后每个的 R2 都在.5-6之间,p-values 小于 0.000001)。

需要强调的是,我们并不表示任何因果关系。当然我们不是说编程语言的选择影响到一个国家的平均收入,但是我们也不是说一个国家的财富会直接影响到他们对技术的使用。我们怀疑驱动因子比较可能是经济和社会共同作用的的结果,这个才和一个国家的财富相关。(国家的教育水平,软件行业的发展年限,外包的水平)

我们怎么把软件开发行业分成两个部分的?

当我们在检查趋势时,分成两组国家比揉在一起更有利于讨论(高收入和非高收入国家)。作为一个有用的预设的分类,我们可以用世界银行的收入分类,这是根据人均国民总收入来划分的。

Alt text

总共有 78 个高收入的经济体,大部分是由美国、加拿大、西欧、部分中东和东亚国家、和澳大利亚、新西兰。我分析了国家间差异的根本驱动因素,得出的结论是我们做出的是一个合理的分割,这是一个比其他方式更有意义分割方式,比如东方和西方。(例如,澳大利亚就和美国和欧洲在访问技术上比中国和印度尼西亚更相似)。

Alt text

这个分类规则把 Stack Overflow 分成了两个部分,大约 2/3 和 1/3:63.7% 的流量来自于高收入国家。(这可能是和更大比例的软件开发和更广的网络接入和不成比例的英语用语的占有量相关)。一部分来自非高收入国家例如印度、巴西、俄罗斯和中国。

那高收入国家他们使用的技术又有什么差异呢?

我们已经把软件开发世界分成了两个部分。那么高收入国家和非高收入国家在使用技术上又有什么差异呢?

Alt text

我们可以提取出几个有意思的观点:

数据科学技术的差异:正如我们前面看到的,Python 和 R 语言和一个国家的收入相关。Python 在高收入国家的访问量是其他国家访问量的两倍,R 语言则达到了三倍。我们可能也注意到那些小众的标签,他们中很多 Python 和 R 的包有着显著的变化,例如 pandas, numpy, matplotlib 和 ggplot2。这些收入区别可能是由于两个语言在科学学术研究中的角色不同导致的。这确实是在发达工业国家更类似,这些国家科研占了国家经济的很大一部分,程序员更可能拥有高等的学历。

C/C++:C/C++ 是另外两个有名的编程语言,他们都是高收入国家经常访问的。一个假设就是和教育相关:我们从前面的内容可以看到,C 和 C++ 是美国大学生经常访问的语言。这可能和电子制造业的地理分布有关。

PHP 和 Android:我们在上一篇文章中研究了全球的 Android 开发,但是 PHP 是另一个和低收入国家相关的编程语言。从 CodeIgniter 可以发现有意思的东西,这个开源的 PHP 框架,经常从低收入国家被访问,占了大部分。更深入的研究显示,这个框架在南亚和东南亚访问的最多(特别是印度,印度尼西亚,巴基斯坦和菲律宾)在美国和欧洲则基本没有访问。很可能 CodeIgniter 是外包公司常用的一个框架。

结论:这意味着什么?

我对编程语言的生态系统的有趣事实很感兴趣。但它也对我们不久的将来发布的其他数据探索有影响。

当我们在软件开发行业提问的时候,重要的是要知道,我们回答了两个“混合”在一起的独立的问题,而且分开它们有时却可以给我们更多的信息。

例如,我们经常对知道哪个技术会带来很多流量感兴趣,例如被验证的技术 Flash 就缩水了很多。如果我们要显示一个经常访问的编程语言列表的话,在高收入国家和低收入国家就会不同:

Alt text

例如,2017 年到现在,Python 是高收入国家中访问量排第二位的标签,然而在其他地方则是排在第 8 位。我选择的语言是 R,在高收入国家的标签排名排在第 8 位,但是在其他地方还排不到前 50。

这种联系对我们在使用 Stack Overflow 的数据来了解开发者生态系统时很重要。一家对未来工业感兴趣的美国科技招聘企业就需要一套不同的答案,一个印度学生期望学什么语言,或者一个需要了解肯尼亚科技公司的投资者。

在接下来的文章中,当我们继续研究全球的开发者生态时,我们会经常引用到这个分类。如果你对我们的全球的软件开发者生态研究感兴趣,这将会帮助你的工作做决策,访问 Stack Overflow Insights[2] 发现更多。

[1]https://stackoverflow.blog/2017/08/22/world-mobile-development [2]https://insights.stackoverflow.com/

微信扫一扫
关注该公众号