编程语言发展至今,有的语言仍然炙手可热,而有的语言已经敲响了丧钟。看看如下这张编程语言的历史纪年表,你听说过的有多少种?
本文不是为了哀悼这些编程语言,而是让我们找到前进的力量,本文提及的这11种语言虽然不再流行,但它们为现代编程语言的发展奠定了基础,并为科学家、开发人员和工程师铺平了道路。
Ada
该语言根据英国数学家 Ada Lovelace(埃达·洛夫莱斯)命名,她是史上最早的程序员之一。1991 年,Ada 受美国国防部的委托,整合了美军当时使用的 450 多种编程语言。
根据维基百科的说明:
“Ada 是一种结构化的、静态类型的、命令式的、范围广泛的、面向对象的高级计算机编程语言。”
Ada 的设计初衷就在于完成如此多的任务,所以最终结果就是一个大而全且十分复杂的编译器。
1991 年,美国国防部要求所有软件都使用 Ada(Ada 强制令),但经常会破例允许一些软件不使用 Ada。
1997年,随着美国国防部采用商业技术,Ada 强制令也被取缔了。
然而,Ada 在商业上的使用并没有随着 Ada 强制令的取缔而结束。如今,Ada 仍广泛用于医疗以及其他关键任务系统编程。
Algol
Algol 最初是由一群计算机科学界的重量级人物于 19 世纪 50 年代设计的,作为计算机协会(Association for Computing Machinery,简称ACM)描述算法的标准。
Algol 的设计旨在避免 FORTRAN 的一些常见的问题,它极大地影响了后来许多其他命令式语言,包括 PL/I、Simula、BCPL、B、Pascal 和 C。
60 年代之后,Algol 不再有任何发展,同时这门编程语言的发展也走到了尽头,逐步让位于其他编程语言。
APL
APL 创建于 20 世纪 60 年代,是一种动态类型的编程语言,其核心技术是多维数组。APL 极大地影响了概念建模、电子表格、函数式编程以及计算机数学包的发展,并启发了其他若干编程语言。
由于 APL 鼓励程序员使用多维数组和符号,因此用 APL 编写的代码相对比较复杂,而且对于不熟悉该语言的人来说理解难度很大。
如今仍有一些顽强的 APL 程序员坚守在物理或数学实验室中,与非常复杂的算法奋战。
Forth
Forth 是一种无类型、面向堆栈的编程语言,专为计算器、计算机辅助设计 (CAD)、天文和空间应用等嵌入式系统而设计。这门编程语言适用于编写高效、可靠、执行速度非常快的小型应用的代码。
虽然 Forth 主要用于嵌入式领域,但很多操作系统的引导加载程序也用到了该语言。除了这些领域之外,大多数程序员也只是听说过该语言,但并未真正使用过。
LISP
LISP 诞生于 20 世纪 50 年代后期,其最有名的经典数据结构之一便是链表。链表是一种非常高效的机制,可用于在单个结构中处理多种数据类型。LISP 提出的许多概念在如今数据量很大、规模非常紧凑的系统中都有使用。
LISP 有很多后续的衍生语言,最著名的便是 Common Lisp 和 Scheme。
在经历了多年的逐步下滑之后,随着研究人员寻找为小型系统添加智能功能的方法,LISP 的发展也出现了复苏。但在 AI 的世界之外,LISP 并不是很成功。
Logo
Logo 最初是于 20 世纪 60 年代后期设计的,是一种被用作教授编程概念的语言。Logo 的形式非常类似于 LISP 语言,也被称为面向逻辑的编程语言。
如今这门编程语言主要应用于人工智能、数理逻辑和发展心理学领域。
Logo 最有名的是海龟绘图,后来许多其他编程语言也声称自己使用了“海龟绘图”。尽管这些语言并不是真正的 Logo 语言,但依然让大众觉得很迷惑,最终这也导致 Logo 语言开始走下坡路。
Pascal
Pascal 是 Niklaus Wirth 于 20 世纪 70 年代设计的编程语言,旨在教授结构化编程的概念,这门语言对个人计算机编程产生了重要影响。
80 年代中期,Borland Turbo Pascal(不同于 Pascal)成为了一种流行的开发语言,用于开发各种软件,包括从构建 Apple Lisa 的软件到编写 Donald Knuth 的 TeX 系统。
随着结构化编程逐渐被面向对象编程所取代,Pascal 的受欢迎程度也随之下降。如今的 Pascal 还有一批忠实粉丝,只不过该语言的辉煌岁月已然结束。
Modula-2
Modula-2 是一种命令式、结构化、模块化的编程语言,由 Niklaus Wirth 于 20 世纪 70 年代开发。这门语言的设计目的是成为 Pascal 语言的继任者。
Modula-2 最重要且最显著的特征是模块的概念(一个代码块,可被程序的其余部分使用)。Modula-2 以及模块化编程成为了后来编程范例(例如面向对象编程)的基础。
虽然从商业的角度来看,Modula-2 的某些特性与 Pascal 相似,甚至比 Pascal 更好,但它最终未能像 Pascal 一样流行,如今几乎已被遗忘。
PL/I
PL/I 是 IBM 于 20 世纪 60 年代设计的一种通用的、过程式的、命令式的、结构化的编程语言。
PL/I 的目标是改进 FORTRAN 的数值能力,以及加强 COBOL 的字符串和业务流程能力。最终,PL/I 成为了一种强大的结构化语言,可用于各行各业,从控制系统到会计系统,再到科学分析。
作为一种编程语言,PL/I 的流行度从未达到 IBM 的预期,最终也让位于 IBM 的其他语言,比如 CMS-2、SP/k、B、REXX 和 AS/400 控制语言等。
RPG
RPG(Report Program Generator,报告程序生成器)是为 IBM 计算机(从穿孔卡和 IBM 1401 到 IBM Power i 大型机,再到 AS/400 等 IBM 中端计算机)编写传统应用程序而设计的编程语言。
尽管 RPG 的市场定位与 FORTRAN 和 COBOL 相同,但 IBM 依然决定放弃这门语言,最终导致它在 IBM 内部衰落。不过,当前 RPG IV 仍被一众 RPG 程序员广泛使用,他们别无选择,尤其是在大量部署 IBM 计算机的地方。
RPG 曾是众多报纸和杂志出版物的热门话题,如今逐渐被现代开发平台和硬件架构所取代,如高端 LINUX/UNIX 和 JEE。
Smalltalk
Smalltalk 就像编程语言中的“俳句”。Smalltalk 是 Xerox PARC 的一群计算机科学巨星于 20 世纪 70 年代末 80 年代初设计的,它影响了许多面向对象的编程语言,特别是 AppleScript、Common Lisp 对象系统、Dart、Dylan、Erlang、Etoys、Falcon、Go 、Groovy、Io、Ioke、Java、Lasso、Lisaac、Logtalk、Newspeak、NewtonScript、Object REXX、Objective-C、PHP 5、Perl 6、Python、Ruby、Scala、Scratch 和 Self。
Smalltalk 的消息传递模型仅使用了六个保留关键字,Smalltalk 也因此成为了热门话题。
现如今,Smalltalk 仍广泛用作大学里面向对象编程的教学工具,但在商业领域没有太大的应用,因为这门语言有几个主要问题,包括:
-
内存消耗过大;
-
无法编写非常快的应用程序;
-
错过了进军 Web 的时机;
-
语法上与 C++、PHP、Perl、Python、Pascal 和 Ruby 等“传统”语言差别太大,因此学习难度较高;
-
Smalltalk IDE 与语言的结合太过紧密。
上述部分原因无疑是敲响了 Smalltalk 的丧钟。
总结
如今,编程语言不限于满足开发人员的需求,不限于抽象语法树,不限于工具,它们进化了!从十六进制(编号系统)到汇编程序,再到 C 语言,以及更高级的 Python、JavaScript、Perl、PHP、Ruby、JAVA,编程语言的自动化程度越来越高,学习难度越来越低,且对程序员越来越友好。
20 世纪大量使用 Fortran 以及 MATLAB 等语言,是为了能够在更短时间内完成计算,同时提高准确性,以巩固数学研究的目的。Fortran 首次提出了 do while 循环结构(Algol 称为 for 循环),并促使递归算法得到理论化。MATLAB 最初并不是一种传统的编程语言,然而该语言在发展的过程中,为了满足工程和科学上的需求而不断改进。
C 语言之所以成为经典,是因为它的诞生结合了天时地利人和。如今大多数编译器和内核都是用 C 语言编写的。而 C++ 则致力于缩短运行时间、节省内存,并优化软件和游戏开发行业中的这些资源。C++ 和 JAVA 是编程竞赛中的两种首选语言。Ruby 因其简单性而广泛流行,多用于 Web 开发,至今仍是最好的开源项目之一,其流行的 Web 应用程序框架 Ruby on Rails 拥有广泛的社区支持。
感谢这 11 种古老的语言
作为现代程序员,如今我们的工作效率更高,随着时间的推移,学习编程语言的难度也越来越低。从 Ada 到 Smalltalk,每一种编程语言都曾有过自己的黄金时期,而且它们也为下一代语言的诞生做出了贡献。
“最好的程序指的是,计算机能够快速执行,而且人类也能够清楚理解的程序。
程序员就像散文作家,他们利用传统的美学和文学形式以及数学概念来传达算法,并让读者相信结果是正确的。”
—— Donald E. Knuth,《计算机科学论文选集》
这些语言可能已经死了,但它们的落幕标志着新时代的来临:任何人,不需要拥有数学或计算机科学学位,也不需要坐在麻省理工学院实验室里,摆弄 IBM 大型机,就可以编写计算机程序。因此才有了如今众多自学成才的程序员。
那么,问题来了,随着编程语言如此快速的发展,未来我们将何去何从?
原创文章,作者:北大青鸟,如若转载,请注明出处:http://news.yy-accp.com/archives/13932