新闻资讯
看你所看,想你所想

程式语言理论

程式语言理论

程式语言理论(PLT)是计算机科学的一个分支,涉及程式语言及其各自特徵的设计,实现,分析,表征和分类。 它属于计算机科学学科,既依赖于并影响数学,软体工程,语言学甚至认知科学。 它是一个公认的计算机科学分支,也是一个活跃的研究领域,其成果发表在许多致力于PLT的期刊以及一般的计算机科学和工程出版物上。

基本介绍

  • 中文名:程式语言理论
  • 外文名:Programming language theory
  • 缩写:PLT

历史

在某些方面,程式语言理论的历史甚至早于程式语言本身的发展。由Alonzo Church和Stephen Cole Kleene在20世纪30年代开发的lambda演算被一些人认为是世界上第一种程式语言,儘管它旨在模拟计算而不是程式设计师向计算机系统描述算法的手段。 。许多现代函式式程式语言被描述为在lambda演算上提供“薄单板”,并且很多都很容易用它来描述。
将要发明的第一种程式语言是Plankalkül,它由Konrad Zuse在20世纪40年代设计,但直到1972年才公开(直到1998年才实现)。第一个广为人知且成功的高级程式语言是Fortran,由John Backus领导的IBM研究团队于1954年至1957年间开发。 FORTRAN的成功促成了科学家委员会的成立,以开发“通用”计算机语言;他们努力的结果是ALGOL 58.另外,麻省理工学院的John McCarthy开发了Lisp程式语言(基于lambda演算),这是学术界起源于成功的第一种语言。随着这些初步努力的成功,程式语言成为20世纪60年代及以后的一个活跃的研究课题。从那时起程式语言理论史上的其他一些重要事件:

20世纪50年代

Noam Chomsky在语言学领域发展了乔姆斯基的等级制度;这一发现直接影响了程式语言理论和计算机科学的其他分支。

20世纪60年代

Simula语言由Ole-Johan Dahl和Kristen Nygaard开发;它被广泛认为是面向对象程式语言的第一个例子; Simula还介绍了协同程式的概念。
1964年,Peter Landin是第一个意识到Church的lambda演算可用于编程程式语言的人。他介绍了“解释”lambda表达式的SECD机器。
1965年,兰丁引入了J运算元,基本上是一种延续形式。
1966年,Landin在他的文章The Next 700 Programming Languages中介绍了ISWIM,一种抽象的计算机程式语言。它在导致Haskell程式语言的语言设计中具有影响力。
1966年,CorradoBöhm介绍了程式语言CUCH(Curry-Church)。
1967年,克里斯托弗·斯特拉希(Christopher Strachey)发表了他有影响力的一套讲座笔记“程式语言的基本概念”,介绍了术语R值,L值,参数多态和ad hoc多态。
1969年,J。Roger Hindley发表了“组合逻辑中对象的主体类型 - 方案”,后来推广到了Hindley-Milner型推理算法。
1969年,Tony Hoare介绍了Hoare逻辑,这是一种公理语义。
1969年,威廉·艾尔文·霍华德(William Alvin Howard)观察到,一种称为“自然演绎”的“高级”证明系统可以直接在其直觉主义版本中被解释为计算模型的类型变体,称为lambda演算。这被称为库里 - 霍华德的对应。

20世纪70年代

1970年,达纳斯科特首次发表他关于指称语义学的着作。
1972年,开发了逻辑编程和Prolog,从而允许电脑程式表达为数学逻辑。
1974年,John C. Reynolds发现了F系统。它已经由数学逻辑学家Jean-Yves Girard于1971年发现。
从1975年开始,Gerald Jay Sussman和Guy Steele开发了Scheme程式语言,一种包含词法範围的Lisp方言,一个统一的命名空间,以及来自演员模型的元素,包括一流的延续。
Backus在1977年的ACM图灵奖讲座中抨击了当前的工业语言状态,并提出了一类新的程式语言,称为功能级程式语言。
1977年,Gordon Plotkin介绍了编程可计算函式,这是一种抽象类型的函式式语言。
1978年,Robin Milner为ML程式语言引入了Hindley-Milner型推理算法。类型理论成为程式语言的一门学科,这种套用多年来在类型理论方面取得了巨大的进步。

20世纪80年代

1981年,Gordon Plotkin发表了关于结构化操作语义的论文。
1988年,吉尔斯·卡恩(Gilles Kahn)发表了关于自然语义学的论文。
由Alan Kay领导的Xerox PARC的科学家团队开发了Smalltalk,这是一种以其创新开发环境而闻名的面向对象语言。
出现了过程计算,例如Robin Milner的通信系统微积分,以及C. A. R. Hoare的通信顺序过程模型,以及类似的并发模型,例如Carl Hewitt的演员模型。
1985年,米兰达的发布激发了对懒惰评估的纯函式式程式语言的学术兴趣。成立了一个委员会来定义一个开放的标準,导致1990年Haskell 1.0标準的发布。
Bertrand Meyer通过契约创建了方法设计,并将其合併到Eiffel程式语言中。

20世纪90年代

Gregor Kiczales,Jim Des Rivieres和Daniel G. Bobrow出版了“元对象协定的艺术”一书。
Eugenio Moggi和Philip Wadler介绍了使用monads来构造用函式式程式语言编写的程式。

子学科和相关领域

有几个研究领域,或者在程式语言理论中,或者对它有深远的影响;其中许多都有相当大的重叠。此外,PLT还利用了许多其他数学分支,包括可计算性理论,範畴理论和集合论。

形式语义

形式语义是电脑程式和程式语言行为的正式规範。描述电脑程式的语义或“含义”的三种常用方法是指称语义,操作语义和公理语义。

类型理论

类型理论是类型系统的研究;这是“通过根据他们计算的价值种类对短语进行分类来证明某些程式行为缺失的易处理的句法方法”。许多程式语言的特徵在于其类型系统的特徵。

程式分析和转换

程式分析是检查程式和确定关键特徵(例如缺少程式错误类别)的一般问题。程式转换是将程式以一种形式(语言)转换为另一种形式的过程。

比较程式语言分析

比较程式语言分析试图根据程式语言的特徵将程式语言分为不同的类型;广泛的程式语言类别通常称为编程範例。

通用和元编程

元编程是高阶程式的生成,其在执行时产生程式(可能以不同的语言或原始语言的子集)作为结果。

特定于域的语言

特定于域的语言是为有效地解决特定问题域中的问题而构建的语言。

编译器构造

编译理论是编写编译器的理论(或者更一般地说,是翻译者);将用一种语言编写的程式翻译成另一种形式的程式。传统上,编译器的操作分为语法分析(扫描和解析),语义分析(确定程式应该做什幺),最佳化(通过某些度量标準提高程式性能;通常执行速度)和代码生成(在某种目标语言中生成和输出等效程式;通常是CPU的指令集)。

运行时系统

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

转载请注明出处海之美文 » 程式语言理论

相关推荐

    声明:此文信息来源于网络,登载此文只为提供信息参考,并不用于任何商业目的。如有侵权,请及时联系我们:ailianmeng11@163.com