最不喜欢的编程语言

2020-08-12 07:07:09

哪些是最不受欢迎/最令人畏惧的编程语言?为什么他们会害怕,他们是否得到了公平的评估?

StackOverflow的2020年开发者调查包括一个表格,列出了“最受欢迎、最害怕和最想要的语言”。喜欢和想要的语言,嗯,有点无聊。我们害怕的编程语言要有趣得多。正如托尔斯泰所说:“所有幸福的家庭都是相似的;每个不幸的家庭都有自己的不幸。”

那么,这些不愉快、不受欢迎的语言是什么?为什么程序员害怕使用它们?考虑到这一机会,嗯,很难抗拒加入到一些理论中来,甚至可能说一些不明智的话,或者为一些因为错误的原因而不受欢迎的语言辩护。

更准确地说,StackOverflow列出了“使用该语言或技术进行开发,但没有表示有兴趣继续这样做的开发人员的百分比”。这听起来并不像“恐惧”那么可怕;“不再表达对使用一种语言的兴趣”是一种相当模糊的恐惧暗示。我已经做了很多不想再做的事情,包括编写产生shell脚本的troff宏。但我们不会担心这个的,对吗?

最不喜欢的语言列表与最广泛使用的语言列表相似,如RedMonk、Tiobe和O‘Reilly Learning上的搜索所示。这并不奇怪;Bjarne Stroustrup说“世界上只有两种语言:人们抱怨的语言和没人使用的语言。”这很有道理,至少在这项调查中是这样。如果你有数百万用户,让很多人不喜欢你并不难。因此,看到像C这样的多年生语言和相对较新的语言(如Java)一起出现在不受欢迎的语言列表中也就不足为奇了。

凯夫林·汉尼和我认为,最不喜欢的语言列表也反映了从事大型和遗留项目的程序员的意见,而不是短程序的意见。不喜欢一种语言可能是“因联想而内疚”:不喜欢只有最少文档的过时的大型代码库,以及修复的每个错误都会破坏其他东西的架构风格。因此,在榜单上看到曾经被广泛使用但不再受欢迎的语言也就不足为奇了。人们也很容易爱上一种古怪的语言,这种语言对一个项目来说是完美的,但你再也看不到它了。)(在我的例子中,那就是Icon。试试看,你可能会喜欢。它不在任何人的清单上。)。

最令人惊讶的是当一种语言不合时宜的时候:当它比你预期的明显更多或更少不受欢迎的时候。这就是我想要考虑的。因此,在处理完前期工作后,以下是一些观察结果:

Java:自从Java诞生以来,Java就一直是人们讨厌的语言。我参加了USENIX会议,James Gosling在会上第一次谈到了Java(早在1.0之前),人们离开了房间,谈论Java有多可怕-没有人真正使用过这种语言,因为它还没有发布。Java在本次调查中排名温和,排在第9位。鉴于Java的声誉,第9位应该很有人情味。如果这份清单上有一种语言与巨大的项目有关,那就是Java。而且有很多事情让人讨厌-尽管其中很多都与围绕Java养成的坏习惯有关,而不是语言本身。如果您发现自己在滥用设计模式,请退后一步看看您在做什么;将所有东西都变成设计模式是您不了解模式的真正用途的信号。(如果您需要复习一下,请转到Head First Design Pattern或经典的“四人帮”一书。)。如果你开始编写一个FactoryFactoryFactory,停下来好好走一走。如果您正在编写ClassWithAReallyLongNameBecauseThatsHowWeDoIt,,则不需要这样做。Java不会让您做到这一点。描述性名称是好的,而长得离谱的名称(以及深得离谱的包层次结构)则不是。我总是试图在每一行代码上都有一个连贯的想法。你不能在名字有半行长的时候这么做。但这不是Java的错,这是Java程序员的一种奇怪的文化怪癖。Java很冗长,但这不一定是问题。正如一位不是Java爱好者的人曾经告诉我的那样,类开始时的所有声明实际上都是文档,而文档在大型项目中尤其重要。一旦您知道了数据结构是什么,您就可以很好地猜测这个类是做什么的。我发现Java比大多数其他语言更容易阅读和理解,部分原因是它非常明确-而且大多数优秀的程序员意识到,他们花在阅读别人的代码上的时间比编写自己的代码要多。

