2018年6月13日

大数据告诉你,最常用的编程开发有哪些

大数据告诉你,最常用的编程开发有哪些

enter image description here

导语:笔者通过在Stack Overflow分析用户创建的开发者履历,得出了最不受开发者欢迎的编程开发语言,还有最受开发者欢迎的技术,以及软件生态圈的竞争关系。

文/ David Robinson

译/ 欧剃

如果你用 Stack Overflow的话(推荐大家都去用下),在职业生涯页面上,用户可以创建自己的开发者履历,展示自己获得到成就,推动职业生涯的进展。在充实履历的过程中,有一个选项,可以让用户添加自己希望或不愿与之共事的各种技术的标签。

enter image description here

在之前,衡量一种语言的受欢迎程度,有许多不同的办法;比如用Stack Overflow上的访问量或者问题阅读次数来衡量此类趋势。但现在,通过让用户在自己的简历中增加这些标签,可以准确地知道哪些技术被人们所讨厌

编程语言分析

为了衡量每个标签的两极分化情况,我们用它出现在用户讨厌列表中的次数和它出现的总次数(无论是喜欢列表还是讨厌列表里)做比较。这样,50%就意味着一个标签被放在讨厌列表里的数量和在喜欢列表里差不多,而1%表示每100人中,99个用户都喜欢,只有一个不喜欢。

来看看这个经过筛选的程序设计语言列表(不包含Android之类的平台,也不包含jQuery这类的库),只选择在开发者履历中出现次数超过2000次的语言。

enter image description here

最遭人讨厌的语言中,排在第一梯队的是 Perl、Delphi和VBA。第二梯队是PHP、Objective-C、Coffeescript和Ruby

上面这些被标”讨厌”次数最少的语言都倾向于是快速增长的语言。从StackOverflow的动态趋势来分析,R、Python、Typescript、Go以及Rust全部都是快速增长中的语言,而且都是两极分化最不明显的语言。类似的,许多评价不太好的语言,比如Perl、Objective-C和Ruby,也恰好在用户数量减少最快的几个语言之中。

enter image description here

为了检验这一推测,我们将每一种语言的总量、增长量与被人讨厌的百分比进行了比较。橘色表示被人讨厌的比例最大。

enter image description here

总体上来说,一个语言的增长状况和它被讨厌的比例呈负相关。几乎所有“讨厌率”超过3%的语言,在StackOverflow上的流行程度都是处于负增长之中(除了两极分化比较严重的VBA,居然还保持稳定甚至略微有所增长)。而那些被讨厌的最少的语言——R、Rust、Typescript和Kotlin——都处于快速增长是状态。

唯一一个与众不同的语言是函数式语言Clojure,几乎没有人表示不喜欢它,但它依旧处于快速缩减的状态。另外一个比较特殊的是MATLAB,虽然没什么人表示讨厌它,但它的相关流量还是在不断减少。这可能表明了用数据分析测量人类情感时存在的一个缺陷:任何一个web开发者可能多多少少都会对PHP、C#或Ruby有点意见,但不搞数据分析的人往往没有什么理由要对MATLAB有什么不爽(没什么人对R表示“讨厌”估计也是类似原因)。

我们不是在断定这一定有因果关系,也不是说被每个程序员标记成讨厌就一定会让这种语言被抛弃。另一种可能性是,当热门发现某个语言已经越来越不流行的时候,他们更能无所顾忌地公开表达对这种语言的厌恶。还有一种可想见的状况是,许多程序员会用这个功能来标记处那些他们曾经用过,但已不再使用的技术。这就导致这样一种自然的发展规律:被“取代了”的技术终将会越来越多地被人标记为不喜欢。

最受讨厌/欢迎的技术

上面我们只分析了各种编程语言,没有涵盖各种操作系统、平台和库。如果把这些都加进去呢?到底谁是从古自今最不受待见的技术?

enter image description here

在这里,我们看到了许多来自微软的亲切身影,特别是Internet Explorer和Visual Basic,甚至包括“Microsoft”本身(“Apple”也在这个列表中,不过还没有被人狠的那么惨)。对于讨厌Flash的广大人民群众,我们有一个好消息是,它死的透透的了。同时,许多古老的编程语言,例如COBOL、Fortran和Pascal也在这露了脸。

我们哎将关注点集中在那些始终非常流行的技术上,这些技术几乎没有什么人讨厌。(因为被标记为喜欢的标签实在太多了,我们只统计那些出现10000次以上的技术)。

enter image description here

R成功闯入了我们这张表中,不过它可不是唯一不会引起争论的数据科学相关技术。机器学习技术总共收获了两万三千多人的喜爱,并且几乎没什么人表示不爽。其他一些标签,比如Python-3.X、CSS3和HTML5则大概说明了开发者很少具体到对某个技术的某个特定版本表示不满。

###

软件生态圈的竞争关系

如果某人喜欢某一个特定的标签,会不会有一些标签是他们非常讨厌的?

通过计算某个特定的喜欢标签和其他标签的Phi相关系数,我们可以对这种竞争关系进行分析。

enter image description here

于是这揭示出了软件生态系统中潜藏的“竞争”关系:Linux和OSX对Windows,Git对SVN,vim对emacs,以及(出乎我意料的)R对SAS。大部分这些标签对并不代表这“相反”的技术,而是反映了解决相似问题的两种不同途径。这其中的许多更是体现出从一个曾经流行的技术向更新技术的转变过程(SVN被Git取代,XML被JSON取代,VB被C#取代)。按这样说,人们会在简历中列出这些的原因就很容易理解了:对开发者来说,标出那些他们认为已经过时的技术,并表示不愿意在工作中继续使用,是非常常见的做法。