Review: Clojure Programming by Chas Emerick, Brian Carper, and Cristophe Grand
Clojure Programming is a clear, comprehensive, and effective guide to Clojure.
Before reading this book, I was proficient with Java, JavaScript, Python, and a few other languages — all primarily object-oriented and ALGOL-derived. Lisp and functional programming (FP) seemed alien and bizarre. But after hearing that people were getting real work done using FP with Scala and Clojure, and hearing Rich Hickey, the creator of Clojure, speak at Strange Loop 2011, I was inspired to get over my apprehension and learn functional programming and Clojure.
I decided it would be unwise to try to learn FP and Clojure at the same time, so I first wrote a program using FP in languages with which I was already familiar: CoffeeScript and Scala. It didn’t take long for me to build an appreciation for the paradigm.
Once I felt that I had a decent understanding of FP, I asked on Twitter whether anyone could recommend a book, and got a very enthusiastic recommendation from Sean Corfield for this one. It was available under O’Reilly’s pre-release program, so I was able to buy and read pre-release PDFs of the book.
The bottom line is that this book gave me a solid understanding of Clojure and enabled me to learn the language and gradually start using it. The concepts are presented in a thoughtful sequence and it’s made clear how each element of the language relates to the others.
The writing, examples, and organization are all excellent. And the book gets extra points for going beyond just explaining the language and how to use it, by being extra-comprehensive and covering how to really use the full Clojure ecosystem to build really useful software.
This is worth highlighting: if the book had been comprised of only chapter 1, “Down the Rabbit Hole”, and the first 2 parts, “Functional Programming and Concurrency” and “Building Abstractions”, it would have been an excellent book which I’d be recommending wholeheartedly. The inclusion of the subsequent parts, “Tools, Platform, and Projects”, “Practicums”, and “Miscellanea” make the book an invaluable resource and a fantastic value.
Ultimately, the book succeeds in conveying not only Clojure the language, but also the Clojure way, best practices, and key resources.