Practical: A Simple Database(实践:一个简单的数据库)
很明显,在你可以用 Lisp 构建真实软件之前,必须先学会这门语言。但是请想想看——你可能会觉得:“‘实用 Common Lisp 编程’ 难道不是反语吗?难道在确定一门语言真正有用之前就要先把它所有的细节都学完吗?” 因此我先给你一个小型的可以用 Common Lisp 来做的例子。本章里编写一个简单的数据库用来记录 CD 光盘。在第 27 章里,为我们的流式 MP3 服务器构建一个 MP3 数据库还会用到类似的技术。事实上,它可以被看成是整个 MP3 软件项目的一部分——毕竟,为了有大量的 MP3 可听,对我们所拥有并需要转换成 MP3 的 CD 加以记录是很有用的。
在本章,我只介绍足以使你理解代码工作原理的那些 Lisp 特性,但细节方面不会解释太多。目前你不需要执著于细节——接下来的几章将以一种更加系统化的方式介绍这里用到的所有 Common Lisp 控制结构以及更多内容。
关于术语方面,本章将讨论少量 Lisp 操作符。第4章将学到 Common Lisp 所提供的三种不同类型的操作符:函数、宏,以及特殊操作符。对于本章来说,你并不需要知道它们的区别。尽管如此,在提及操作符时我还是会适时地说成是函数、宏或特殊操作符,而不会笼统地用“操作符”这个词来表示。眼下你差不多可以认为函数、宏和特殊操作符是等价的。
另外请记住我不会在这个继 “hello, world” 后写的首个程序中亮出所有最专业的 Common Lisp 技术来。本章的重点和意图也不在于讲解如何用 Lisp 编写数据库,而在于让你对 Lisp 编程有个大致的印象,并能看到即便相对简单的 Lisp 程序也可以有着丰富的功能。