返回

文章详情

因为不够有趣:语言为何失败

Hacker News2026年8月10日 11:27

安德鲁·奥拉姆为Linux专业学院撰写了两篇系列文章,探讨编程语言为何兴衰(第一部分和第二部分)。大致上说,C、C++和JavaScript目前是永恒的,Java则是个不确定的选择;COBOL、FORTRAN、BASIC和Perl过上了体面的生活,被送到乡下退休;Pascal、Objective-C、PL/I、Ada和Tcl是错误的起步,而Ruby则处于泡沫状态。这是一个精彩的旅程,由一位在这个行业中编辑书籍已久的人所写。在快结束时,奥拉姆引用了西蒙·佩顿·琼斯的话,他观察到一种语言的被采纳与其技术优缺点“联系极为薄弱”,而社会和经济因素才是决定因素。这个引用就是文章的中心,而让人有点意外的是,它被埋在这么深的内容中;也许,为了适应人性进行工程设计,让这个引用成为主要论点变得困难,因为我们不想那么直白地阅读这一点,但这是真的。语言的采纳不仅仅是技术的,它还涉及人性。在这个引用之前的两部分内容是对这种观点的证据,虽然拼凑在一起,却从未以证据的方式组织。这个系列根据结果对语言进行排序:永恒、体面和失败。更有趣的是根据死亡原因进行分类,而原因来源于佩顿·琼斯压缩并且奥拉姆重复的一个简单观察:编程是由人完成的,对人来说,它是三重身份的结合。它是一种职业、一种艺术和一份工作。一种语言服务于同时从事这三种活动的人,而任何使这三者中的任意一项变得不必要困难的语言或工具,都不会在能够被替代的那一刻存活下来。职业是一种世界刚好给报酬的召唤:某种即使没有薪水,人们也会做的事情。艺术是人们出于热爱和(希望的)技能所做的事情,而工作是人们为了能够吃饭、看电视、在屋顶下睡觉和那些无聊的事情所做的日常工作。音乐家在每个工作日都经历这种三重身份:翻唱曲目是工作,原创曲目是艺术,而职业则是将乐器放在他们手中的原因,无论有没有预订。程序员也一样;我们只是不那么常说。以这种方式对尸体进行分类,它们可以清晰区分。有些语言作为工作失败:标准Pascal在没有可用字符串类型的情况下发布,而Tcl无法承载超过某一重量的程序,因此日常工作比必要时难得多。有些作为艺术失败:Ada和PL/I是为程序员选择的,而不是由程序员选择的,属于强制性语言,没有人喜欢强制性要求。有些作为职业失败:Perl的就业市场转向了Python并没有回来,而Haskell以避开成功为目标,并且达到了这一目标。在每种情况下,总有人让三者中的一个不必要地变得困难,而语言所依赖的人则去了更轻松、有趣或可行的地方。使生活变得困难的语言不会在能够被替代的那一刻存活下来。这个声明解释了奥拉姆清单上的每一个异常。对于大多数编写JavaScript的人来说,它作为一门艺术的失败,但它仍然存活,因为它仍然是浏览器的主要通用语言。Objective-C在艺术和工作上都很尴尬,但它因是进入最有利可图开发者生态系统的唯一入口而繁荣了十五年;一旦Swift出现,它就消失了,现在作为一种影子在其后代中保存。COBOL存活是因为替换它太困难和昂贵——一些公司正在注意到这一点并试图解决。如果他们成功,COBOL很可能会消失:一种100%有效且在编程时只有1%乐趣的语言。Ada在今天的生存是因为认证体系使其几乎无法替代。其困难是一纸常驻驱逐令。替代品一旦出现,这纸令就会被送达,而不会早于此。这就留下了C++的悬而未决,难以理解且永恒,显得似乎与这一切相矛盾。Rust也是,设计上就难并且在崛起。关键是有两种类型的困难,而系列混淆了它们。一种困难是小提琴的:精确、苛求,并且因为它精确和苛求而被选择。人们确实为了运动而在C++中进行代码高尔夫。人们写文章讲述借用检查器终于明白的那一天,就像弦乐演奏者谈论颤音不再被视为斗争的那一天。困难本身并非致命;缺乏足够回报的困难才是。C++和Rust有这样的回报,正如小提琴一样。另一种困难是摩擦:Ada的合规机制、标准Pascal缺失的部分、COBOL惊人而精确且苛求的结构语法,实际上并没有创造任何程序结构。没有人写过文章谈论Ada的文书工作何时明白。那种困难击中了所有三个轴线... 何为?一无所有。Ada和C++

赞助内容

NordVPN Next-gen Antivirus

本站免费、广告极少。如果觉得有帮助,可以请我们喝杯咖啡 —— 任何金额都对持续运营有实际帮助。

请我喝杯咖啡