The Joy of Clojure – This fine 2nd edition makes learning a Lisp dialect fun (well, almost) – #bookreview

fogus2_cover150

The Joy of Clojure, 2nd Edition

Michael Fogus and Chris Houser

(Manning – paperback)

Several times, I had played with Clojure and considered learning it. But I kept deciding it looked too weird, required too many parentheses and put its operators in strange places. Furthermore, it has always ranked low on the assorted lists of currently “popular” programming languages.

So I moved on and put my focus elsewhere. Indeed, I ignored the first edition of this book. But I am now glad that I have had a chance to reconsider Clojure and to review this new edition from Manning.

The book by Michael Fogus and Chris Houser is intelligently and pleasantly written, and the authors do an excellent job of explaining (and “selling”) Clojure to skeptics like me. Compared with many other programming languages, Clojure is compact. And, it is focused primarily on functional and declarative programming. Also, it offers excellent support for concurrency (where several computations are performed during overlapping time periods rather than waiting for one-at-a-time sequences to complete).

Clojure looks weird because it is one of the several dialects of Lisp, which first appeared in 1958. But Clojure runs on the Java Virtual Machine and JavaScript runtimes. And, it is a functional programming language that has gained a good reputation for being fast and stable. Along with its built-in concurrency support, Clojure also offers the “predictable precision” of immutable and persistent data structures.

The Joy of Clojure is not a book for absolute beginners. Still, Clojure is very easy to install (I have it running on a Windows PC and a Linux PC). And the book’s code examples work well with Clojure’s Read-Eval-Print Loop (REPL).

I am still not convinced there is a lot of “joy” in learning one of the Lisp dialects. Yet, with this fine book as a guide, I am getting a better feel for Clojure and its excellent possibilities. (For example, its compactness and concurrency support likely will make it a lot more popular soon.) And I am enjoying the authors’ text and code examples, even though the latter still look strange as I key them in and modify them to get new results–or error messages.

Bottom line, I am pleased to recommend The Joy of Clojure to others who have been curious but resistant. Resistance is, after all, futile.

Si Dunn