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

2017-08-31来源: 云头条mp

  我们Stack Overflow热衷于利用自己的数据,分享全球软件开发社区方面的独家信息。最近关于移动开发者分布的这篇文章(https://stackoverflow.blog/2017/08/22/world-mobile-development/?utm_source=so-owned&utm_medium=blog&utm_campaign=gen-blog&utm_content=blog-link&utm_term=income-countries)就是个典例:该文探究了全球各地针对Android问题的访问量,结果发现Android在低收入国家的访问量往往高于高收入国家。

  这促使我们想知道编程技术在发达国家与贫穷国家之间有何不一样,以及这如何影响我们对全球软件开发行业的了解。我们在本文中将探讨这些区别,并表明将软件开发行业划分为高收入国家和低收入国家很有必要。

  本文探讨的所有分析是在2017年迄今为止(1月至8月)进行的,针对这段期间访问量最大的250个标签。为了减少干扰,我们只分析了这段期间问题访问量至少500万人次的64个国家。另外值得一提的是,该数据代表了懂英语的开发者当中的活动(针对西班牙语网站和葡萄语网站的一些分析表明,类似的趋势适用于像墨西哥和巴西这些国家不讲英语的人)。

  技术与人均GDP相关

  我们在最近的那篇文章中发现,Android问题的访问量(占一个国家的Stack Overflow访问量的百分比)往往与该国的人均GDP呈负相关。这可能促使我们想知道任何其他标签是否也是如此。

  我们探讨主要的编程语言和平台时,发现除Android之外脱颖而出的一些语言/平台包括PHP、Python和R。

  Android和PHP访问量的大小与国家的收入呈负相关,而Python和R呈正相关。无论在哪种情况下,我们都可以看到例外情况(韩国使用Android比我们预期的更普遍,而中国使用Python比预期的更普遍),但相关性通常很强。(R2在0.5-6左右,多次测试调整后,p值<10-6)。

  我们会强调,我们在这里不表明任何因果关系。我们当然不是说,编程语言的选择影响一个国家的平均收入,但也不是说一个国家的财富直接影响它们对技术的使用。我们认为,驱动因素可能包括经济因素和社会因素(教育水平、软件行业年头和外包水平),而这些因素通常与国家的财富相关。

  我们为何将软件开发行业分为两个?

  我们研究趋势时,很有必要谈论两组国家(高收入和低收入),而不是考虑一系列相关性。我们可以使用现成的世界银行收入分类,这个分类基于人均GNI(国民总收入)。

  

  有78个高收入经济体,主要包括美国、加拿大、西欧、中东及东亚部分地区以及澳大利亚/新西兰。我对国家间差异的根本性驱动因素作过一番分析(比如主成分分析),结果表明这种划分为很合理,而且比其他划分方法(比如分为东半球与西半球)更有意义。(比如说,澳大利亚在访问的技术方面通常更类似美国和欧洲,而不是类似中国或印尼)。

  

  这种划分将Stack Overflow的访问量分为两组:一组约占三分之二,另一组约占三分之一:Stack Overflow的访问量中63.7%来自高收入国家。(这可能是由于软件开发群体比例较高、互联网接入更普及、说英语的人异常多)。来自非高收入国家的访问量大多来自印度,其次是巴西、俄罗斯和中国。

  高收入国家在使用的技术方面有何不一样?

  我们现在将软件开发界分为两个部分。高收入国家与非高收入国家在它们使用的技术方面有何不一样?

  

  我们可以列出几个有意思的结果:

  • 数据科学技术方面的差异:如前所述,Python和R与一个国家的收入有关。在高收入国家,Python的访问量是世界其余地区的两倍,而R更是约三倍。我们可能还会注意到,在较小的标签中,许多最大的变化出现在科学Python和R包方面,比如pandas、numpy、matplotlib和ggplot2。这表明,这两种语言的收入差距一方面归因于它们在科学和学术研究中扮演的角色。这些语言在更富有的工业化国家来得更常见;在这些国家,科学研究在经济中占有更大的份额,程序员更有可能拥有高等学位。

  • C/C ++:C/C ++是另外两种访问量往往来自高收入国家的知名语言。一个假设是,这可能与教育有关:正如我们在前一篇文章中看到的那样,C和C++是美国大学访问过于频繁的两种语言。这可能还与电子和制造业的地理分布有关。

  • PHP和Android:我们在前一篇文章中探讨了全球各地的Android开发,但PHP是另一项与低收入国家显著相关的技术。值得关注的是,CodeIgniter这种PHP开源框架居然是低收入国家访问最频繁的一个标签,领先幅度明显。进一步分析发现,CodeIgniter在南亚/东南亚(尤其是印度、印度尼西亚、巴基斯坦和菲律宾)的访问尤其频繁,而它在美国和欧洲的访问量非常低。CodeIgniter可能是搭建网站的外包公司的一个常见选择。

  结论:为什么这很重要?

  我对这些结果自然很感兴趣,因为它从一个侧面反映了编程语言生态系统。

  我们提出关于软件开发行业的问题时,重要的是知道我们确实回答了两个已“融为一体”的不同问题,将它们分开来有时让我们获得信息量更大的答案。

  比如说,我们常常有兴趣了解哪些技术带来最高的访问量,比如密切分析像Flash这些不断萎缩的技术。如果我们要列出访问量最高的编程技术,高收入国家与低收入国家将会不一样:

  比如说,2017年迄今为止,Python是高收入国家中访问量排名第2高的标签,而它在全球其余地区只是第8高。我的首选语言R是高收入国家中访问量排名第15高的标签,而它在其余地区甚至没进入访问量最高的50个标签。

  我们使用Stack Overflow数据来了解开发者生态系统时,这是很重要的背景信息。对行业未来有兴趣的美国IT招聘人员需要的一组答案自然不同于想知道学什么语言才好的印度学生,或想要了解肯尼亚IT公司的投资者。