language-agnostic - 编程构建历史

标签 language-agnostic programming-languages language-features history

让我们研究并追溯语言结构的起源。

例如:

从 LISP 引入的构造

  • If-Else 块 :“无处不在的 if-then-else 结构,现在被认为是任何编程语言的基本元素,它是由 McCarthy 发明的,用于 Lisp,它首次以更一般的形式(cond 结构)出现。它由 Algol 继承,并使其普及。” - 维基百科
  • 函数类型 : 作为一等公民发挥作用。
  • 垃圾收集
  • 最佳答案

    这是迄今为止我能够识别的主要编程语言结构的综合历史。毫无疑问,我遗漏了一些东西,但我相信 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 年才开发出该语言。该语言引入了以下内容:

  • “赋值语句、子例程、条件语句、迭代、浮点算术、数组、分层记录结构、断言和异常处理”(Wikipedia:Plankalkül)。

  • Fortran :
  • Do 循环(实际上相当于 C、C++ 等语言中的现代 for 循环)( Wikipedia: For_loop )
  • 三路算术IF语句(Backus)
  • 计算 GOTO(Algol 58 和 Algol 60 中 switch 语句的前身)——来自 ( Backus )、( Wikipedia: Fortran ) 和 ( Wikipedia: ALGOL 58 )

  • 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/

    相关文章:

    c# - 最有可能发生什么类型的问题?

    algorithm - 在通用哈希表中查找项目?

    performance - 在具有节点和边权重的图中找到最短路径?

    programming-languages - 有更好的C吗?

    c# - 我应该使用 Guid 和 Guid.Empty 还是可以为 null 的 Guid?

    math - float 学有问题吗?

    null - 假设的非空语言 - 如何实现链表?

    programming-languages - 内存、解释器和闭包

    programming-languages - 你怎么能告诉一个正常人关于第一个程序?

    c# - 我需要帮助确定一种编程技术,以便我可以研究和修复它