February 12, 2006
A short review of Peter Seibel's Practical Common Lisp
I recently finished reading Practical Common Lisp by Peter Seibel. For anyone who wishes to check it out, the entire text is available online at:
http://www.gigamonkeys.com/book/
This book serves as a very good introduction to Common Lisp.
It contains some of the best explanations I've seen of Common Lisp's loop macro, format directives, and condition system. These alone were worth the price, as it's difficult to find good information about them elsewhere.
My one major complaint is, with the notable exception of the Unit test framework chapter early on, the "Practical" chapters don't capture the incremental development style of Lisp very well. Most of the latter chapters involve typing out pages and pages worth of code at the end of which everything magically just works.
This is fine and all, but it neglects Lisp's major advantage over less dynamic languages like C and Java: the ability to build up larger systems piece by piece, experimenting with bits of functionality in the toplevel as one goes along.
Understandably, it's more difficult to capture this style of programming in book form1, but it would have been nice if Peter would have alluded to it a few more times in some of the larger examples.
I'm also somewhat puzzled that he chose to introduce his HTML Generation library at the very end of the book, when it had already been in use for four chapters. I believe the book flows better if you read chapters 31 and 32 prior to chapter 26.
Still, studying the compiled version of Peter's HTML generation language was absolutely fascinating for me - one of those "aha" moments.
A very good read overall. I'd also recommend Paul Graham's ANSI Common Lisp for Lisp beginners. I think it does a slightly better job of conveying the Lisp way of thinking, and does an exceptional job of explaining recursion if you're a beginning programmer and haven't *gotten* it yet.
[1] Although I hear Norvig does a very good job of capturing the incremental development style in PAIP, which is next on my reading list.
Posted by Josh Staiger at 09:53 AM
Comments
(none)
