编程语言理论(综述)

                     

贡献者: 待更新

   本文根据 CC-BY-SA 协议转载翻译自维基百科相关文章

   编程语言理论(PLT)是计算机科学的一个分支,研究编程语言这一形式语言的设计、实现、分析、特征描述和分类。编程语言理论与数学、软件工程和语言学等领域密切相关。该领域有许多学术会议和期刊。

图
图 1:小写希腊字母 λ(lambda)是编程语言理论领域的一个非官方符号。[citation needed] 这一用法源自 λ 演算,这是一种由阿隆佐·丘奇(Alonzo Church)在 1930 年代提出的计算模型,并被编程语言研究人员广泛使用。它出现在经典著作《计算机程序的构造与解释》的封面上,以及 1975 至 1980 年间由杰拉尔德·杰伊·萨斯曼(Gerald Jay Sussman)和盖伊·斯蒂尔(Guy Steele)编写的《Lambda Papers》一书的标题中,后者是 Scheme 编程语言的开发者。[行话]

1. 历史

   在某些方面,编程语言理论的历史甚至早于编程语言本身的发展。λ 演算(lambda calculus)由阿隆佐·丘奇(Alonzo Church)和斯蒂芬·科尔·克莱尼(Stephen Cole Kleene)在 1930 年代提出,被一些人认为是世界上第一个编程语言,尽管它的初衷是用来建模计算,而不是作为程序员向计算机系统描述算法的工具。许多现代的函数式编程语言被描述为在 λ 演算之上提供了一个 “薄薄的表面层”,[2] 并且许多语言可以通过 λ 演算来简单地描述。

   第一个发明的编程语言是 Plankalkül,它由康拉德·祖泽(Konrad Zuse)在 1940 年代设计,但直到 1972 年才为公众所知(并且直到 1998 年才实现)。第一个广为人知且成功的高级编程语言是 FORTRAN(表示 “公式翻译”),由 IBM 研究团队在 1954 至 1957 年间开发,约翰·巴克斯(John Backus)领导。FORTRAN 的成功促成了一个科学家委员会的形成,旨在开发一种 “通用” 计算机语言;他们的努力结果是 ALGOL 58。与此同时,麻省理工学院的约翰·麦卡锡(John McCarthy)开发了 Lisp,它是首个源自学术界且成功的编程语言。随着这些初步努力的成功,编程语言在 1960 年代及以后成为了一个活跃的研究主题。

时间轴

   自那时以来,编程语言理论历史中的一些关键事件:

   1950 年代

   1960 年代

   1970 年代

1980 年代

1990 年代

2. 子学科与相关领域

   编程语言理论(PLT)涉及多个学科,这些学科或属于编程语言理论的范畴,或对其产生深远影响;其中许多领域存在显著的交叉。此外,PLT 还借用了数学的其他分支,包括可计算性理论、范畴理论和集合论。

形式语义学

   形式语义学是计算机程序和编程语言行为的形式规范。描述计算机程序 “语义” 或 “意义” 的三种常见方法是指示语义学(denotational semantics)、操作语义学(operational semantics)和公理化语义学(axiomatic semantics)。

类型理论

   类型理论是研究类型系统的学科;类型系统是 “通过根据程序短语所计算的值类型对短语进行分类,以证明某些程序行为缺失的可处理语法方法”。许多编程语言的特征由其类型系统的特点决定。

程序分析与转换

   程序分析是检查程序并确定关键特征(如是否缺少某些类型的程序错误)的通用问题。程序转换是将一个形式(语言)的程序转换为另一种形式的过程。

编程语言的比较分析

   编程语言的比较分析旨在根据其特征将编程语言分类;编程语言的广泛分类通常称为编程范式。

泛型编程与元编程

   元编程是生成高阶程序的过程,这些程序在执行时会生成程序(可能是另一种语言,或原始语言的一个子集)作为结果。

领域特定语言

   领域特定语言是为了高效解决特定领域问题而构建的语言。

编译器构造

   编译器理论是编写编译器(或更一般的翻译器)的理论;编译器是将用一种语言编写的程序转换为另一种形式的程序。编译器的动作通常分为语法分析(扫描与解析)、语义分析(确定程序应该做什么)、优化(根据某种度量提高程序性能;通常是执行速度)和代码生成(生成并输出等效程序,通常是 CPU 指令集的目标语言)。

运行时系统

   运行时系统指的是开发编程语言运行环境及其组件的过程,包括虚拟机、垃圾回收和外部函数接口等。

3. 期刊、出版物与会议

   会议是展示编程语言研究的主要平台。最著名的会议包括编程语言原理研讨会(POPL)、编程语言设计与实现会议(PLDI)、国际函数式编程会议(ICFP)、国际面向对象编程、系统、语言与应用会议(OOPSLA)和国际编程语言与操作系统架构支持会议(ASPLOS)。

   一些重要的发布 PLT 研究的期刊包括 ACM《编程语言与系统交易》(TOPLAS)、《函数式编程期刊》(JFP)、《函数式与逻辑编程期刊》和《高阶与符号计算》。

4. 另见

5. 参考文献

  1. Abelson, Harold (1996). 《计算机程序的结构与解释》. Gerald Jay Sussman, Julie Sussman (第二版). 剑桥,马萨诸塞州:麻省理工学院出版社。ISBN 0-262-01153-0。OCLC 34576857。
  2. “计算模型”。wiki.c2.com。2014 年 12 月 3 日。原文存档于 2020 年 11 月 30 日。
  3. C. Böhm 和 W. Gross (1996)。《CUCH 介绍》。见 E. R. Caianiello(编辑),《自动机理论》,第 35-64 页。
  4. Benjamin C. Pierce. 2002. 《类型与编程语言》。麻省理工学院出版社,剑桥,马萨诸塞州,美国。

6. 进一步阅读

7. 外部链接


致读者: 小时百科一直以来坚持所有内容免费无广告,这导致我们处于严重的亏损状态。 长此以往很可能会最终导致我们不得不选择大量广告以及内容付费等。 因此,我们请求广大读者热心打赏 ,使网站得以健康发展。 如果看到这条信息的每位读者能慷慨打赏 20 元,我们一周就能脱离亏损, 并在接下来的一年里向所有读者继续免费提供优质内容。 但遗憾的是只有不到 1% 的读者愿意捐款, 他们的付出帮助了 99% 的读者免费获取知识, 我们在此表示感谢。

                     

友情链接: 超理论坛 | ©小时科技 保留一切权利