欢迎来到it培训的黄埔军校——智游教育!

厉害了!从编程语言就能看出国家贫富-永利国际

于2018-05-07 10:46:46 发表在技术干货

作为一名程序员,你有没有好奇过,在发达国家和欠发达国家程序员们使用的编程语言有没有不同?这些编程语言又是怎样影响着全球软件开发产业的呢?

 

本文带你解开这些谜团的同时你会发现按照高收入国家和低收入国家来划分软件开发产业是具有现实意义的。

 

本文所有数据均来自于2017年1月至8月间选取的该段时间获取流量最高的250个标识进行分析。为了降低其他因素的影响,我们仅分析了在这个时间段内至少有5百万次访问的64个国家。

 

需要注意的是这些数据来自于那些懂英语的开发者们的贡献。一些针对西班牙语和葡萄牙语网站的分析表明,类似情形同样适用于墨西哥和巴西等非英语国家。
 

智游教育

 

标识流量与人均gdp示意图

 


 

技术与人均gdp相关

 

在上一篇文章中,我们发现有关android的访问流量(例如,一国在stack overflow上相关访问的流量百分比)往往与一个国家的人均gdp呈负相关。 这不禁让我们怀疑,其他标识是否也有这样的关联性。

 

当我们检索主要编程语言和平台时,除了android以外,php、python和r语言同样结果显著。           

                                  

在android和php的检索流量与国家总收入成负相关的同时,python和r语言却呈正相关。但是凡事都有例外,韩国比预想搜索了更多的android而中国则是python。不过一般来讲,这种关联性还是很强的。经过多次调整测试后,每个结果的r2值在0.5-0.6之间,p值< 10-6 。

 

在此强调,我们并不暗示任何因果性也不是说编程语言的选择会影响一个国家的人均收入,也没有说一个国家的财富水平直接影响了科技的应用。我们怀疑对于国家收入的影响很可能是综合因素,其中包含经济因素、社会因素(教育水平、软件产业的发展时间、外包程度)等。

 

我们如何把软件发展产业一分为二?

 

当我们研究趋势时,通常会基于两大类国家(即高收入国家和低收入国家)考虑而不是考虑一大堆的关联性。国家的财富水平,作为一种既有分类,我们可以引用世界银行基于人均国民总收入的分级标准。分类详情见下图。
 

世界银行收入分类图

 

 

世界银行收入分类图

 

78个高收入经济体,绝大部分由美国、加拿大、西欧、部分中东地区、东亚、澳大利亚和新西兰组成。我对促使国家间变化的基本因素进行了一些分析(如主要成分分析法)。结果表明这是合理的分类,而且比其他方式(例如,我们把国家划分为东半球西半球)更有意义。打个比方,就访问技术来说,澳大利亚通常更趋近美国和欧洲,而非中国和印尼。

这种分类方式显示访问stack overflow*的流量有63.7%来自于高收入国家。出现这个结果很大程度上是综合因素造成的,比如软件产业的发展、互联网更大范围的接入、更多英语用户的使用等。在低收入国家中,很大一部分流量来自印度,其次是巴西、俄罗斯以及中国。
 

以收入划分显示网站流量的国家

 

以收入划分显示网站流量的国家

 

高收入国家在已用技术上与低收入国家有着怎样的不同?

 

现在,我们把软件开发领域分为两大部分。高收入国家和低收入国家在技术使用上有何区别呢?

 

从研究中我们窥探到一些有趣的差异:

 

数据科技的差异:上文我们提到,python和r语言与国家收入息息相关。在高收入国家,python的访问量是其他地区的两倍,r语言则高达三倍。我们同时注意到在较小众的标识中,伟大的更替都是由python和r语言包编写的,如pandas、numpy、matplotlib和ggplot2。由此可以看出在这两种语言间造成收入鸿沟的原因可能是由于他们在科学研究和学术研究中扮演的角色不同。因为在那些工业发达收入较高的国家,科学研究在经济领域占了很大比重,程序员们也拥有更高的学历。

 

c/c  c/c 是另外两种受高收入国家青睐的大名鼎鼎的编程语言。一个假设是说这种情况可能与教育有关:正如我们在之前报道中提到的,c和c 语言尤其受到美国各个大学的青睐。当然,这也可能与电子业和制造业的地理分布有关。

 

php和android:我们在上一篇文章中探讨了android在世界范围内的发展。但php是另一种在低收入国家广泛应用的编程语言。有个有趣的发现,codelgniter是一个php的开源框架标识,在低收入国家的访问量极为突出。进一步研究发现,与贡献了极少流量的美国和欧洲相比,大量的访问来自于南亚和东南亚,尤其是印度、印度尼西亚、巴基斯坦和菲律宾。造成这一现象的原因可能是因为codelgniter是外包公司在搭建网站时最常用的软件。
 

it培训

 

高低收入国家在技术访问上的区别

 


结论:这个调查的意义在哪里?

 

当然,我对编程语言生态系统的研究结果展示出的因素非常感兴趣。但是这些研究对日后其他的数据研究很有参考意义。

 

我们对软件开发行业提出问题时,要明白一点,就是我们的的确确在回答两个被混淆在一起的问题。如果能把这两个问题区分开来,也许我们能得到更多有效信息。

 

举例说明。我们总是想知道哪种技术能够带来更多的流量访问,例如曾经大热的flash,随着时间推移,检索flash的流量在减少。如果我们打算列一个能够带来高访问量的编程技术清单的话,那么这个表格在高收入国家和低收入国家的内容将会大相径庭。
 

java培训

 

国家收入与高访问量技术的连线图

 

我们来详细说明一下,截止到2017年,python是在高收入国家访问量第二位的标识,但在其他地区的排名只是第八位。我学习的r语言是高收入国家中访问量排名第15的标识,但在世界其他地区,它甚至没有进入前50强。

 

以上内容在我们使用stack overflow上的数据来调研开发者生态系统时,意义重大。一位对软件开发行业的未来感兴趣的美国技术招聘人员将需要一整套应对来自不同地区的答案,而不仅仅是能够回答来自印度咨询学习哪种编程语言的学生和一名想要了解肯尼亚科技公司的投资者。