Learning Clojure – my books
|11-May-2012||Posted by Sonia Hamilton under Clojure, Lisp, Ruby|
I’ve been playing with Lisp and now Clojure for a couple of years now. Here’s a list of the books I’ve read on my journey to Clojure enlightenment (I’ve still got a long way to go…).
My first Clojure book wasn’t even about Clojure, it was about Lisp! One Sunday afternoon I was lurking in the computer section of a local bookshop (a great way to spend a Sunday afternoon), and came across Land of Lisp. I’d heard about Lisp, that “obsolete” language that used to be used for Artificial Intelligence but who uses it nowadays? Anyway, the cover was colourful and the cartoons were great, and before I knew it I’d read a couple of chapters and wanted to know about this Lisp stuff and I bought the book.
But after reading it for a while and getting sidetracked by Scheme and the greatest book every written about programming, Land of Lisp languished on my bookshelf. The example used in the book (yet another game) didn’t relate to my day-to-day use of programming. I was getting lost because I wasn’t doing any exercises, and Lisp just didn’t seem to be an acceptable Lisp.
Seven Languages in Seven Weeks pointed me towards Erlang, Haskell and Clojure. Ah-hah! Clojure – runs on the JVM (so I can use it machines where I can’t/don’t want to install stuff, just like JRuby). A modern Lisp with cleaned up syntax that has access to all the Java libraries for doing real world stuff. I’m hooked!
At a Ruby on Rails Oceania (RORO) meetup someone was raving about The Joy of Clojure. So I drank from the firehose and my brain exploded and nothing made sense. As Steve Yegge (a fellow Googler) says in the intro, “you’ll learn fast” – but only if you’re already comfortable with Lisp. The book moves too fast, the explanations are cryptic, and it seems to bounce all over the place. Another book to languish on my book shelf.
My next book Practical Clojure was where things started to make sense. It’s more directed at beginners and just explains how the language works. But it’s a thin book (not enough detail) and some sections just seem to be reprints of the API (function foo does this and here’s a 5 line example; function bar does this and here’s a 5 line example). No real digging into the how and why of using Clojure.
And onto my favourite Clojure book – Clojure Programming by Emerick et al. Like many O’Reilly books it’s definitive. Lots of detailed examples, clear explanations, great diagrams, coverage of related areas (eg Clojure for web programming). Example code comparing how you do things in Clojure with other languages (Java, Python, Ruby). This is the book where I’ve really started to understand Clojure.
Now I’m working through the 4clojure problem list (really interesting). Then I’ll probably buy some more books from The Clojure Bookshelf. And continue reading Paul Graham’s On Lisp (I got it printed through Lulu). And one day I’ll reach enlightenment :-)