A Programmer's Guide to Common Lisp
Deborah G. Tatar
reviewed by Daniel Weinreb
Lisp has been around for more than twenty-five years. But for most of Lisp's
lifetime, there haven't been any good books that teach the language. Only a few
books were available, ranging from mediocre to awful.
There were two reasons for this. First, Lisp was used only within a few narrow
communities, in which word-of-mouth instruction and a reference manual were
sufficient to pass on knowledge of the language. There was not enough demand to
justify a large printing of a book, or to attract the attention of good writers.
Secondly, Lisp existed in many dialects, with common ideas and concepts but
different naming conventions, syntax details, and so on.
In recent years, Lisp's popularity widened, and some more books started to appear,
some of them better than anything that had come before. However, it was still
hard to produce a good textbook because of the dialect problem. If you were writing
such a book, as soon as you got past the most elementary features of Lisp, you had
only two ways to go. First, you could stick to a small subset of primitives, and
ignore all the rest of the features of Lisp. The resulting programs would run on
almost any Lisp system, but were very awkward and usually showed poor
programming style. Alternatively, you could pepper the text with warnings about
how things might work one way in one dialect, another way in another, and so on,
and provide appendixes describing the differences between dialects. This resulted in
better programs but a more awkward writing style. Also, you could never cover all
the dialects and subdialects, and the dialects were changing with time anyway.
Happily, this obstacle has been greatly reduced by the spread and general acceptance
of the Common Lisp dialect. Now that Lisp is much more popular, and a common
dialect is in wide use, many new books have appeared, and many existing books
have been revised and re-issued in Common Lisp versions.
The Common Lisp language doesn't just unify the syntax of the Lisp that was
around ten years ago. Many new capabilities were incorporated into Common Lisp,
reflecting developments in the language that took place in the late Seventies and
early Eighties. Of the existing books on Lisp, most spend relatively little time on
these more modern features. Some books are intended for beginners, and cover the
basics so thoroughly that they're over before they get to the modern features.
Others are re-issued versions of books written for earlier dialects, in which those
features weren't present. Some books have another goal, such as teaching artificial
intelligence techniques, which also limits the depth to which the language is covered.
The modern features are defined in Common Lisp: The Language by Guy L. Steele .
Jr., which is the reference manual for the Common Lisp dialect. However, Common
Lisp: The Language is not intended as a textbook or tutorial. The manual defines
the features, but doesn't spend much time explaining how to learn when to use
them, and what you can do with them.
A Programmer's Guide to Common Lisp, by Deborah Tatar, distinguishes itself as
the first textbook to cover not only the basics of the language, but the more modern