David Robinson 发布的文章

Stack Overflow Jobs 上,你可以创建你自己的 开发者故事 Developer Story 来展示你的成就,表现你的职业生涯进步。在创建开发者故事时,你可以对你使用的技术/编程语言添加喜欢或不喜欢的标签,如下图:

你可以对你使用的技术/编程语言添加喜欢或不喜欢的标签

这就给了我们一个机会可以观察到这数十万开发者的喜好和厌恶。有许多方法可以评估一个语言的流行程度,举个栗子说,我们经常使用 Stack Overflow 访问数或问题查看数来评估这样的趋势。但是,当技术人员在他们的简历中表达他们不喜欢某种技术时,这个数据集就是一个找出技术人群不喜欢某种技术的独有方式。

(我两年前曾经在我的个人博客上发表过一些这类分析,不过这篇文章使用了更新的数据集,以及有更多可视化结果和说明。)

编程语言

作为测量每个编程语言有多流行的指标,我们将看看它出现在某人“不喜欢”标签的时间与其出现在其他人的“喜欢”或“不喜欢”标签的频率相比。那么 50% 就意味着该语言喜欢与不喜欢各占一半,而 1% 则意味着 99 个人喜欢它而剩下 1 个人不喜欢它。(我们使用了这篇文章中描述的 经验贝叶斯 empirical Bayes 方法来计算平均值,并使用这个方法来计算得到 95% 置信区间)

让我们开始看看选出的语言列表(而不是像 Android 这样的平台或像 jQuery 这样的库),所有这些都曾在开发者故事中至少提及了 2000 次以上。

每个语言有多不招人喜欢

最不喜欢的语言是 Perl、Delphi 和 VBA ,它们远远把其它语言抛下。接着的第二梯队是 PHP、Objective-C、 Coffeescript 和 Ruby。我们的团队很高兴地看到,R 语言相对于喜欢它的人数来说,对它不喜欢的人数是最少的。

如果你读过我们另外一些关于编程语言增长或萎缩的文章,你也许会注意到那些较少被不喜欢的语言往往是增长较快的。 在 Stack Overflow 上,R、Python、Typescript、Go 和 Rust 全是快速增长的编程语言(我们之前专门对 PythonR 做过分析),而且它们全都属于看法比较 分化 polarizing 的语言。类似的,大量萎缩的语言,比如 Perl、Objective-C 和 Ruby,如我们之前观察到的那样,在我们网站上它处于快速萎缩状况。

我们可以通过将每种语言的规模和增长与不喜欢它的人的百分比进行比较来进行调查,橙色点代表最不喜欢的语言。 为了使我们的分析与前几个帖子保持一致,我们将统计数据限制在高收入国家(如美国,英国,德国和加拿大)。

语言的增长率与对该语言的不喜欢进行对比

一般来说,编程语言的增长率和它有多不招人喜欢方面存在相关性。几乎每个在开发者故事中提及不喜欢的比率超过 3% 的语言都在 Stack Overflow 流量上处于萎缩状态(除了十分两极化的 VBA,它仍有轻度增长)。而不喜欢数量较少的语言,如 R、Rust、 Typescript 和 Kotlin,它们全处于快速增长领域(Typescript 和 Kotlin 增长的太快,以至于都跑出了上图范围)。

一个突出的编程语言是函数式编程语言 Clojure;几乎没有人表示过不喜欢它,但是它仍然处于快速萎缩中(根据问题查看情况,它在去年才开始萎缩)。另外一个例外是 MATLAB,它处于快速萎缩,但是没有很多人表示过不喜欢它。这可能是由于调查样本的数据所限:任何一个 Web 开发人员都可能对 PHP、C# 或 Ruby 有意见,但是不从事数据分析的人没理由对 MATLAB 不满意。(这也可能是 R 较少被提及“不喜欢”的部分原因)

我们不一定说这里存在因果关系——部分程序员不喜欢就会导致该语言会被抛弃。 另一种可能是,如果人们觉得这种语言已经越来越不流行,那么人们就会觉得很自然地表达他们也不喜欢了。 同样可以想象的是,开发人员经常使用这个字段来记录他们曾经使用的技术,但是不会再使用该技术了。 这将导致那些自然而然地“被替代的”技术就一直停留在“不喜欢”标签里面。

最不喜欢的和最喜欢的

上面的分析仅考虑了编程语言,不涉及操作系统、平台或库(框架)。那么就整体而言,最不喜欢的技术是什么?为了专注于我们有足够数据的更主要的技术,我们其限制为至少提及了 1000 次的技术。

最不喜欢的技术

最不喜欢的其中有几个是微软的技术,特别是 IE 和 VB,以及 “微软” 标签(“评估” 也出现在这个列表中,但是没那么糟糕)。有个好消息是,大多数人都不喜欢 Flash。此外,较老的语言,比如 COBOL、 Fortran 和 Pascal 也出现在此处。

值得再次强调的是,这不是对技术及其品质或受欢迎程度的批评。 这只是衡量哪些技术激起了强烈的消极情绪,至少在一部分愿意公开分享其感受的开发人员中如此。

我们也集中观察了那些最流行的技术、那些最不可能被不喜欢的技术(这次,由于喜欢标签出现的比较多,我们仅关注那些被提及至少 10000 次的)。

哪些技术最令人喜欢

Git 也许是许多开发者的沮丧源头(绝对包括我!),但人们很少在简历中承认这一点,这是因为它是我们的开发者故事中最受欢迎的标签之一。 R 也出现在了这个列表,但它并不是唯一一个没有争议的与数据科学相关的语言。 机器学习被 23000 人所喜欢,而且很少被人不喜欢。 诸如 Python-3.X、CSS3 和 HTML5 等标签可能表明开发者很少指定他们不喜欢技术的特定版本(如果他们会指定的话)。 当然,jQuery 在 Stack Overflow 上一直是如此受欢迎

分化的标签网络

我们可以把所有这些标签组合成一个网络。在最近的一篇文章中,Julia Silge 展示了我们如何构建一个代表整个软件生态系统的技术网络。 如果我们根据每个标签不喜欢的程度对节点进行着色,我们可以了解该生态系统的哪些部分比其它部分更有争议。

分化的标签网络

