LISP
LISP是一种通用高级计算机程序语言,长期以来垄断人工智能领域的应用。LISP作为因应人工智能而设计的语言,是第一个声明式系内函数式程序设计语言,有别于命令式系内过程式的C、Fortran和面向对象的Java、C#等结构化程序设计语言。LISP名称源自列表处理(LIStProcessing)的英语缩写,由来自麻省理工学院的人工智能研究先驱约翰·麦卡锡(JohnMcCarthy)在1958年基于λ演算所创造,采用抽象数据列表与递归作符号演算来衍生人工智能。
中文名:LISP
外文名:LISPProgrammingLanguage
类别:计算机程序设计语言
创始人:约翰·麦卡锡
创始时间:1958年
发源:IPL
启发语言:JavaScript,Perl,Ruby,Python
1、历史背景
20世纪50年代中期,在大多数计算机处理的都是数值数据等,包括语言学、心理学和数学领域上一些人们开始对人工智能产生了兴趣。觉得必须实现共同需要的一个方法,使计算机能够处理链表中的符号数据,允许语言的处理、信息存入和检索、定理证明的过程机器化。IBM是首先对人工智能开发有兴趣的商业机构之一。1958年夏天,来自麻省理工学院的人工智能研究先驱约翰·麦卡锡(JohnMcCarthy)参与IBM资讯研究部的工作,研究符号运算及应用需求。可是,IBM旗下的Fortran表处理语言却未能支援符号运算的递归、条件表达式、动态存储分配及隐式回收等功能。约翰·麦卡锡于1958年秋季回到麻省理工学院后,和MarvinMinsky组成了人工智能项目。开展一个表处理软件系统来实现McCarthy提出建议采纳者程序的工作,尔后推动了表处理语言LISP的诞生。
2、发展历程
1960年4月,麦卡锡以《递回函数的符号表达式以及由机器运算的方式,第一部》为题,于ACM通讯上发表LISP设置。麦卡锡的学生SteveRussell根据该论文,以IBM704于麻省理工学院的计算机运算中心成功执行了第一版的LISP。1962年,麦卡锡及人工智能小组按LISP1的编译基础上改良出LISP1.5版本。1969年9月,史丹福大学人工智能实验室的LynnQuam与WhitfieldDiffie推出的StanfordLISP1.6广泛地被应用于使用TOPS-10系统的PDP-10计算机系中。可是,StanfordLISP1.6版本自麻省理工智能项目更新LISP1.5成MACLISP及BBN科技公司推出的InterLisp成功后,渐被弃置。自1960代末年至1980年初年,各种更新LISP版本涌现,有源自加利福尼亚大学伯克利分校的FranzLisp、在AutoCAD运行的AutoLISP前身XLISP、犹他大学开展的StandardLisp及PortableStandardLisp、专属于Lisp机器上运行的ZetaLisp、源自法国国家信息与自动化研究所的LeLisp、以及MIT人工智能实验室的GeraldSussman与GuySteele所开发的Scheme等。1984年,改良自MacLisp、集各版本大成、跨平台、且被目为事实标准的CommonLisp诞生。至1994年,美国国家标准学会(ANSI)对CommonLisp语言进行了标准化。自稳定运行的CommonLisp出现起,再有各机构按各自所需而开展后续Lisp,包括1990年来自欧洲用户的EuLisp、运行于Java虚拟机的Clojure、受到Maclisp影响而创的EmacsLisp、以及*开源来自卡内基·梅隆大学的CMUCL、还有IsLisp,Racket,ACL2等蓬勃涌现。自2000年起,LISP共享者合力支援的*开源社区逐渐形成,致力于LISP后续发展。2002年10月,第一届国际LISP会议于美国旧金山开展,其后LISP大会不定期于全球各地举行,包括2014年在加拿大蒙特利尔大学以移动概念作主题的会议。
3、语言特点
LISP为函数式程序设计语言,所有运算都能以函数作用于参数的方式来实现。LISP没有命令式语言程序中常见赋值语句和变量,重复的过程可以使用递归的函数调用来表示,并不需要使用循环模式。LISP是古老的函数语言、弱类型、动态推断,其代码本身就是各种列表。每一个表项均可以储存任何类型的数据如数字、函数、符号或一个子表等,在编码时,可以随时操作以更新列表。LISP核心的操作符只有7个操作符:quote、atom、eq、car、cdr、cons、cond。前三者quote、atom、eq用于符号的推断;car、cdr、cons操纵表格;cond负责分支判断。这种简洁定义,非常接近图灵机原型的纯函数式语言,是现代语言完全无法比拟的。LISP作为弱类型这优点相对缺点则是运行效率的低下。原始定义简洁的缺点使到大型开发工程变得困难,自底层到高层,自二维表查询到面向对象,使用者需要嵌入更多的函数来实现,致使LISP众多方言的衍生。
4、语言组成
关键字
LISP是一个函数式程序语言,并无关键字或保留字设,置使用者可自行再定义。
语言执行
LISP语法,可透过执行HelloWorld程序来体现。此程序透过XLISP-STAT2.1,3.45Beta版编译器执行。
语言组成信息来源
5、语言应用
LISP是函数式程序设计的先锋,其诸多革命性的创新思维影响了后续编程语言的发展,亦完全垄断人工智能领域的应用长达三分之一个世纪。曾在开展初年出现的低效率因素亦在集体改良中被移去,成就了现在广被应用于软件开发、电子商务及金融系统的CommonLisp、Scheme、EmacsLisp和Clojure等。
推荐阅读