Lisp通用编程初步---环境构建和外部Lisp代码运行

电脑杂谈  发布时间:2020-04-06 08:11:41  来源:网络整理

c语言学习教程_c语言教程 浓缩版_c语言入门经典 第四版 2 编程初步

Lisp是世界上第二古老的语言,而第一古老的语言是Fortran. Lisp语言的创始人是人工智能领域的先驱约翰·麦卡锡(John McCarthy). 该语言自诞生以来已经历了50多年,它是一种非常动态的语言. 这种语言的开发和使用与CMU和MIT两所大学密不可分. 长期以来,它们一直是这两所大学计算机课程的指定语言.

在创建语言之初,除创建者外,其他一些大学的著名学者也参与了Lisp语言的开发和改进. 结果,出现了多种Lisp方言,这对于语言的移植非常不便. 因此,1981年,Liduo Lisp的专家学者集中在一起,提出了Common Lisp(CL),意为“所有人的Lisp通用语言”,旨在使所有Lisp用户遵循通用标准并促进工业化. 应用. CL吸收了以前Lisp方言的优点,并添加了面向对象的功能,使其成为Lisp语言中使用最广泛的语言. 自1981年ANSI吸收CL作为标准以来,ANSI于1989年更新了CL标准,即CL 1989,并保持了与以前的CL标准的兼容性. 对于那些未在标准中指定的组件,每个编译器制造商都可以发挥自己的作用. 从那时起,CL进入了稳定的发展阶段. 您会发现1980年代后期某些人工智能教科书中的CL代码仍然可以运行.

CL语言(包括Lisp的其他方言)并未得到广泛使用,但是不能断定它是一种即将消亡的语言. 实际上,CL充满生机和活力,目前有大量使用CL构建的项目. 教科书“人工智能: 理论与实践”是2003年版本的影印本,其中人工智能算法是CL语言;有效

Common Lisp: 《符号计算的温和入门》在2013年发布了一个新的更正的电子版本. Lisp语言具有许多出色的功能,例如垃圾回收,动态类型输入,函数式编程等. 许多现代语言都在借用一些Lisp语言的特征. 在这些方面,Lisp为其他语言设置了模型. 可以说,任何想要追求卓越的程序员都应该学习和使用Lisp语言. 学习了该语言后,您会发现其他语言对您来说变得如此简单. 目前,您已经在泰山的顶端.

另一种仍在使用的Lisp方言是Scheme. 教科书“计算机程序的结构和解释”就是基于这种语言来解释相关算法的. Scheme主要是一种以教学为导向,理论上比较完善的语言,但是在工业上应用不足,CL在大型项目中并未得到广泛应用.

本文将解释CL的环境构造,IDE的使用,编写简单的交互式程序以及将代码文件.lisp导入IDE并运行它.

c语言教程 浓缩版_c语言入门经典 第四版 2 编程初步_c语言学习教程

有许多环境可以运行CL程序. 这是Lispbox操作环境的说明. 您可以将其称为IDE. Lispbox将emacs与cl的解释器集成在一起,从而成为CL开发环境. 启动后,它将自动导入一些软件包(packages),方便程序员进行编程. 您可以从此处下载Lispbox. 该网站在三种不同的操作系统下提供Lispbox: Windows,OS X和Linux. 您可以根据需要选择一个.

本文以Windows 7为例来说明如何使用Lispbox. 下载后,您仅需将其解压缩到您的文件夹中,无需任何安装过程. Lispbox是纯绿色软件.

在主文件夹下,双击lispbox.bat以启动.

这里写图片描述

也许您的lisp源代码不在当前目录中c语言入门经典 第四版 2 编程初步,所以您需要在Lispbox中更改当前工作目录. 这种方法非常普遍,在其他软件(例如Matlab,R等)中也需要学习如何更改目录. 如果您可以使用emacs编辑器,那么您自然会不需要继续阅读本节.

如果我之前编写的lisp程序add-title.lisp存储在Lispbox主目录的my-study-lisp文件夹中,则更改为my-study-lisp文件夹的方法是:

c语言教程 浓缩版_c语言入门经典 第四版 2 编程初步_c语言学习教程

在命令提示符cl-user之后输入逗号;在底部输入cd;如下所示:

这里写图片描述

在cd之后输入Enter,并在完成我们任务的路径之后输入my-study-lisp. 成功后,如下图:

这里写图片描述

CL中有一个术语称为REPL(读取,评估,打印,循环),等效于Python中的交互式编程. 输入命令并立即显示命令执行的结果,支持快速开发.

CL语言的语法相对简单,即在()中写入一些内容c语言入门经典 第四版 2 编程初步,并在其前缀中写入. 例如,如下所示:

c语言学习教程_c语言入门经典 第四版 2 编程初步_c语言教程 浓缩版

这里写图片描述

上面的程序是找到2的平方根.

我们不能每次都以交互方式运行我们的程序. 当我们的程序稳定后,它自然会存储在文件中,因此我们不必每次都重新输入它. 该文件的后缀通常是Lisp. 接下来,我们说明如何通过Lispbox运行存储在lisp文件中的程序.

如果我的源程序文件add-title.lisp的内容是(摘自“ Common Lisp: 符号计算的简要介绍”)

(defun titledp (name)
  (member (first name) '(mr ms miss mrs)))
(setf male-first-names
      '(john kim richard fred george))
(setf female-first-names
      '(jane mary wanda barbara kim))
(defun malep (name)
  (and (member name male-first-names)
       (not (member name female-first-names))))
(defun femalep (name)
  (and (member name female-first-names)
       (not (member name male-first-names))))
(defun give-title (name)
  "Returns a name with an appropriate title on the front."
  (cond ((titledp name) name)
    ((malep (first name)) (cons 'mr name))
    ((femalep (first name)) (cons 'ms name))
    (t (append '(mr or ms) name))))

我们可以使用以下命令在CL-USER后面输入(加载“ add-title.lisp”),如下所示:

c语言入门经典 第四版 2 编程初步_c语言教程 浓缩版_c语言学习教程

这里写图片描述

在上图中导入后有一些警告消息,请放心,它们不会影响以下程序的执行. 下面,我们将使用add-title程序,如下所示:

这里写图片描述

程序将自动在名称前添加名称. 如果有荣誉称号,将不再添加,这符合我们的期望.

CL是一种对程序员来说非常具有挑战性的语言. 学习它需要花费大量的精力. 但这很有趣,许工智能书籍中的某些智能程序都使用CL作为编程语言. 因此,要理解这些书并在书中练习一些算法,必须首先使用CL语言. 当然,您也可以使用C ++语言来实现人工智能书中的算法,但是我认为最终的实现代码会花费很多时间. 没有CL,它看起来简单明了,更易于理解. 或者用C ++实现的代码离计算机更近.

(美)迪恩(Tean,T.)正在等待. 人工智能: 理论与实践. 北京: 电子工业出版社,2003年. DavidS. Touretzky. Common Lisp: 关于符号计算的简要介绍. 本杰明/卡明斯出版公司,1990年. 哈罗德·阿贝尔森,杰拉尔德·杰伊·萨斯曼和朱莉·萨斯曼. 计算机程序的结构和解释. 麻省理工学院出版社,坎布里德,1996年. David S. Touretzky. Common Lisp: 关于符号计算的简要介绍. 本杰明/卡明斯出版公司,1990年.


本文来自电脑杂谈,转载请注明本文网址:
https://www.pc-fly.com/a/jisuanjixue/article-165701-1.html

    相关阅读
      发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

      热点图片
      拼命载入中...