Ruby:看到Ruby在榜单上排名第七,我感到非常惊讶。Ruby比Java更不受欢迎?这是怎么回事?我在Ruby编程中获得了一些乐趣;在很大程度上,它是一种“按我的意思做,不按我说的做”的语言,15年前,这个承诺让很多程序员坠入爱河。但是,如果我们在大型系统的上下文中考虑Ruby,这是有意义的。编写模棱两可的代码并不难,至少对于不经意的观察者来说是这样。如果函数或方法被“修补”为具有一些非标准行为,则很容易与其发生冲突,而这些修改很少记录在案。元编程已经在Rails等框架中得到了出色的使用,但我一直被许多Ruby库的“现在奇迹发生了”这一方面困扰。这些功能不利于大型项目。许多年前,我在Ruby或Rails会议上听到有人说:“没有任何大型项目;Ruby中的所有内容都减少了90%的代码行。”我一直认为LOC是一个愚蠢的指标。即使你相信Ruby减少了90%的代码行(我不相信),10%的大数字仍然是一个很大的数字,特别是如果你有责任消化这些代码,包括你背后发生的事情。Ruby很有趣,我仍然使用它来编写快速脚本(尽管我在很大程度上已经改用Python来实现这些),但是它是大型项目的选择语言吗?可能会让我在恐惧中奔跑。

R:R在“令人畏惧的名单”中排在第10位。我想那是因为一种误解。R两者都是或不是通用编程语言。几位统计学家告诉我,“你们程序员不明白。R是统计工作台,而不是编程语言。它不是Python的怪异版本。“。我已经和R玩过很多次了,但当我通读Vince Buffalo的生物信息学数据技能中的R教程时,我终于“明白了”(嗯,至少有一部分)。循环和if语句在教程结束时只有几页,这不是您学习的第一批概念之一。为什么?因为如果你正确使用R,你就不需要它们了。它的设计目的是让你不必使用它们。如果你来自一种更传统的语言,你可能会发现自己与这种语言作斗争,而不是使用它。条件逻辑和迭代有更好的方法。它还有助于使用可用的最好的工具和库:RStudio是一个非常好的R集成开发环境,而Tidyverse是一组用于处理数据的很棒的库。具有讽刺意味的是,这甚至可能是问题的一部分:有了优秀的图形库和Web框架,R突然看起来不那么像一个专门的统计工作台,而更像是一个通用的主力。许多程序员似乎正在重新审视R-也许是为了分析COVID数据?在2020年7月的报告中,R从Tiobe指数的第20位跃升至第8位。这是一个巨大的变化。不管是什么原因,如果你和它一起工作,而不是反对它,R将会是一个更令人愉快的环境。它是非常固执己见的-而且这些观点是统计学家的观点,而不是程序员的观点。

Python:Python在榜单上排在第23位-对于一种使用如此广泛的语言来说,这是非常低的。Python很容易喜欢;我喜欢Python仅仅是因为去掉了花括号。但除此之外,还有什么值得去爱的呢?我总是说“不要选择语言,选择库”,而Python有很棒的库,特别是用于数值工作的库。熊猫、Numpy、Scipy和SCRKIT-LING本身就是热爱Python的好理由。列表理解等功能消除了与传统控制结构相关的大量簿记工作。Python既适用于快速而肮脏的任务,也适用于较大的项目。如果我想用电子表格做点什么,我几乎总是用Python破解它。(我?透视表?)。而像Jupyter这样的工具使您可以在过程中轻松地记录您的实验。在“大项目”这一端,Python很容易读懂:不会因为嵌套的花括号或花括号而感到不知所措,而且由于理解、地图和其他特性,嵌套级别更少,而且它有合理的(尽管承认古怪)面向对象的特性。我又回到了我的一些旧的循环脚本,并且经常能够完全没有循环地编写它们。如果你想把一个连贯的想法放在一条线上,那是所有可能的世界中最好的。“Python的禅宗”中的一个重要口号是“显性胜过隐性”;您很少猜测别人的意思,或者试图破译一些“发生”的意想不到的魔力。Python赢得了最受欢迎语言奖,最大限度地减少了人们的反感。它有一套平衡的功能,这使得它既适合小项目,又适合大项目。

JavaScript:那么,我们应该怎么说JavaScript,榜单上的第16位呢?我什么都没有。这是一种生长在Ra中的语言

每周接收业内人士的见解-外加关于软件工程主题的独家内容、优惠和更多内容。

查看示例时事通讯