100

程序员最讨厌的编程语言

 6 years ago
source link: https://zhuanlan.zhihu.com/p/30766124?
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

程序员最讨厌的编程语言

一个相信理想主义的现实主义者
简评:有时候看看 Stack Overflow 的数据还蛮有意思的,最近他家就发布了一篇调查博客,试图找出最不受欢迎的编程语言。PHP 就上榜了(滑稽 ~

Stack Overflow Jobs 上,你可以创建你自己的 Developer Story 来展示成就,表现你的职业生涯进步。在创建 Developer Story 时,你还可以对你使用的技术添加喜欢和不喜欢的标签,如下图:

v2-45e0e4a22078ff4656423ce71dc1e454_720w.jpg

这就给了我们一个机会去观察这数十万开发者的喜好和厌恶。

有许多方法可以评估一个语言的流行程度,举个例子,我们经常使用 Stack Overflow 访问数或问题查看数来评估这样的趋势。但是,当技术人员在他们的简历中表达他们不喜欢某种技术时,这个数据集就是一个找出技术人群不喜欢某种技术的独有方式。

编程语言

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

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

  • 最不喜欢的语言是 Perl、Delphi 和 VBA ,它们远高于其他语言
  • 第二梯队是 PHP、Objective-C、 Coffeescript 和 Ruby
  • R 语言相对于喜欢它的人数来说,对它不喜欢的人数是最少的。

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

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

一般来说,编程语言的增长和它有多不招人喜欢方面存在相关性。

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

分化的标签网络(Network of polarizing tags)

我们可以把所有这些标签组合成一个网络。如果我们根据每个标签不喜欢的程度对节点进行着色,我们可以了解该生态系统的哪些部分比其它部分更有争议。

通过将 Developer Story 的标签放置到次生态系统中,该网络揭示了哪些类型的标签趋于两级分化。

在微软(以 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# 取代)。

这对于人们想在简历中列出的内容是有意义的;开发者通常会表明他们不愿意使用他们认为过时的东西。

总结

本文对挑起「语言战争」并没有任何兴趣,同时也不会对用户分享的喜欢或不喜欢的任何技术进行批判。 我(David Robinson)是一个 Mac 和 UNIX 终身拥趸,几乎我所有的大学和研究生的编程学习都围绕着 Python 和 R。尽管如此,我很高兴能够加入一个 .NET 栈的公司,我很高兴我来了 —— 因为我喜欢这个团队、产品和数据。 我不能代表其他人说话,但我很高兴自己可以从事于自己想做的事情,而不是那些不想要做的事情。


原文链接:

What are the Most Disliked Programming Languages?

分类收藏:

产品 | 设计 | 技术 | HackLife | Photography

推荐阅读:

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK