Clojure is a pleasure. It is the tool I use with which I can most easily reason. My thoughts go straight into the REPL, no ceremony; the results I get there give me immediate feedback in a loop; the functions that result go into source files in a project that very clearly express my intentions. Clojure is expressive. Its level of abstractions very well match up with my thought processes.
I’ve written before about my path to Clojure. It started with a feeling that I wanted to grow as a programmer. Stepping outside of the C language family and beyond object-orientation seemed like an obvious way to stretch. It was probably Peter Norvig’s Teach Yourself Programming in Ten Years that planted that idea. That was a success. When I have gone back to Java or C# programming, I am aware of things that I used to just take for granted. State is a whole different thing to me now.
It was a long path to get to Clojure for me. I had a traditional Computer Science education, a programming career, then about 3 years of exploration of Lisp before I got here. And that is fairly close to the stories I’ve heard from a lot of my fellow Clojurians. So it’s hard for me to imagine a different path to Clojure (or any other functional programming language and/or Lisp). That’s just because I have a wee brain that sees things through the lens of my own experience. What if someone learns it as their first language? What is that like? Or what if a programmer learns Clojure without having even heard of SICP? I have a suspicion that Clojure would be a great first language, probably simpler to understand and play with for exactly the reasons I like to use it. For me, personally, ClojureBridge is an experiment to find out the answers to these questions.
The past few months I have been using Clojure more and more so that some days I spend the whole day in Clojure. Those are my happiest work days. So for the foreseeable future, I am only going to do Clojure work. I am a polyglot programmer, so I’ve never been into saying that I’m a Java Programmer or a C++ programmer or whatever. I just use the right tool for the job. Not anymore. For now I’m going to call myself a Clojure programmer. 1