The strength of this book is its combination of breadth and completeness: there is working code (well beyond the toy stage) of a large number of different AI systems that cover a large subset of what is commonly considered AI. The programming itself is rather basic, and very straightforward. In many places an advanced programmer would have avoided a global variable, unified code through the use of higher-order functions, had functions communicate through a shared local environment, created a lazy list, you name it. The author avoids most of these more advanced approaches in order to present the ideas behind the approaches without being sidetracked into programming technique issues, and that is the correct choice for this book. Even as it is, there is already the duplicity of teaching Common Lisp and teaching AI programming. That being said, the code in general is not bad at all, even though I wouldn't want my students to learn CL programming from it. The author has simply bent down to the level of, a good C programmer, and worked from there. His main intention being to teach AI programming approaches, he has spent much less time to raise the programming level of his audience. Knowing the author's level of Lisp programming, I can't wait to see a book by his hand on how to use abstraction as an organising principle in programming.
This book is equally excellent regardless of whether you wish to regard it as: a) A historical study of Artificial Intelligence, with USABLE examples of code, or b) A book presenting techniques for programming in Common Lisp. As a reference about Common Lisp, it is certainly lacking, but this is no great problem when both the Common Lisp HyperSpec and Steele's book are readily available in electronic form. It provides something more important: SIGNIFICANT examples, and significant discussions on WHY you would use various Lisp idioms, and, fairly often, discussions on HOW pieces of Common Lisp are likely to be implemented. Its discussion of an implementation of the LOOP macro, for instance, provides a very different point of view than the "references" to LOOP. (Contrast too with Graham's books, which largely deprecate the use of LOOP.) From an AI perspective, it is also very good, providing WORKING SAMPLES for a whole lot of the historically significant AI problems, including Search, PLANNER, symbolic computation, and the likes. It would be interesting to see parallel works from the following sorts of perspectives: - The same sorts of AI problems solved using functional languages (e.g. - ML, Haskell), to allow contrasting the use of those more modern languages. Being more "purely functional" has merits; such languages commonly lack macros, which is something of a disadvantage. - The use of CL to grapple with some other sorts of applications, notably random access to data [e.g. - databases] and rendition of output in HTML/SGML/XML [e.g. - web server].
This is an extremely advanced book on AI techniques. The examples are the best that I have seen in thirty years of Lisp involvment. The author treats many of the classical AI programs and implements them with Common Lisp. Sophisticated search strategies are discussed with example code being given for all of them. A very strong chapter on program optimization is included, a subject often omitted by Lisp writers. Included is complete code for Eliza as well as a treatment of EMYCIN. The author also treats the implementation of embedded languages and gives PROLOG and SCHEME as examples. The book is addressed to production level programmers. This book is definately not for beginners in the Lisp language.
I borrowed this one from a friend, and I am hesitant to return it. The sections on optimization have been reread often. I would not say the book is advanced. A college degree and one semester of LISP instruction, (and maybe access to an "old timer") should be sufficient if you patiently work your way through. The latter chapters are relatively independent of each other, so don't worry if a section seems too hard. The chapter on GPS is of historical interest, but so obviously dated that I did not work any of the examples in this chapter - but that's the strength of the book - different people will find different chapters interesting.
I have no background in computer science or AI, but found myself needing to use Lisp for various creative and artistic purposes. I've spent a lot of money on books relating to Common Lisp, but I wish I had just gotten this one and Touretzky's "Gentle Introduction to Symbolic Computation." The particular strengths of this book are its detailed discussion of advanced topics, especially optimization, and the practical overview of current and historical AI topics through programming examples. Very clearly written.