The Lisp Bookshelf
So I've obviously been paying a lot of attention to this site lately... so much so that I'm thinking of some sort of excuse for explaining the absence of decent reading material.
Jokes aside, I've recently gone through spells of intense study and absolute laziness. However, I have come across a gem of a website that has inspired this post, Programming-Musings by Jose Antonio Ortega Ruiz (Jao).
Jao is mainly a Scheme hacker and is the author of the well-known Geiser project, an interactive environment for Scheme in Emacs. I found his website by accident through a post in Hacker News, and read his post A Scheme Bookshelf which detailed his road to Scheme mastery.
I've been thinking of writing a similar post on my own study path of Common Lisp and reading his account finally made me decide to get on with it.
My first contact with Lisp came through the incredible book Structure and Interpretation of Computer Programs SICP for short. I got through maybe 3 or 4 chapters before being overwhelmed by some of the mathematics (I'm not portraying a very flattering picture of myself here...) but then again this was about 3 years ago, I'd like to think I'd be able to hold my own by now.
Anyway, despite the lack of ability that caused my abandonment of SICP (I'm planning to take it up again after I finish the book I'm currently reading), I didn't give up on learning Lisp and started reading another often recommended book, HTDP or How to Design Programs . Although I did learn a few interesting and valuable methods like design-by-contract, for the most part it was difficult to maintain my enthusiasm and drive to finish the book, and I dropped it after the 4th or 5th chapter.
Enter Practical Common Lisp by Peter Seibel. This book was touted as the book from which one could enter the magical land of Lisp hacking... and yet even here I only managed to get through a few chapters before finally abandoning it.
At this point I was beginning to lose hope and think that I would never be initiated into the secret brotherhood of Lisp hackers, I had failed to read through not one, not two, but three of the recommended books for novices beginning their journey. This was quite discouraging and I was about to call it quits when I came across Land of Lisp. This is the book that finally started me on the path to enlightenment... and is probably to blame for my current Lisp superiority complex.
Quite a few hackers actually don't recommend this book as they say it doesn't teach and show idiomatic Common Lisp, I'm not experienced enough to argue either way but I can say that without this book I probably would still be floundering around. Whether or not it does teach best practices, what this book does do is engage the amateur Lisper and give him glimpses of the magic that is present in Lisp land.
After having finished Land of Lisp, I started reading Peter Norvig's Paradigms of Artificial Intelligence Programming , this is where one can starts to truly see the beauty and power of Lisp, as well as more idiomatic code. It takes the reader through past A.I. projects done in the 70s and 80s and how Lisp can/was/is implemented to solve those problems. I do have to hit #lisp at freenode and consult with the Hyper Spec quite often, but if the reader is independent and not dependent on being spoon-fed then this book will take him to the next level.
From this point as I am still reading it, I will post the books that I plan on reading after finishing and digesting PAIP.
I plan on tackling SICP again and at the same time go through Lisp In Small Pieces by Christian Queinnec. This after reading Jao's review on said book. It seems to be the Dragon Book equivalent for Lisp, describing 11 interpreters and 2 compilers.
After the SICP and L.I.S.P duo, I plan on reading either Paul Graham's On Lisp or Doug Hoyte's Let over Lambda (or maybe both???). Both are said to deal with extremely advanced programming topics, specifically the Lisp secret sauce, macros (LoL is supposed to be one of the most hardcore computer programming books out there).
Other books that I'm looking at but haven't yet decided when I will dedicate some time to them are: An Introduction to Functional Programming through Lambda Calculus. While the book's title suggests that the Functional-style paradigm is the core of the text, according to various reviews it's a great introduction to the Lambda Calculus itself. I've been wanting to start reading up on the Lambda Calculus and this just might be the way in.
Another seemingly interesting book is Common Lisp Modules: Artificial Intelligence in the Era of Neural Networks and Chaos Theory. I've always been interested in Neural Networks and the chance of learning how to implement them in Lisp sounds too good. According to the book description it also contains speech and handwriting recognition code, a computer chess game, and other goodies.
Rounding out the collection are two books that apparently complement each other. Object Oriented Programming in Common Lisp and The Art of the Meta Object Protocol both deal with CLOS, the Common Lisp Object System. Object Oriented Programming in Common Lisp is supposed to be the gentle yet useful introduction to CLOS while The Art of the Meta Object Protocol, written by some of the developers of CLOS, dives into the actual implementation of the meta object protocol in CLOS and how to modify its behavior.
Unfortunately I couldn't find the websites of some of the books so I've linked to their Amazon page