计算机语言排行榜
关于那些被提及的“几乎已经消亡”的语言,它们是否真的消亡了呢?答案并非如此。它们中的许多仍然在计算机领域发挥着重要的作用,只是可能在我们日常的开发工作中不常被提及。比如 Smalltalk,尽管现在它的使用率不高,但它对编程领域的影响是不可忽视的。
在谈论编程语言的重要性时,我们不能仅仅看它们的流行程度,还需要关注它们对后续语言发展的影响。在这里,我想先分享一下寻找编程语言影响力的方法。仅仅知道某种语言是首个拥有某种特性的并不足以证明这种语言真正影响了其他语言。我们需要寻找的是直接的引用或者作者的声明等实证证据。例如,虽然 Absys 可能是首个逻辑编程语言,但 Prolog 对逻辑编程的影响更为显著。
接下来,我想一下两种重要的编程语言:COBOL和ALGOL。
COBOL,这个诞生于商业领域的语言,虽然在今天看起来有些过时,但在其诞生的时代,它的重要性无可估量。COBOL 与其他三种语言(ALGOL、FORTRAN 和 LISP)共同构成了四种“母”语言。尽管 COBOL 在现代计算中很少出现,但它对记录数据的概念进行了革新。在 COBOL 中,我们可以读取结构化文件,并将其解构为代表变量,这一特性预示了现代结构体的诞生。由于多种原因,包括学术界的忽视和编译器技术的落后,COBOL 逐渐失去了市场份额。
而ALGOL,作为一种形式化的“伪代码”,旨在服务算法研究。尽管它可能是最早“消亡”的语言之一,但它的影响力却不容忽视。ALGOL 影响了现代语言的许多核心特性,如词法作用域、结构化编程、嵌套函数等。可以说,没有ALGOL就没有我们今天所熟知的大多数现代编程语言。
历史的传承总是经过岁月的沉淀与演绎。尽管某些语言可能不再流行,但它们对计算机领域的影响是永恒的。它们像星辰一样,在我们的编程夜空中熠熠生辉。每一种语言的消亡与新生都是这个领域发展的必然结果,也是我们不断前行的步伐中的一部分。在这个过程中,我们应该铭记每一个里程碑式语言的贡献和影响,因为它们共同塑造了我们今天的编程世界。ALGOL:研究语言的沉寂之路
ALGOL是一种专为算法研究而设计的研究语言,而非商业语言。其规范并未定义任何输入输出(I/O),这使得它在实践中难以应用。尽管如此,人们仍然努力扩展了ALGOL,通过添加I/O和额外的数据结构,开发出了大量的类似ALGOL的语言。这些语言包括JOVIAL、SIMULA、CLU和CPL。后来的语言大多基于这些类ALGOL语言进行扩展,而非直接基于ALGOL。我们称C为“类ALGOL”,但实际上它更多地是基于BCPL和CPL。可以说,ALGOL的追随者们为其打造了众多的“孩子”,但最终未能将其发扬光大。
到了上世纪六十年代,人们尝试将ALGOL扩展到更广泛的领域,如ALGOL-68。尽管ALGOL-68试图摆脱其前身的一些限制,但它并未获得广泛的认可。尽管如此,ALGOL的血脉仍在延续,通过Nikolaus Wirth的Pascal得以留存至今。
APL:符号语言的崛起与衰落
APL的诞生源于Ken Iverson在1962年的创新思想,最初是一种用于数组数学的手写表示法。IBM后来将其作为编程语言推广使用。APL专注于数组处理,能够精确处理大规模的数字块。其独特的符号语法让许多人对它产生了误解,甚至被誉为“奇怪的符号语言”。尽管如此,APL因其内存需求低而在大型机上广受欢迎。更重要的是,APL引入了操作整个数组的概念,为后来的R、numpy、pandas、Matlab等语言提供了灵感。APL的直系后代包括J、Dyalog、K、Q等,虽然在金融领域仍有一定应用,但未能取得更大的成功。其消亡的原因在于特殊的键盘需求以及无法处理异构数据等问题。尽管如此,APL的思想工具价值仍然被广大程序员所认可。
BASIC:微型计算机时代的宠儿
BASIC起源于上世纪六十年代,最初是一种简化了的类FORTRAN语言,旨在帮助非工程技术人士使用计算机。BASIC的真正腾飞是在微型计算机时代。由于其精简性和易于理解的特点,BASIC成为了早期程序员的通用语言。BASIC的社会影响力巨大,为家庭和孩子带来了编程的机会。许多有影响力的程序员在80年代和90年代都是通过BASIC编程起步的。BASIC还助力Office工具的发展,微软将BASIC发展为Visual Basic,并用作Office的宏语言。可以说BASIC既有巨大的技术影响力也有广泛的社会影响力。它不仅推动了编程普及化进程,也为后来的编程语言发展奠定了基础。
这些语言的兴衰史为我们展示了编程语言发展的多样性和复杂性。从ALGOL到APL再到BASIC,每一种语言都有其独特的价值和影响。尽管它们中的许多已经消失在历史的尘埃中但它们都为编程领域的发展做出了重要贡献。这也提醒我们尊重和理解每一种语言的独特性避免过于狭隘地看待编程领域的发展应该看到其多元性和包容性这样才能更好地推动编程技术的不断进步和创新发展。随着技术的不断进步,编程语言也在不断地发展和演变。今天,我们将几种曾在计算机领域留下深刻影响的编程语言的基本背景、重要性和消亡原因。
让我们回顾一下BASIC。作为一种入门级的编程语言,BASIC曾广泛应用于儿童和初学者。随着时间的推移,它逐渐被更先进的语言所取代。尽管它在特定利基市场中的地位得以巩固,扩展到了OpenOffice和LibreOffice中,但最终还是被JavaScript所取代,成为一种遗留的宏语言。消亡的原因在于,BASIC被视为一种“次要”的语言,真正的程序员更倾向于使用更高级的语言,如Pascal和C。尽管BASIC仍在儿童教育领域中延续了一段时间,但它似乎已经失去了在这个利基市场的地位。
接下来是PL/I。PL/I是IBM在1966年开发的一种语言,旨在简化工程和商业计算。它试图结合FORTRAN和COMTRAN的特点,成为一个通用的计算语言。PL/I并没有像预期的那样取得成功。尽管它引入了许多先进的概念,但由于其复杂性,它并没有得到广泛的接受。消亡的原因之一是FORTRAN和COBOL程序员对其的不认可,认为它过于复杂且融合了两种截然不同的语言特性。随着微型计算机时代的到来,PL/I逐渐被BASIC所取代。
SIMULA 67是另一种具有重要影响但逐渐消亡的编程语言。它是由Ole Dahl和Kristen Nygaard在1967年开发的,扩展了ALGOL来进行仿真。SIMULA 67被视为对象编程的先驱之一,启发了许多后来的编程语言。SIMULA 67的消亡部分是因为其运行速度较慢。许多开发者认为它不适合大规模使用,因此他们开始在SIMULA的基础上构建更快、更简单的语言。尽管如此,SIMULA 67仍然被视为对象编程领域的重要里程碑之一。
Pascal是一种由Niklaus Wirth在1970年开发的编程语言,它吸取了ALGOL-60的精髓并去除了ALGOL-68的复杂性。Pascal曾非常受欢迎,特别是在教育领域。随着其他更现代化的语言的出现,Pascal逐渐失去了市场份额。尽管如此,Pascal仍然是编程语言历史上的重要里程碑之一,它对整个编程领域产生了深远的影响。
这些语言都有其独特的优点和贡献,但也面临着不断发展和适应新技术趋势的挑战。它们的消亡并不意味着它们不重要或过时,而是反映了编程领域不断发展和演变的本质。今天,这些语言的许多概念仍然影响着现代编程语言和框架的设计和开发。希望以上内容能让你深入了解这些编程语言的背景和重要性及其消亡的原因。Pascal编程语言对学术界的深远影响不容忽视。它不仅将ALGOL的语法带出了学术领域,更赋予了其独特的“Pascal风格”。特别是其赋值语法:=,已成为许多语言的标准符号。尽管Pascal在某些方面并不以创新性见长,但其变种却在软件开发领域展现了巨大潜力。其中,Wirth提出的“逐步细化”概念,为严谨软件的编写开辟了新的道路,催生了Modula和Euclid等语言的诞生。
Pascal的陨落并非由于其缺乏创新性或竞争力,而是受到多方面因素的影响。尽管Pascal与C的竞争存在,但它仍然持续了一段时间。有人认为Pascal消亡的原因可以归结为某篇特定论文的观点,但实际情况远比这复杂。即便是在今天,Delphi依然能在TIOBE和PYPA排名中占据一席之地。尽管Pascal可能并没有像某些语言那样在市场上获得广泛的认可,但其对编程语言发展的贡献仍不容忽视。扩展阅读中关于Pascal和其继承者的讨论值得深入。
与此语言的发展总是在不断创新与迭代中前进的。诸如CLU、ML等语言的出现和消失都在向人们展示编程语言的变迁历程。这些语言有着自己的历史背景和重要性。CLU诞生于Liskov想要处理抽象数据类型的初衷,它对现代编程语言产生了深远的影响。迭代器、抽象数据类型、泛型等概念都源于CLU。尽管它可能没有被大众广泛接受,但它对编程语言的发展起到了巨大的推动作用。ML作为一种代数编程语言,也极大地影响了现代定理的校验和类型化函数式编程的发展。它的类型推断功能为类型化FP进入生产应用铺平了道路。尽管近年来Haskell等语言在FP领域获得了更多的关注,但ML对类型理论的影响仍然深远。至于消亡原因,ML虽然具有许多有趣的特性,但由于其过于专注于定理校验领域而未能吸引更广泛的关注。与此Smalltalk作为首个提出面向对象概念的语言也值得我们深入了解。它的影响不仅局限于面向对象编程领域,更在某种程度上影响了软件编程的整个生态系统。尽管Smalltalk不是首个使用对象的语言但它无疑是推广面向对象概念的重要力量。总体来说这些语言的演变和衰落过程都为现代编程语言的形成和发展提供了宝贵的经验和教训值得深入研究。通过它们我们可以看到编程语言的多样性和创新性以及如何在激烈的市场竞争中找到适合自己的位置并持续发展下去的重要性。Smalltalk:一种引领潮流却鲜为人知的语言
许多人热衷于将Smalltalk示例转换为C++,尽管少数人选择用另一种语言来表达,但几乎每个人都会接触并使用Smalltalk。这种语言不仅仅是一种工具,它传播了对象作为共享数据的概念,对现代编程领域产生了深远影响。
Smalltalk的存在引领了CORBA的诞生,并启发了可计算Actor模型的创建。尽管很多人认为Smalltalk的衰落是因为人们转向C++的使用,但这并非事实的全部。诚然,Smalltalk面临过一些挑战,如与其他工具交互的困难以及运行时性能的问题。即使在1990年代,它仍在商业领域发挥着重要作用,许多人曾预测它将成为一种主导的商业语言。
当我们谈论编程语言的发展趋势时,不得不提的是Java。Java无疑是过去几十年中最具影响力的编程语言之一。Java并非无懈可击,它也边缘化了许多其他语言,如Eiffel、Ada95等。有趣的是,我们不应过于关注为什么Smalltalk会消亡,而应思考为什么像C++这样的语言能够生存并繁荣发展。我认为,C++与C语言的良好互操作性,使其更容易融入现有的遗留系统,是其生存的一大原因。
我们不应忘记,Smalltalk只是众多已经消亡的重要语言之一。许多其他语言,如ALPHARD、ALTRAN、Argus等,都为现代编程领域做出了贡献。它们中的许多想法在消失了几十年后,其基因仍在影响着现代编程。
最具影响力的语言可能从未成为主流,它们鼓舞了人们,也启发了其他人。在众多的编程语言中,《编程语言百科全书》列出了8,000多种。这些语言中的许多想法并未消失,而是被遗忘在了历史的角落。如果没有人听说过SIMULA,或者Liskov从未分享过CLU,我们将失去多少宝贵的思想呢?这正是我们研究历史的原因——去了解我们丢失了什么,然后重新找回它。
这篇文章的初稿是在我的时事通讯上首次分享的。如果你觉得它有趣的话,欢迎订阅我的时事通讯了解更多内容。同时感谢MiikkaKoskinen、KevlinHenney、EricFischer和LeviPearson对的指正和反馈。这些被遗忘的语言的历史和故事是令人着迷的。比如关于Lisplikes的起源、BASIC与JOSS的争议、PL/I与重载的关系等等。这些故事让我们思考编程语言的演变以及它们对我们今天编程方式的影响。这些故事也提醒我们历史是复杂的,我们需要去深入了解并理解它才能真正地把握现在和未来。