Developer's Reading List
, July 17, 2012 Windows Debugging, Web Apps, JavaScript, and Clojure Lead the List of New Titles
Programming Clojure, 2nd Edition
by Stuart Halloway and Aaron Bedra
Clojure is a language that continues to gain fans. While it hasn't yet broken into the mainstream, that's not for lack of enthusiasm from its community of users. Clojure is an implementation of Lisp developed for the JVM, with special support for parallel programming. (Variants are under development for .NET and JavaScript platforms.) The language represents a renaissance of interest in S-expressions, the unique syntax that expresses Lisp's fundamental view of code as data. While the language is gaining fans from both the die-hard Lisp community and the folks who favor functional programming, it has engendered comparatively few books. The best introduction, in my estimation, is this volume, which was recently released in its second edition.
The primary author, Stuart Halloway, is a presenter I've admired for lucid, approachable explanations to a surprisingly wide variety of topics, and he plies his trade well in these pages. Because Lisp will appear foreign to many mainstream developers, it requires more careful explanation of basics than do imperative and procedural languages. The authors do this well and clearly without ever coming off as glib or condescending. Rather, you feel a colleague is leading you through the basics and then through more advanced material, such as transactional memory, concurrency, and finally Lisp/Clojure macros (through Clojure v. 1.3).
Theoretical topics, such as recursion, that are fundamental to functional programming but comparatively rare in the mainstream, are explored in full detail, so that they become intuitive via substantial exposure. By the end of the book (less than 300 pages), you find yourself thinking functionally, which is an impressive feat. My only objection to this otherwise excellent volume is that it presents mostly short examples, so that it never gives you the experience of reading and working through several pages of Clojure code. That notwithstanding, I highly recommended this book.
— ALB