递归和条件表达式合起来是 Lisp 的主要控制结构。这是恰当的,因为它允许容易的和优雅的定义重复的规则的结构。在常规计算机体系上递归的低效一直是对 Lisp 的主要批评之一。尽管这种讨论直到几年前还是有益的,现在在很大程度已经被新的实现技术和专用“Lisp 机器”的出现所克服,Lisp 机器在微程序级别支持表和递归,但是,仍然可以公平的说使用 Lisp 经常会导致“内存饥荒”的程序。
Lisp 是一个交互语言,支持试探风格的程序开发。结构编辑器和复杂的调试工具通常作为它所嵌入的编程环境的一部分。这使编写 Lisp 函数的任务非常容易,而不用管众所周知的那些错综复杂的圆括号。结构编辑器可以帮助圆括号恐惧症患者战胜 Lisp 稀少的语法带来的多数缺点。
很多其他经常引证的缺点(比如,动态作用域,缺乏“块结构”,单一的数据类型,低效的数值操作和计算效率)已经在新方言中以各种方式去除了。
尽管很多年过去了,仍然只有不多的讲授用 Lisp 编程的教科书,这种情况最近已经戏剧性的改变了。现在已经有了针对不同方言的、对不同背景的读者广泛的教科书。Siklossy(1976) 的书使最老的一本。它很大程度上限制自身到 Lisp 1.5 已经介入的那些特征。Allan(1978) 仍是一本出色的技术性介绍,使用“M-表示法”使它很大程度上独立于任何特定方言,它还包含了对实现要点的一个可靠的讨论。但是 Allen 的教科书对没有先前的编程经验的学生可能是不可企及的,Touretzki(1984) 和 Hasemer(1984) 写的书明确的针对这种“初学者”。Wilensky (1984) 是更加面向技术的另一个有趣的教科书。这本书有两个版本可获得;一本基于 FranzLisp 而另一本基于 Common Lisp。Winston 和 Horn(1984) 强调 AI 应用。他们的书是 Winston(1984) 的伙伴并且被重写了来确保 Common Lisp 兼容。Tanimoto(1987) 是关于 AI 方法论的一个新近的教科书。同很多这种教科书一样它包含一个优秀的、但必须是简要的对 Lisp 的介绍。最后, Charniak 等(1980)写一本教科书,基于 UCI Lisp,对于 AI 编程技术给予高级的对待,它的一个新版不久就会出版。Abelson、Sussman 和 Sussman(1985) 仍是关于 Scheme 的最重要的教科书。Friedman 和 Felleisen(1986) 和 Eisenberg(1987) 提供一个要求更少的介绍。Dybvig(1987),ChezScheme 的开发者,写带有一些更充实的例子的一本教科书,在其中他还覆盖了如引擎和语义扩展这样的特征。有一个活跃的 Scheme 用户组通过在 MIT(uucp: Scheme@mc.lcs.mit.edu)的邮件列表交流。
|