Top positive review
54 of 55 people found this helpful
Old but still very good
on July 9, 2003
Winston and Horn's "Lisp" is an old chestnut. It has stuck around, undergone several editions, and remains in print for a reason; it's a very clear and thorough introduction to programming in Lisp (and, beginning with the 2nd edition, it is specifically about Common Lisp, the most widely adopted dialect of Lisp). In fact, it's probably the best introduction to Lisp there is; yet it's not the right book for every beginning Lisp programmer.
This book is apparently intended for programmers who are not only new to Lisp, but fairly new to programming in general. Consequently, it would not be the ideal book for a seasoned programmer who already knows multiple languages and simply wants to learn one more. I suspect that such a person would find this book a bit on the pedantic side, as it covers basic concepts at length. A better place to start for experienced programmers would probably be Paul Graham's fine book "ANSI Common Lisp", or perhaps even, "Lisp in Small Pieces" by Christian Queinnec, which covers interpreters and compilers in addition to Lisp programming. If you are looking for a very complete reference on Common Lisp (as opposed to Scheme), then Guy Steele's book "Common Lisp, The Language" is the right choice; it's another old chestnut. Finally, if you are not set on Common Lisp, you may want to consider "Structure and Interpretation of Computer Programs", by Abelson, Sussman, and Sussman, which is a Scheme classic.
Winston & Horn's book has some very nice features. It not only covers all the basics, it also covers CLOS, the "Common Lisp Object System", which is to Common Lisp what C++ is to C; that is, it is an addition to Common Lisp (essentially a "layer") that allows the programmer to define classes, sub-classes (with inheritance), and methods. In my opinion, CLOS is by far the most compelling reason to use Common Lisp rather than Scheme. Winston & Horn also do an admirable job of explaining both "lexical" and "dynamic" scoping, with the former being the most important. In fact, it is essential to understand "lexical closures" before one can write effective Lisp programs, which is why Winston & Horn devote so much attention to them, even developing a kind of graphical representation for them.
Over all, this is a fine introduction to Common Lisp, and programming in general. It's an oldie but a goodie.