Book Reviews

Programming Clojure by Stuart Halloway

ISBN-13: 978-1934356333
Publisher: Pragmatic Bookshelf
Pages: 304

Clojure is the most exciting and innovative addition to the Lisp language family in a long time (sorry, Arc ). With the 1.0 release of Clojure just outside the door, Programming Clojure is perfectly timed. I've followed the development of Clojure over the last year and had high expectations on Stuart's book. Let me say that I'm impressed. Both with Clojure the language and with this book.

So, what's the reason for all that excitement? Well, even if Clojure diverges from other Lisps in rather radical ways (it actually adds syntax!), Clojure is indeed a true Lisp including everything that makes Lisp unique and gives it its unprecedented power. Clojure targets the JVM, effectively giving it a widespread and established platform with a strong ecosystem in terms of libraries and deployment. This combination of the JVM powered by Lisp is one of the main selling-points behind Clojure. And because the language was designed directly for the JVM, it integrates neatly and efficiently with native Java code. The bottom line is that it will make Clojure more approachable and less controversial for the industry to adopt than traditional Lisps.

In addition to the strengths of Lisp itself, Clojure also brings some interesting features of its own to the mix. One such feature is Software Transactional Memory (STM). STM is pretty much a technique for simplifying shared memory handling in the presence of multiple threads without any need for explicit lock-based synchronization. Together with Clojure's functional nature, this makes an attractive programming model for parallelization. Another interesting feature is Clojure's sequence library. In Clojure, all data structures share a common abstraction. But it doesn't stop with dictionaries, sets and the like; the sequence library applies to XML data, directory trees, and reg-ex matches too. To sum up, what really shines about Clojure is its elegance, symmetry, and carefully crafted abstractions.

Stuart's book is an excellent introduction to this powerful language. Programming Clojure is a well-written and competent blend of theory, practical examples, and, most importantly, the book is exemplary short. Programming Clojure is a highly recommended read that takes a fast pace and delivers a solid introduction to one of the most promising programming languages of our time.

Reviewed August 2009