Programming books are not fun. No one uses Lisp anymore, and almost no one ever did. There is no practical reason to read a book about Lisp. These are a few misconceptions that this review aims to correct.
Land of Lisp is by Conrad Barski, M.D. It is a book filled with enjoyable art, clear prose, and an easy to follow structure. The examples used in the book are easy to comprehend and do a very good job of illustrating the concepts being taught while also being interesting.
Let’s step back for a minute. What is Lisp? Lisp is a functional and expressive programming language. It was born out of an attempt to make a programming language that is easily read and understood by humans while also being able to do a lot in a short number of lines. Lisp code is compact and involves a manner of expressing instructions that is different from any other programming language I have experienced. It is with good reason that people describe Lisp as poetry, as elegance, or as “casting spells”. When you really get it, Lisp will affect how you program in any language because it changes how you think. I may be biased, I first encountered Lisp way back in 1987.
Land of Lisp includes within it the same sense of quirky brilliance that you remember in your favorite computer science or physics gurus. All share a different, not-completely-serious way of looking at the world that also allows them to come up with ideas that shatter stereotypes and enable new inventions. The book resides somewhere between the classic The Far Side comics and Richard Feynmann, perhaps with some of the better qualities of Richard Stallman thrown in, without Stallman’s sometimes off-putting traits. The book is a throwback to an era when playful brilliance was the norm in science, including computer science, and I mean that in a good way. This is one of the most fun computer books I have ever read.
So what about the quality of the information, from a technical standpoint? Rest easy, this also receives kudos. Land of Lisp starts with a short history section to give the reader context and then jumps right in to programming. Throughout the book, games are used to illustrate concepts. The first game is identical to the “guess the number” game I programmed on my Casio fx-7200G programmable graphing calculator back in 1986. The game is a simple one, but it provides a launching pad to greater things. The program is used to discuss global and local variables, functions, and basic Lisp etiquette.
From here, we move into syntax, code and data, and lists. Then, in the section titled “Lisp is Symmetry,” we begin the deeper topics like conditionals, paths, objects, reading and printing text, lists, and lambda. The last one, lambda, even gets its own chapter, which is a good thing since so many find it difficult and confusing at first. Before the section ends, Land of Lisp helps you learn important concepts using the classic Hunt the Wumpus and we get into arrays, hash tables, structures, and sequences. Now we are almost halfway through the book.
Land of Lisp includes some atypical examples for Lisp, and I like this. While it teaches the remaining vital programming concepts and Lisp style, we learn not only silly games, but even how to create a web server, really grok functional programming, macros, and more. The book is focused on Common Lisp, but modern variants like Clojure are also discussed.
If you have ever wanted to learn Lisp, but find typical tutorials and resources a bit dry, this is the book for you. Even if you aren’t as excited about the playful bits of the book, the quality of the prose and technical descriptions are such that you should give Land of Lisp a chance.
Disclosure: I was given my copy of this book by the publisher as a review copy.