Lisp语言的发展.doc

Lisp语言的发展.doc

ID:25883735

大小:27.50 KB

页数:5页

时间:2018-11-23

Lisp语言的发展.doc_第1页
Lisp语言的发展.doc_第2页
Lisp语言的发展.doc_第3页
Lisp语言的发展.doc_第4页
Lisp语言的发展.doc_第5页
资源描述:

《Lisp语言的发展.doc》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、Lisp语言的发展国家智能计算机研究开发中心刘晓华一、引言Lisp是一个优美的高级语言,它的发展经历了漫长的复杂的历程。在Lisp作为高级语言出现以前,大约经过了两年的酝酿(1956~1958),形成了Lisp的许多基本设计思想。1958年秋进入Lisp的实现与初步应用时期,这一时期(1958~1962),Lisp的发展基本上是单线的。1962年以后Lisp的发展变成多线,在这一段时期(1962~1984),不同的机构团体提出许多不同的思想,形成了"百家争鸣"的局面。直到CommonLisp(1984)出现以后,Li

2、sp的发展才进入标准化时代。不同寻常的发展过程使得Lisp成为继Fortran语言之后第二个历史最长使用最广泛的语言。二、Lisp前期和早期(1956~1962)Lisp前期(1956~1958)始于JohnMcCarthy的一种愿望:为IBM704计算机提供一个代数表处理语言,以便适用于人工智能(AI)的研究。这种愿望是1956年夏在Dartmouth举行的AI研究计划讨论会上他受到Newell,Shaw和Simon描述的IPL2——表处理语言的启发而萌发的。但他并不想直接采用IPL2,原因有两个:①IPL2是用来

3、实现逻辑定理证明的,而且依赖于Rand公司的JOHNNIAC机器;②Fortran语言结构用来进行表处理也是很有吸引力的(后面我们将会谈到)。这种愿望最终变成现实:IBM公司慷慨承担了在MIT成立NewEnglandComputationCenter和开发一个证明平面几何定理的程序,当时JohnMcCarthy是这个项目的顾问。JohnMcCarthy选择表作为程序句子的基本表示单位。表结构不仅能表示符号信息,而且适合逻辑推理,即适合进行符号处理。尽管有其他一些采用传统表示方法的符号处理系统,但McCarthy放弃了

4、传统的中缀表示方法而采用了前缀形式,因而能很快地决定机器下一步应该采取的动作。这个特征可能是Lisp在和其他语言的竞争中取得成功的原因。但是如何在机器上存储表结构和对表结构进行操作,这是一个技术问题,而且和具体的机器有关,如机器字及其bit数。最初,提出了对表结构进行操作的基本操作。这些操作都是针对寄存器的字或地址进行的。cwr表示取寄存器中字的内容,car表示取寄存器中地址的内容,还定义了cdr、cpr和ctr三个类似的函数,cons最初是定义为一个例程而不是一个函数。这些思想几乎都是在Dartmonth的NewE

5、nglandComputationCenter形成的,但是没有在机器上实现。同时进行的另一部分工作,是在Fortran中实现一个表处理语言,当时IBM有一个平面几何证明的项目。在McCarthy的建议下,N.Rochester和H.Gelerneter等决定在Fortran中增加关于表处理的功能,提出了FLPL语言(Fortran表处理语言),把cons处理为一个函数。尽管FLPL能容易地处理表达式和编写平面几何证明程序,但缺少条件表达式和递归功能。McCarthy在1957~1958年间提出了条件表达式,并首先用于

6、Fortran程序。到1958年夏天,这些思想基本成熟,并且超过了FLPL:(1)用条件表达式定义递归函数,把各种情形组合在一个公式中;(2)引入church的入概念,函数可以作为表的参数。通过修补Fortran来进行表处理,无论从技术上还是策略上都很困难,因此需要一个崭新的表处理语言。Lisp语言终于诞生。1985年秋天,MIT的McCarthy(电子工程系)和MarvinMinsky(数学系)领导的小组着手实现一个Lisp编译器,以便为Lisp程序提供一个运行环境。Lisp程序是用一个类似于Fortran的M表达

7、式编写的,通过手工方式将各种各样的函数汇编成汇编语言,在Lisp"环境"下运行。这时的Lisp除了提供一些基本功能外还实现了输入(READ)和输出(PRINT)Lisp表结构。刚出世的Lisp实际上是一个很脆弱的婴儿,需要不断吸取氧分才能茁壮成长。Lisp虽然提供递归函数计算,但它不是一个通用图灵机,应该更加简朴巧致地描述可计算函数,便于实现。出于Lisp设计的初衷(用于人工智能、包括定理证明、符合数学法则、函数可能作为变量、表达式可以替换)。引入了Lisp表达式计值的函数eval和LABEL符号(表示一个函数作为表

8、的参数)。至此,Lisp的核心已经较为完备。Lisp作为一个高级编程语言(称作Lisp1.5),也显示了其他语言所不具备的特征:Lisp程序可以作为Lisp数据被eval解释和用语言本身来编写自己的编译器。Lisp早期也出现了几个Lisp的版本。最早是在IBM704机上实现的。JohnMcCarthy和SteveRussell在Stanford

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。