This is the text of my amazon review of this book, I gave it 5 stars.

The only lisp I ever knew was scheme and I’d long meant to dig into Common Lisp, so I finally got around to it. I am not sorry that this book was my introduction. Let me start off by saying that there are two kind of people in the world - the kind that like to read a tech book straight through and then start doing and the kind of people that like to do while reading the book (ok, so maybe there’s a few more kinds of people…). I am of the first sort and the organization of this book was perfect - I don’t know that I’ve read a book better suited to the way I like to learn a language. It is targetted to an experienced programmer, but one w/out any experience in LISP. I think it’d be a tough book for a complete newcomer to programming to start working with.

The book is divided into 2 sections, the first (slightly more than half) is the language reference and the second is the practical part. The language part was the perfect model for me, it works you from basic to advanced. Beginning from the very beginning it gives you suggestions on the environment in which to work with LISP and where and what would be good to install. It moves to through all the basics, syntax, functions, variables then spends a little bit of time on macros (a very key and subtle feature), moves onto numbers and strings, collections and lists (spends some time really covering these to give a true understanding), and then pushes on to I/O, OO in LISP and then a good look at FORMAT, exception handling and loops.

These were not cursory overviews of language features, but were in depth coverage. As such, it is inevitable that in trying to show you how things work they need to use some more advanced constructs that they have not yet covered. They, however, tell you that you don’t know about this feature yet and explain just enough about what it’s doing that it’s no impediment to understanding the example. They are very thorough and concious when this happens. The alternative, confining yourself to only what you’ve covered traps many writers into showing only trivial examples that are unable fully display particular concepts.

There are a couple practical examples in this first section that demonstrate ideas covered up to that point. The examples themselves are excellent, showing how programs are built up and refactored. It is a really clear view of the expressiveness that LISP allows.

The second half of the book is dedicated to putting things together in a diverse set of projects. The first, kind of standalone is the Spam Filter. The rest are parts of the elements needed to create a streaming music library from parsing binary files, extended to reading ID3 tags of mp3’s, to working with AllegroServe (a lisp web server), you build a database of music, learn how to build a shoutcast server and tie it all together with an online mp3 browser.

There’s a good amount of coverage on working with the web, generating html and the like. These practical topics are not the lightweight fairly trivial examples that you most often see in books, these are in depth and very diverse examples of what you can do with LISP. To me this is the advantage the book gets by its organization, by first letting you learn all the basics of the language, they can show you how a real program is developed using the full expressiveness of LISP.

I gave this book five stars because of the great way it was organized, the in depth coverage of it’s features and it’s friendly and readable writing style. It did have some flaws, sometimes it didn’t give examples on some topics that might have been more easily explained through a little show and tell, a couple minor typos caused a little bit of confusion. But these are minor nits that don’t detract from the overall goodness of the book. If you are interested in learning LISP, I can whole heartedly recommend this book.

← newer Review: PostgreSQL by Douglas  ↑  Review: Practices of an Agile Developer by Subramaniam older →

TwitterCounter for @nybble73