代码之家  ›  专栏  ›  技术社区  ›  Wayne

编程构造历史

  •  15
  • Wayne  · 技术社区  · 5 年前

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

    例如:

    从Lisp引入的构造

    • 如果其他块 :“无处不在的if-then-else结构,现在被认为是任何编程语言的基本元素,是麦卡锡发明用于Lisp的,在Lisp中,它第一次以更通用的形式出现(cond结构)。它是由algol继承的,这使它普及了。”维基百科

    • 功能类型 :作为一等公民。

    • 垃圾收集

    2 回复  |  直到 14 年前
        1
  •  21
  •   Joel Hoff    14 年前

    这里是一个全面的历史主要编程语言结构,我已经能够识别到目前为止。毫无疑问,我遗漏了一些东西,但我相信SO社区将帮助识别这些遗漏。

    普兰卡克 (1943-45)-由Konrad Zuse开发,这是第一种高级的非von Neumann编程语言,根据 Wikipedia 以及ACM文件的通信 "The "Plankalkül" of Konrad Zuse: A Forerunner of Today's Programming Languages" 作者:F.L.Bauer和H.Wossner。语言最初是为机械 Zuse Z1 computer 但A compiler implementation 柏林自由大学的一个团队直到2000年才开发出来。该语言介绍了以下内容:

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

    福特朗 :

    IPL (信息处理语言)-递归(稍后包含在Lisp中)-- (Newell and Simon)

    Lisp -垃圾收集、lambda表达式和动态类型--( McCarthy, 1960 ) McCarthy, 1978 ) Wikipedia: Garbage collection )和( Wikipedia: LISP )

    Algl 58 -引入的代码块(但仅用于控制流,不用于变量范围)( Backus, 1959 )

    Algl 60 -向代码块添加了词法范围,使用词法范围嵌套了函数定义( Backus et al 1963 )

    Algl 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中引入的多态性的AdHoc版本。Java中新的语言特征最接近的是包含对线程的支持。大多数情况下,这四种语言都是其他地方发明的理想特性和概念的组合。

    其他注意事项:虽然Prolog是第一批逻辑编程语言之一,但我无法识别以前在其他语言中没有引入的任何重要特性。

    尽管有一些维基百科的参考资料,但上面列出的大部分功能都是由下面引用的可靠来源提供的。在我深入研究以寻找权威参考资料的地方,基于维基百科的细节已经很好地支持了这一点。

    我引用的关于plackalk_¼l的ACM论文证实了它的大部分特性。康拉德·祖斯是个有远见的天才。

    参考文献

    F.L.Bauer和H.W.?ssner(1972年)。 The “Plankalkül” of Konrad Zuse: A Forerunner of Today’s Programming Languages . 通信 ACM,15(7):678_“685。

    Ra_:L Rojas等人(2000)。 "Plankalkül: The First High-Level Programming Language and its Implementation" . 柏林弗雷大学信息研究所,技术报告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 . 信息论信息技术交易2,第3号:61-79。

    约翰·麦卡锡(1960)。 Recursive functions of symbolic expressions and their computation by machine, Part I ,ACM通讯,V.3 N.4,第184-195页,4月。

    约翰·麦卡锡(1978)。 History of LISP . Richard L.Wexelblat,编辑,《编程语言历史:ACM Sigplan会议记录》,第173-197页。学术出版社,6月1-3日。

    J.W.巴克斯(1959)。 "The Syntax and Semantics of the Proposed International Algebraic Language of Zürich ACM-GAMM Conference" . 国际信息处理会议记录。联合国教科文组织第125页“132.

    J.W.巴科斯,F.L.鲍尔,J.格林,C.卡茨,J.麦卡锡,P.瑙尔,A.J.珀利斯,H.鲁蒂绍斯,K.萨默森,B.沃奎斯,J.H.韦格斯坦,A.范·魏格纳登,M.伍德格;编辑:彼得·瑙尔(1963)。 Revised Report on the Algorithmic Language ALGOL 60 . ACM通讯,第6卷,第1号(1月),第1-17页。

    A.van Wijngaarden,A.(编辑),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 . (第二)。版本)奥斯陆,挪威计算中心。

    Luca Cardelli和Peter Wegner(1985年)。 On Understanding Types, Data Abstraction, and Polymorphism . 《计算调查》,第17卷第4期,471-522页,12月。

    Patrick A.V.Hall,Peter Hitchcock,Stephen Todd(1975年)。 "An algebra of relations for machine computation" . 第二届ACM编程语言原则研讨会会议记录,加利福尼亚州帕洛阿尔托:ACM,第225页“232”,1月。

    Gerald Jay Sussman和Guy L.Steele,Jr(1975年)。 Scheme: An Interpreter for the Extended Lambda Calculus . 人工智能备忘录349,12月。

    Gerald Jay Sussman和Guy L.Steele,Jr(1998年)。 "Scheme: A Interpreter for Extended Lambda Calculus" . 更高阶和符号计算11(4):399_“404,12月,Kluwer学术出版社,波士顿。

        2
  •  3
  •   ChristopheD    14 年前

    switch语句-1965- ALGOL W

    根据: http://ojs.pythonpapers.org/index.php/tpp/article/viewFile/49/45

    所有程序语言之父Algol都没有案例陈述,因为案例的概念还没有在高级语言中被发明出来。然后在1965年,一种很少使用的语言algol w被发布,其中包含了c.a.r.hoare发明的switch…case语句,它允许非有序的非重叠值和范围。

    C和Pascal都是从父语言派生而来的,并且都有一种形式的case:C——熟悉的switch(variable)case……和pascal,使用case变量begin value1:。C++版本、PHP、C语言和Java语法都是从C版本中派生出来的。