最近,在StackOverflow一份关于全球移动开发者分布的调查报告中,发现Android是在低收入国家比在高收入国家使用更广泛。那么这到底是什么意思呢?这让我们想知道不同经济背景下的国家编程技术有何不同,以及这如何影响我们对全球软件开发行业的看法。本文探讨了这些差异,并解释了将软件开发行业划分为高收入国家和世界其他地区的必要性。调查报告分析基于2017年(1月至8月)使用的前250个编程语言标签。为了降低出错的风险,我们只分析了这段时间各种编程语言的访问量在500万以上的64个国家。与人均GDP相关的技术在最近的“世界上哪里有移动开发?”文章中,我们使用“StackOverflowTrends工具”分析,Android流量占比与一个国家的人均GDP呈负相关。这促使我们去看看其他编程语言是否也是如此。在深挖主要的编程语言和平台时,除了Android,其他一些主要的语言还有PHP、Python、R。从上图可以看出,Android和PHP的使用量是负相关的与一个国家的收入有关,而Python和R语言则相反,说明越发达国家使用频率越高。在这种趋势下,我们也发现了一些特殊的情况,比如韩国使用Android的频率比预期的要高,而中国使用Python的频率更高,但总体来说,这种语言使用流量和国家相关性还是比较强的。这里还需要特别声明一下:根据以上统计,并不代表编程语言的选择会影响一个国家的平均收入,一个国家的GDP也不会影响开发者对编程的选择语言。没有任何因果关系。为什么要将世界软件开发行业一分为二?在研究趋势时,将软件开发行业分为两组国家(高收入和非高收入)比考虑一系列其他相关因素更有用。作为一个有价值的分类,我们可以使用世界银行基于人均GNL(国民总收入)的收入分类。共有78个高收入经济体,主要由美加、西欧、中东和东亚部分地区、澳大利亚/新西兰组成。我们对国家间差异的潜在驱动因素做了一些分析(如主成分分析),认为这是一种合理的划分,比其他划分方法更有意义,如东半球vs西半球。(例如,澳大利亚在编程技术的获取和使用方面与中国或印度尼西亚更相似)。高收入国家的技术差异?现在把全世界的软件开发分成两部分:高收入国家和非高收入国家,那么这两者的技术差异在哪里呢?本文摘录了几个有趣的见解:数据科学技术的差异:如前所述,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都进不去。因此,对于不同国家的企业招聘,招聘人员和人才需要一套不同的参考值。
