让我们研究并追溯语言结构的起源。
例如:
从 LISP 引入的构造
最佳答案
这是迄今为止我能够识别的主要编程语言结构的综合历史。毫无疑问,我遗漏了一些东西,但我相信 SO 社区将帮助识别这些遗漏。
浮板岩 (1943-45) - 由 Konrad Zuse 开发,据 Wikipedia 称,这是第一个高级的、非冯诺依曼编程语言。 ACM 论文和通讯 "The "Plankalkül" of Konrad Zuse: A Forerunner of Today's Programming Languages"由 F.L.鲍尔和 H. 沃斯纳。该语言最初是为机械开发的 Zuse Z1 computer ,但是一个 compiler implementation柏林自由大学的一个团队直到 2000 年才开发出该语言。该语言引入了以下内容:
Fortran :
IPL (信息处理语言)-递归(后来包含在 LISP 中)--(Newell and Simon)
LISP - 垃圾收集、lambda 表达式和动态类型 -- ( McCarthy, 1960 )、( McCarthy, 1978 )、( Wikipedia: Garbage collection ) 和 ( Wikipedia: LISP )
ALGOL 58 - 引入了代码块(但仅用于控制流,而不是变量范围)( Backus, 1959 )
ALGOL 60 - 将词法作用域添加到代码块、具有词法作用域的嵌套函数定义 ( Backus et al 1963 )
ALGOL 68 - 运算符重载 ( A. van Wijngaarden et al )
模拟 - 对象、类、子类、虚拟方法、协同程序 (Dahl et al)
毫升 - 参数多态性 ( Cardelli and Wegner )
ISBL (信息系统基础语言) - 关系代数(这里比 SQL 更早介绍) - ( Hall et al ), ( Wikipedia: Relational algebra )
方案 - 第一个完全支持的闭合(Sussman and Steele, 1975),(Sussman and Steele, 1998)
奇怪的是,对于四种最常用的现代编程语言,C、C++、Java 和 C#,我无法识别任何可验证的、全新的编程语言结构。 C++ 中的模板是 ML 中引入的多态性的临时版本。最接近 Java 新语言特性的是包含对线程的支持。大多数情况下,所有四种语言都是其他地方发明的理想特性和概念的组合。
其他注意事项:尽管 Prolog 是最早的逻辑编程语言之一,但我无法确定之前其他语言中未引入的任何重要功能。
尽管有一些 Wikipedia 引用资料,但上面列出的大多数功能都归功于下面引用的可靠来源。在我深入寻找权威引用资料的地方,基于维基百科的细节表现良好。
我为 Plankalkül 引用的 ACM 论文证实了它的大部分功能。 Konrad Zuse 是一位有远见的天才。
引用
佛罗里达州Bauer 和 H. Wössner (1972)。 The “Plankalkül” of Konrad Zuse: A Forerunner of Today’s Programming Languages .通讯
的 ACM,15(7):678-685。
劳尔·罗哈斯等人。 (2000)。 "Plankalkül: The First High-Level Programming Language and its Implementation" . Institut für Informatik,柏林自由大学,技术报告 B-3/2000。
J. W. 巴库斯 (1956)。 The Fortran Automatic Coding System for the IBM 704 EDPM .国际商用机器公司。
Allen Newell 和 Herbert A. Simon (1956)。 The logic theory machine: a complex information processing system . IRE 信息论交易 IT-2,没有。 3:61-79。
约翰·麦卡锡 (1960)。 Recursive functions of symbolic expressions and their computation by machine, Part I ,ACM 通讯,v.3 n.4,第 184-195 页,四月。
约翰·麦卡锡 (1978)。 History of LISP .在 Richard L. Weexelblat,编辑,编程语言历史:ACM SIGPLAN session 论文集,第 173-197 页。学术出版社,6 月 1-3 日。
J.W.巴库斯 (1959)。 "The Syntax and Semantics of the Proposed International Algebraic Language of Zürich ACM-GAMM Conference" .国际信息处理 session 论文集。联合国教科文组织。第 125-132 页。
J.W. Backus、F. L. Bauer、J. Green、C. Katz、J. McCarthy、P. Naur、A.J.玻璃市、H. Rutishauser、K. Samelson、B. Vauquois、J. H. Wegstein、A. van Wijngaarden、M. Woodger; Peter Naur 编辑(1963 年)。 Revised Report on the Algorithmic Language ALGOL 60 . ACM 通讯,第 6 卷,第 1 期(1 月),第 1-17 页。
A. van Wijngaarden, A. (Editor), Mailloux, B. J., Peck, J. E. L., Koster, C. H. A. (1969)。 "Report on the algorithmic language ALGOL 68" ,第 10.2.2 节。数字。数学。 14, 79--218。
Ole-Johan Dahl、Bjørm Myhrhaug 和 Kristen Nygaard (1970)。 SIMULA, Common Base Language . (第 2 版)奥斯陆,挪威计算中心。
卢卡·卡德利和彼得·韦格纳 (1985)。 On Understanding Types, Data Abstraction, and Polymorphism .计算调查,第 17 卷 n。 4,第 471-522 页,十二月。
帕特里克 A.V.霍尔、彼得·希区柯克、斯蒂芬·托德 (1975)。 "An algebra of relations for machine computation" .第二届 ACM 编程语言原则研讨会的 session 记录,加利福尼亚州帕洛阿尔托:ACM,第 225-232 页,一月。
Gerald Jay Sussman 和 Guy L. Steele, Jr (1975)。 Scheme: An Interpreter for the Extended Lambda Calculus . AI 备忘录 349,12 月。
Gerald Jay Sussman 和 Guy L. Steele, Jr (1998)。 "Scheme: A Interpreter for Extended Lambda Calculus" .高阶和符号计算 11 (4): 399–404,12 月,Kluwer Academic Publishers,波士顿。
关于language-agnostic - 编程构建历史,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2710223/