推荐给大家一本 Common Lisp 的入门级教材,COMMON LISP: An Interactive Approach

相信有不少人爱屋及乌对 Common Lisp 起了兴趣去看 Peter Seibel 的 Practical Common Lisp 或者 Common Lisp Cookbook,结果半途而废。在我看来问题既不在这些书也不在 Common Lisp,而在于这些书的定位根本不是入门级教材。

田春在他的一篇文章末尾给出一个 CL 的学习计划,值得一提的是他推荐 Practical Common Lisp 要在读完 1000 多页的 CLtL2 和 PG 的大作 On Lisp 之后再读,在田春看来 Practical Common Lisp 并不像大家想的那样是学习 CL 的第一本教材,而是一本相当高阶的教材,而他推荐的入门教材是 Stuart C. Shapiro 的 COMMON LISP: An Interactive Approach

我读完了这本书,认为其确实是一本优秀的入门教材。它有以下优点:

  • 几乎不预设你有任何编程经验

  • 讲解耐心细致,但又不啰嗦

  • 足够薄,只有300多页

  • 只讲授基本的知识,而不是向你兜售一些小的 tips (而 CL Cookbook 全书都在讲小的 tips)

考虑到 elisp 缺少一本相同定位的入门教材,这本书或许也是入门 elisp 的首选。

当然如果你还处在对括号感到头痛的阶段,我推荐你先去看 Daniel Friedman 的 The Little Schemer。 (推荐你打印出来并备上一把尺子)

在 emacs 上搭建 CL 开发环境可以参考 emacs4cl,或者直接使用个人版的 LispWorks :slight_smile:

5 个赞

感谢推荐。

马上下单买尺子,好人一生平安(逃

Common Lisp 和 elisp有什么不同?

一个有一千多页语言标准,一个有一千多页语言手册的区别

An Interactive Approach 有个问题:成书时间过早,用的是 CLtL1,书中用的 lisp: clos: package 都早己废弃了,代码习慣都是 Lisp Machine 时代的,没读过 ANSI 标准的话难以甄別,我个人是当成修 1990 年左右的旧代码时用的参考资料的。

David S. Touretzky 的 COMMON LISP: A Gentle Introduction to Symbolic Computation 相比之下就好很多,没有涉入到现在已经弃用的的特性,代码风格很扎实,哪怕放现在都不显得过时,对 Emacs Lisp 也适用。(原因是这书是在 CMU 写的,CMUCL 后继的 SBCL 在现代 Common Lisp 社区影响很大,代码风格也得以保留)

Paul Graham 的另一本 ANSI Common Lisp 可作为 A Gentle Introduction 的进阶书。

3 个赞

你是不是没有意识到 Emacs 自带的 Elisp Intro

以及,Lisp 相关的书单

4 个赞

CLTL 属于大部头权威手册,On Lisp 属于魔法书,两本对应 Perl 的骆驼书和黑豹书,而 PCL 文笔流畅幽默,是 CL 大量入门书籍里最新的一本,这要排在 CLTL 和 On Lisp 之后,那就没必要看了。

而如果 PCL 看不下去的人,我不觉得他能看进去 CLTL 和 On Lisp。

楼主列的其它三本入门书也是名著,看口味挑一本即可,但踩 PCL 鄙人表示不服😂

BTW,CL Cookbook 就是类比 O’Reilly Nutshell 系列,根本就不是入门书。

我已经打下了还可以的地基,想认真看看《On Lisp》和Peter Norvig 那本跟AI有关的书了

ANSI Common Lisp 也很不错啊 我的lisp入门书(除了lisp之源) 简体中文 — ANSI Common Lisp 中文版 (acl.readthedocs.io)

clisp学了有什么具体的用处?

clisp 是 GNU 的 Common Lisp 的实现.

学 Common Lisp 对我来说就是入门 Emacs Lisp 的过程更轻松一些 :rofl:

1 个赞

Common Lisp 以前好歹是正儿八经的工业语言,不管是从灵活度还是从性能上来说,做些个人项目还是不成问题的。对于 Emacs 而言,就目前各种包动不动就上 cl-lib 的情况,学了也有助于看懂它们的代码。

1 个赞

JavaScript 是Lisp的让人感到欣慰的优秀继承人吧

我前两年后台主要是用Common Lisp,最近还是转战到 JavaScript/node.js
:face_holding_back_tears:

CLisp的函数很丰富,用起来比较方便,可以用来做一些项目

可以理解为Lisp中的Python?那种感觉

另外,它还有完整的面向对象系统:CLOS

JS最多算是Lisp的私生子……

但它是比嫡长子更加成功的儿子 :rofl: