当前位置: 首页 > 科技观察

为什么有些古老的编程语言没有消亡?

时间:2023-03-12 11:35:53 科技观察

我们热爱我们所知道的。许多当今著名的编程语言都非常古老。PHP语言已有20年,Python语言23年,HTML语言21年,Ruby语言和JavaScript语言19年,C语言42年。这是任何人都无法预料到的事情,即使是计算机科学家BrianKernighan也是如此。他是第一本C语言书籍的作者之一,该书至今仍在印刷。(C本身的导演丹尼斯里奇是Kernighan的合著者,并于2011年去世。)“我依稀记得在早期与编辑交谈,告诉他们我们已经售出大约5,000份,”最近采访Kernighan时说他告诉我。“我们做得更好了。没想到的是,2014年的教材,学生们还在用第一版的书。”C的持久性特别值得注意的是Google开发了一种新语言Go。,比C语言更有效地解决同样的问题。尽管如此,我还是很难想象Go会直接杀死C,不管它有多好。“大多数语言不会消失,或者至少很大一部分用户承认他们不会消失,”他说。“C在某些领域仍然占主导地位,所以它被禁足了。”为什么有些计算机编程语言比其他语言更受欢迎?因为开发人员选择使用它们。从逻辑上讲,这个解释就足够了,但要深入研究开发人员选择使用它们的原因就有点棘手了。分别来自普林斯顿大学和加州大学伯克利分校的研究人员AriRabkin和LeoMeyerovich花了两年时间研究并解决了上述问题。他们的研究报告《编程语言使用情况实例分析》记录了对超过200,000个Sourceforge项目和超过13,000个程序员投票的分析。他们的主要发现是什么?大多数时候,程序员会选择一种他们熟悉的编程语言。“我们使用的这些语言幸存下来是因为我们经常使用它们,”拉布金告诉我。“例如:天文学家经常使用IDL[InteractiveDataLanguage]来开发他们的计算机程序,并不是因为它有什么特别的亮点或其他特性,而是因为使用它的习惯。他们已经用这些语言构建了很棒的程序,并希望保持这种状态。换句话说,部分原因是这些语言创造的流行度仍然很高。当然,这并不意味着流行的语言没有变化。Rabkin指出,我们今天使用的C语言就像Kernighan***一样,与最初创建时并无二致,而且当时的C编译器与现代编译器并不完全兼容。”工程师。工程师被问及人们将使用哪种编程语言30年,他说,‘我不知道,但它总是被称为Fortran,’”Rabkin说。它最初设计时是不同的。人们通常会向其中添加特性,而不是删除特性,因为保持了向后兼容性,但某些特性会被修复。”向后兼容是指当语言升级时,程序员不仅可以使用升级后语言的新特性,而且不需要回头重写已经实现的旧代码块。旧的“遗留代码”语法规则不再使用,但放弃是有代价的。只要它们存在,我们就有理由相信相关语言也会存在。PHP:ACaseStudyofaLong-LivingLanguage遗留代码指的是用过时的源代码编写的程序或程序的一部分。想一想,企业或工程项目的关键程序功能是用没有人维护的编程语言编写的。因为它们仍然起作用,所以太困难或太昂贵在现代源代码中重写,所以它们必须保持在线,即使代码的其他部分发生了变化,程序员也必须不断地摆弄它们以确保它们能正常工作。任何为mo而存在的编程语言几十年前就存在某种形式的遗留代码问题,PHP也不例外。PHP是一个有趣的例子,因为它的遗留代码与今天的代码明显不同,支持者或批评者都会承认这是一个巨大的改进。AndiGutmans是已经成为PHP4标准编译器的ZendEngine**的先驱之一.Gutmans说他和他的搭档最初想改进PHP3,他们的工作非常成功,以至于PHP的原作者RasmusLerdorf也加入了他们的项目。结果变成了PHP4和他的继任者PHP5编译器。所以今天的PHP和它的祖先,原来的PHP完全不同。然而,在古特曼斯看来,一直存在一种偏见,即用旧版本的PHP语言编写的遗留代码上升到整个语言的水平。例如,PHP充满安全漏洞或不具备支持大规模计算任务的“集群”功能等概念。“批评PHP的人通常批评1998年的PHP版本,”他说。“这些人没有与时俱进。PHP今天有一个非常成熟的生态系统。”Gutmans说,如今,作为一名经理,他能做的最重要的事情就是鼓励人们升级到最新版本。“PHP有一个庞大的社区,足以支持你的遗留代码问题,”他说。“但总的来说,我们的大部分社区都在PHP5.3及更高版本上。”问题是任何语言的用户都不会全部升级到最新版本。这就是为什么Python用户仍在使用2000年发布的Python2,而不是2008年发布的Python3的原因。即使六年后,像谷歌这样的大多数用户仍然没有升级。发生这种情况的原因有很多,但它让许多开发人员承担了风险。“没有什么会死去,”拉布金说。“任何语言的遗留代码都将永远存在。重写的成本非常高,如果它不坏,就不要改变它。”开发人员是稀缺资源。当然,开发人员不会仅仅为了维护旧代码而选择这些代码。旧代码的编程语言。当谈到语言偏好时,Rabkin和Meyerovich发现年龄只是一个数字。拉布金告诉我:有一件事让我们印象深刻。这其中最重要的是,我们按年龄分组,问他们会多少种编程语言。我们主观上认为随着年龄的增长,我们会越来越多的语言,但实际上并非如此。25岁组和45岁组知道的语言数量相同。这里有几个重复的问题仍然存在。您了解一门语言的机会与您的年龄无关。换句话说,不只是年长的开发人员坚守传统,年轻的程序员也承认并采用古老的编程语言作为他们的母语。这可能是因为这些语言有有趣的开发库和特性,也可能是社区中的开发者是一群热爱这种开发语言的人。“世界上程序员关心的语言数量有限,”拉布金说。“如果一种语言表现出足够的独特价值,人们就会学习和使用它。如果您与与您交换代码和知识的人分享一种编程语言,您就会学会它。因此,例如,只要Python库存在并且社区对这门语言有经验,Python就会继续蓬勃发展。”研究人员发现,当谈到语言实现的功能时,社区是一个重要因素。虽然像Python和Ruby这样的高级语言并没有太大的区别,但是程序员总是很容易觉得一个比另一个优越。“Rails不一定要用Ruby编写,但它确实是,这就是社区因素发挥作用的地方,”Rabkin说。“例如,关于复活Objective-C语言的事情是苹果的工程团队说,‘让我们使用它吧’,他们别无选择。”最新的计算机语言具有巨大的惯性。Go语言如何超越C语言?如果合适的人或公司说它超越了它就超越了它。“这取决于谁沟通得更好,”拉布金说。开头图片来自BlakePatterson来自:http://readwrite.com/2014/09/02/programming-language-coding-lifetime作者:LaurenOrsini译者:runningwater校对:wxy