近日,在 Stack Overflow 全球移动开发者分布的调查报告中发现,相较于高收入的国家,Android 在低收入国家应用得更加广泛。
那么这究竟意味着什么?不禁引发我们深思,不同经济背景下的国家编程技术有何不同,它又如何影响着我们对全球软件开发行业的看法。本篇文章将带领大家共同探讨这些差异,并解读将软件开发行业划分为高收入国家和世界其他地区的必要性。调查报告分析基于 2017 年(1-8 月)中使用最多的 250 个编程语言标签。为了减少误差,我们仅分析了这段时间内访问各种编程语言达 500 万次及以上的 64 个国家。
人均 GDP 相关的技术
在近期的一篇“Where in the World is Mobile Development?”文章中,我们使用“ Stack Overflow Trends tool”分析得出 Android 流量占比往往与一个国家的人均 GDP 负相关。这促发我们想要了解其他的编程语言是否也如此。在挖掘主要的编程语言和平台时,除了 Android 之外,其他一些主要语言还有 PHP、Python 和 R。
有钱Python,没钱PHP,编程语言也嫌贫爱富
从上图可以看出,Android 和 PHP 的使用数量与一个国家的收入呈负相关,而 Python 和 R 语言则正好相反,呈现出越发达国家使用的频率越高。在这种趋势之下,我们也发现了一些特例,诸如韩国使用 Android 频率比预期的多,而中国更多的是使用 Python,但通常而言,这种语言使用流量和国家关联性还是比较强的。在这里也需要特别声明的是:基于以上数据统计,并不意味着编程语言的选择会影响到一个国家的平均收入,而一个国家的 GDP 也不会影响开发者对于编程语言的抉择,二者并没有任何的因果关系。当研究趋势时发现,将软件开发行业分为两组国家(高收入和非高收入)比考虑其他一系列相关的因素更有用。作为一个有价值的分类,我们可以基于人均 GNL(国民总收入)使用世界银行收入分类进行划分。
共计有 78 个高收入经济体,主要由美国和加拿大、西欧、中东和东亚部分地区以及澳大利亚/新西兰组成。 我们已经对国家间差异(如主成分分析)的根本驱动因素进行了一些分析,认为这是一个合理的分工,而且它比其他分割方法更有意义,比如东半球与西半球。 (例如,澳大利亚在编程技术访问及使用方面来说与中国或印度尼西亚更为类似)。
高收入国家在技术上的差异?
现在将世界的软件开发划分为两个版块:高收入国家和非高收入国家,那么两者在技术上的差异究竟在哪?
本文提取出几个有趣的见解:
数据科学技术的差异:如上文所述,Python 和 R 语言与一个国家的收入有关。在高收入国家,Python 的访问次数是世界其他地区的两倍,R 大约是世界其他地区的三倍。此外,我们也可能注意到一些小的标签,大多数是科学技术中 Python 和 R 语言的包,如 pandas、numpy、matplotlib 和 ggplot2。这表明两种语言的部分收入差异可能是因为它们在科学和学术研究中的应用。在更加富有的工业化国家,这些技术使用频率更高,科学研究占经济较大的部分,程序员也可获得更高的学位。
C / C ++:C / C ++是另外两种在发达国家常被访问的语言。猜测其主要原因之一是和国家的教育有关:因为在此前一篇文章,我们得知 C 和 C++ 在美国大学不按比例的成为受访问语言之一。另外一个原因可能与电子和制造业的地理分布有关。PHP 和 Android:在低收入国家中,除了 Android 开发技术比较广泛外,PHP 也排名前 5。有趣的是,CodeIgniter 是一个 PHP 开源框架,而这个框架在低收入国家是经常被单独访问的标签。进一步调查发现,在南/东南亚(特别是印度、印度尼西亚、巴基斯坦和菲律宾地区),CodeIgniter 访问量很大,而美国和欧洲的访问流量很少。由此得出,CodeIgniter 可能是建立网站的外包公司的常用选择。
结论:为什么这么重要?
这些结论对于编程语言生态系统是一个有趣的事实。通过本文,我们区分了两个“混合”在一起的软件开发行业问题。通常,我们会比较感兴趣哪些技术使用的更多,可以驱动更多的流量,诸如了解 Flash 这种随着时间而逐渐消失的数据。如果我们要列一个最受欢迎的编程技术排行榜,那么高收入国家和低收入国家会有所不同:
例如,到目前为止,Python 在高收入国家常被访问标签中排名第二,而在世界其他地区只有第 8 位;R 语言在高收入国家排名第 15 位,但它在其他国家排名甚至不会进入前 50。
因此,对于不同国家的企业招聘,招聘者及人才都需要一组不同的参考值。