Stack Overflow:最令人讨厌的编程语言
在Stack Overflow Jobs上,你可以创建你自己的Developer Story,来展示你的成就并推动你的事业。在创建Developer Story时,有一个选择是你可以添加你想要使用或者不想要使用的标签:
这为我们提供了一个可以研究成千上万开发者的机会。衡量一种语言受欢迎程度的方法有很多;例如,我们经常使用Stack Overflow visits或question views来衡量这方面的趋势。但是,倾向于找出程序员不喜欢哪些技术的数据集是很少见的,当给他们机会在简历中说明的时候。
(两年前,我在个人博客上发布了一些这方面的分析,但是在这篇文章中将会加入更新的数据集并进行更深入的探索)。
编程语言
为了衡量每个标签如何极化,我们将某种编程语言出现在某人“Disliked”标签中的次数与它出现在某人或Liked或Disliked标签中的次数作比较。因此,50%意味着不喜欢和喜欢的标签出现的频率相同,而1%意味着99个喜欢1个不喜欢。(我们将使用我在这篇文章中描述的经验Bayes方法来估算这些平均值,这种计算方法有95%的置信区间)。
我们先来看一下可选择的编程语言列表(不同于像Android这样的平台,或像JQuery这样的库),所有这些在Developer Story中至少有2000个人提到过。
最令人讨厌的语言,遥遥领先的是Perl,Delphi,和VBA。在它们之后是PHP,Objective-C,Coffeescript,和Ruby。在我们的团队中,我们很高兴看到R相对于喜欢它的人来说,并非最令人讨厌的编程语言。
如果你已阅读过我们其他关于普及度正在增加和减少的编程语言的一些文章,那么你可能会注意到,最不喜欢的标签往往和那些快速增长的标签重合。R,Python,Typescript,Go和Rust在Stack Overflow活动方面都是快速增长的编程语言(之前我们已经专门探究了Python和R语言),而且都是最不极化的语言之一。类似地,许多在减少的标签,如Perl,Objective-C和Ruby,都是我们以前观察到的网站中最快减少的标签之一。
我们可以通过比较每种语言的规模和增长与不喜欢它的人(%表示)来检验这一点,橙色点代表最不喜欢的语言。为了使我们的分析与之前写的一些文章保持一致,我们将统计数据限制在高收入国家(如美国,英国,德国和加拿大)。
一般来说,标签的增长与不喜欢的频率两者之间是有关系的。几乎story中提到的所有不喜欢超过3%的在Stack Overflow流量都在减少(除了极化的VBA,依然保持稳定或稍微增长)。而最不喜欢的标签——R,Rust,Typescript和Kotlin——都是快速增长的标签之一(Typescript和Kotlin增长得如此之快,以致于在图表中不得不被截断)。
这里有一个突出的标签,那就是函数式语言Clojure;几乎没有人表示不喜欢,但它仍然位于最快速减少的行列(根据question visits,它在去年前后才开始缩小)。另一个例外是MATLAB,尽管不是很多人表示不喜欢它,但是它也正在减少。这或许表明了衡量感情的数据有限制:任何一个Web开发人员可能对PHP,C#或Ruby都会有他们自己的想法,但不是工作于数据分析的人无法对MATLAB表达意见。(这可能也是R之所以在“不喜欢”中很少被提到的部分原因。)
我们并没有表述程序员不喜欢会导致语言被抛弃的因果关系。有一种可能是,如果人们觉得某种编程语言已经越来越不受欢迎,那么他们更乐意公开表达他们的不喜欢。可以想象,开发人员也会用不喜欢表述他们曾使用过但不再使用的技术。这将导致“replaced”的自然发展最后放到了Disliked的领域。
最不喜欢和最喜欢的标签
上述分析仅考虑编程语言,不涉及操作系统,平台和库。那么总的说来最不令人喜欢的技术是什么呢?为了专注于我们能够拥有足够数据的大型技术,我们将其限制在至少提及1,000次以上的技术。
有些是Microsoft技术,特别是Internet Explorer和Visual Basic也是“Microsoft”标签(“Apple”也名列其中,尽管它没有Microsoft这么令人不喜欢)。我们很欣慰地看到大部分人不喜欢Flash。比较老旧的语言,如COBOL,Fortran和Pascal也上榜了。
再次值得强调的是,这并不是对技术及其质量和人气的指责。这只不过是衡量哪些技术会激起强烈的负面情绪,且同时有一部分开发人员愿意公开表达他们的这种情绪。
我们再来看看那些最普遍的流行技术,那些几乎没有不喜欢的技术。(这次,由于非常喜欢的标签更常见,所以我们只关注至少提到过10,000次的技术。)
Git可能是许多开发人员沮丧的根源(对我来说也是如此),但是很少有人在他们的简历上承认,反而它在Developer Story中是最偏爱的标签。R也是榜上有名,但它并非唯一与数据科学相关的标签(那是毋庸置疑的);机器学习标签被23000人喜欢,并且不喜欢的人相当少。诸如Python-3.X,CSS3和HTML5之类的标签表明了开发人员很少指明他们不喜欢某个特定版本的技术。还有就是,jQuery和在Stack Overflow上一样受欢迎。
极化标签的网络
我们可以通过组织所有这些标签成一个网络来组合成一个故事。在最近的一篇文章中,Julia Silge展示了如何构建一个技术网络来代表整个软件生态系统。如果我们根据每个标签的不喜欢程度对节点进行着色,那么就可以了解生态系统的哪些部分比其他标签更具争议性了。
通过将“Developer Story”标签设计为子生态系统,此网络将讲述一个有关什么类型的标签倾向于极化的故事。子生态系统中的Microsoft(以C#和.NET为中心),PHP(以及WordPress和Drupal),以及移动开发(特别是Objective-C)存在着极化标签群集。在操作系统集群(右下)中,我们可以看到诸如OSX,特别是Windows的系统诋毁者甚多,但是标签如Linux,Ubuntu和Unix却没有这么多批评。
竞争
如果有人喜欢某个特定的标签,那么有没有什么标签是他们不太可能不喜欢的?
我们可以使用特别喜欢的标签的外观之间的phi系数来衡量。(当计算这些相关性时,我们只考虑至少有一个标签不喜欢的人。)
这凸显了软件生态系统的一些“竞争对手”:Linux和OSX vs Windows,Git vs SVN,vim vs emacs,以及R vs SAS(对我而言并不令人惊讶)。这些“竞争对手”中大多数并不代表“相反”的技术,而是反映了解决相同问题的两种方法。许多技术建议从以前流行的技术进步到更现代的技术(SVN由Git取代,XML由JSON取代,VB由C#取代)。这对于查看在简历上列出的内容来说是有意义的;开发者通常会指明他们不愿意使用他们认为过时的东西。
结论
我对“语言战争”没有任何兴趣,并且我也没有判定用户不喜欢使用的技术是否优劣。考虑到微软技术往往极化的,所以我要分享我的个人经验。我一直是Mac和UNIX的长期用户,几乎在大学和研究生院的所有编程都是围绕Python和R的。尽管如此,我很高兴加入一个.NET堆栈的公司,并且很庆幸进入这家公司——我热爱这个团队及其产品和数据。我不是在奉承,我很高兴我可以做我想做的工作,不会被强迫着去面对我不喜欢的东西。
如果你有兴趣分享你喜欢和不喜欢的技术,或者想迈向职业生涯中的下一步,那么你可以创建自己的Developer Story。