通过将开发者故事的标签放置到次生态系统中,该网络揭示了哪些类型的标签趋于两级分化。 在微软(以 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 栈的公司,我很高兴我来了 —— 因为我喜欢这个团队、产品和数据。 我不能代表其他人说话,但我很高兴自己可以从事于自己想做的事情,而不是那些不想要做的事情。

如果您有兴趣分享您喜欢和不喜欢的技术,并想找到您职业生涯的下一份工作,那么您可以创建自己的开发者故事

想找一份你喜欢的技术的工作? 在 Stack Overflow Jobs 找到你的下一份工作,在那里你可以搜索你喜欢做的技术工作。

我们最近探讨了那些世界银行定义为高收入的富裕国家是如何倾向于使用与世界上其它地区不同的技术。这其中我们看到的最大的差异在于 Python 编程语言。就高收入国家而言,Python 的增长甚至要比 Stack Overflow Trends 等工具展现的或其他针对全球的软件开发的排名更高。

在本文中,我们将探讨在过去五年中 Python 编程语言的非凡增长,就如在高收入国家的 Stack Overflow 流量所示那样。“增长最快”一词很难准确定义,但是我们认为 Python 确实可以称得上增长最快的主流编程语言。

这篇文章中讨论的所有数字都是针对高收入国家的。它们一般指的是美国、英国、德国、加拿大等国家的趋势,他们加起来占了 Stack Overflow 大约 64% 的流量。许多其他国家,如印度、巴西、俄罗斯和中国,也为全球软件开发生态系统做出了巨大贡献,尽管我们也将看到 Python 在这方面有所增长,但本文对这些经济体的描述较少。

值得强调的是,一种语言的用户数量并不能衡量语言的品质:我们是在描述开发人员使用的语言,但没有规定任何东西。(完全披露:我曾经主要使用 Python 编程,尽管我已经完全切换到 R 了)。

Python 在高收入国家的增长

你可以在 Stack Overflow Trends 中看到,Python 在过去几年中一直在快速增长。但是对于本文,我们将重点关注高收入国家,考虑的是问题的浏览量而不是提出的问题数量(这基本上结果是类似的,但是每个月都有所波动,特别是对于较小的标签分类)。

我们有关于 Stack Overflow 问题的查看数据可以追溯到 2011 年底,在这段时间内,我们可以研究下 Python 相对于其他五种主要编程语言的增长。(请注意,这比 Stack Overflow Trends 的时间范围更短,它可追溯到 2008 年)。这些目前是高收入国家里十大访问最高的 Stack Overflow 标签中的六个。我们没有包括的四个是 CSS、HTML、Android 和 JQuery。

2017 年 6 月,Python 是成为高收入国家里 Stack Overflow 访问量最高的标签的第一个月。这也是美国和英国最受欢迎的标签,以及几乎所有其他高收入国家的前两名(接着就是 Java 或 JavaScript)。这是特别令人印象深刻的,因为在 2012 年,它比其他 5 种语言的访问量小,比当时增长了 2.5 倍。

部分原因是因为 Java 流量的季节性。由于它在本科课程中有很多课程,Java 流量在秋季和春季会上升,夏季则下降。到年底,它会再次赶上 Python 吗?我们可以尝试用一个叫做 “STL” 的模型来预测未来两年的增长, 它将增长与季节性趋势结合起来,来预测将来的变化。

根据这个模型,Python 可能会在秋季保持领先地位或被 Java 取代(大致在模型预测的变化范围之内),但是 Python 显然会在 2018 年成为浏览最多的标签。STL 还表明,与过去两年一样,JavaScript 和 Java 在高收入国家中的流量水平将保持相似水平。

什么标签整体上增长最快?

上面只看了六个最受欢迎的编程语言。在其他重大技术中,哪些是目前在高收入国家中增长最快的技术?

我们以 2017 年至 2016 年流量的比例来定义增长率。在此分析中,我们决定仅考虑编程语言(如 Java 和 Python)和平台(如 iOS、Android、Windows 和 Linux),而不考虑像 AngularTensorFlow 这样的框架(虽然其中许多有显著的增长,可能在未来的文章中分析)。

xkcd - Fastest-Growing

由于上面这个漫画中所描述的“最快增长”定义的激励,我们将增长与平均差异图中的整体平均值进行比较。

Python 以 27% 的年增长率成为了规模大、增长快的标签。下一个类似增长的最大标签是 R。我们看到,大多数其他大型标签的流量在高收入国家中保持稳定,浏览 Android、iOS 和 PHP 则略有下降。我们以前在 Flash 之死这篇文章中审查过一些正在衰减的标签,如 Objective-C、Perl 和 Ruby。我们还注意到,在函数式编程语言中,Scala 是最大的并且不断增长的,而 F# 和 Clojure 较小并且正在衰减,Haskell 则保持稳定。

上面的图表中有一个重要的遗漏:去年,有关 TypeScript 的问题流量增长了惊人的 142%,这使得我们需要去除它以避免压扁比例尺。你还可以看到,其他一些较小的语言的增长速度与 Python 类似或更快(例如 R、Go 和 Rust),而且还有许多标签,如 Swift 和 Scala,这些标签也显示出惊人的增长。它们随着时间的流量相比 Python 如何?

像 R 和 Swift 这样的语言的发展确实令人印象深刻,而 TypeScript 在更短的时间内显示出特别快速的扩张。这些较小的语言中,有许多从很少的流量成为软件生态系统中引人注目的存在。但是如图所示,当标签开始相对较小时,显示出快速增长更容易。

请注意,我们并不是说这些语言与 Python “竞争”。相反,这只是解释了为什么我们要把它们的增长分成一个单独的类别,这些是始于较低流量的标签。Python 是一个不寻常的案例,既是 Stack Overflow 中最受欢迎的标签之一,也是增长最快的其中之一。(顺便说一下,它也在加速!自 2013 年以来,每年的增长速度都会更快)。

世界其他地区

在这篇文章中,我们一直在分析高收入国家的趋势。Python 在世界其他地区,如印度、巴西、俄罗斯和中国等国家的增长情况是否类似?

确实如此。

在高收入国家之外,Python 仍旧是增长最快的主要编程语言。它从较低的水平开始,两年后才开始增长(2014 年而不是 2012 年)。事实上,非高收入国家的 Python 同比增长率高于高收入国家。我们不会在这里研究它,但是 R (其它语言的使用与 GDP 正相关) 在这些国家也在增长。

在这篇文章中,许多关于高收入国家标签 (相对于绝对排名) 的增长和下降的结论,对世界其他地区都是正确的。两个部分增长率之间有一个 0.979 Spearman 相关性。在某些情况下,你可以看到类似于 Python 上发生的 “滞后” 现象,其中一个技术在高收入国家被广泛采用,一年或两年才能在世界其他地区扩大。(这是一个有趣的现象,这可能是未来文章的主题!)

下一次

我们不打算为任何“语言战争”提供弹药。一种语言的用户数量并不意味着它的质量,而且肯定不会让你知道哪种语言更适合某种特定情况。不过,考虑到这点,我们认为值得了解什么语言构成了开发者生态系统,以及生态系统会如何变化。

本文表明 Python 在过去五年中,特别是在高收入国家,显示出惊人的增长。在我们的下一篇文章中,我们将开始研究“为什么”。我们将按国家和行业划分增长情况,并研究有哪些其他技术与 Python 一起使用(例如,估计多少增长是由于 Python 用于 Web 开发而不是数据科学)。

在此期间,如果你使用 Python 工作,并希望你的职业生涯中进入下一阶段,那么在 Stack Overflow Jobs 上有些公司正在招聘 Python 开发


via: https://stackoverflow.blog/2017/09/06/incredible-growth-python/

作者:David Robinson 译者:geekpi 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出