Book review: The Joy of Clojure
Z Jacek Laskowski - Wiki Projektanta Java EE
The Joy of Clojure by Michael Fogus and Chris Houser (Manning, March 2011)
The "Why" of Clojure - mind-bending for enlightenment with idiomatic Clojure code
First and foremost, buy this book should you feel a need to learn the "why" of the Clojure language (btw, there're other books from Manning about the "how" and "where").
"The Joy of Clojure" has been on my shelf for almost a year (I believe I could read its drafts a couple of months back when it was in the Manning Early Access Program). I knew the authors - Michael Fogus and Chris Houser - from the Clojure developer mailing list and twitter, and since they used to offer inspiring tips I was quite certain what I might've expected from their book. And I have not been mistaken!
I have already read "Practical Clojure" by Luke VanderHart, Stuart Sierra (Apress, June 2010) and "Programming Clojure" by Stuart Halloway (The Pragmatic Programmers, May 2009). I remember when I wrote "lots of how but not much where and why" about the former. With "The Joy of Clojure" I've certainly been given the "why" (there's the book "Clojure in Action" from Manning which they say should supply the "where" - I can't wait to give it a read!).
I'm an almost exclusively Java, object-oriented professional and functional programming paradigm had never been of my interest. Not in the slightest. It's just with the advent of Clojure when my interest sparkled. And the days of a kind of detoxification from object-orientation begun.
I'm far from understanding functional programming, but I feel enlightened after having read the book. The book offers a variety of topics ranging from Clojure philosophy, functional programming foundations to Java.next with mutation (without mutation as I knew from Java) so when I finally reached the last Chapter 13. "Clojure changes the way you think" I had no reason to think otherwise.
There are no mundane, never-ending chapters about the basics of Clojure, its syntax and even a subset of what could be called - the language reference. It's not to say there's no introduction to the language or functional programming. Quite the opposite, but they don't stand out and are woven so gently that it's hardly to be noticed and thus become bored from.
"This isn't intended as a first book on programming, and it may not be an ideal first book on Clojure either" as says the Foreword. I fully concur with that and I don't recommend it as the very first book about Clojure, neither.
"A picture is worth a thousand words" has its place here as the pictures in the book greatly support understanding of the outlined concepts.
I don't think it's a book for a single go as not only did the content touch the design decisions of Clojure, but also the functional programming in general which ultimately made the book very useful even outside Clojure's realm. The book's reading was quite a tremendous mental undertaking for me. I've been using Java for about 15 years with no functional programming ever (besides simple HelloWorld-like applications), and again proved myself to spend more time to grasp the merits of functional programming with Clojure.
The book's one of the very few books which I'm so proud to have read. I wish you to find some spare cycles to have the pleasure to read it as well. It'll surely be the time well spent.
