Lisp

In my desire to keep myself sharp as a programmer while I don’t have to do it to earn a living, I’ve tried my hand at a good number of languages over the last 3 years that I’ve never written code in before. Some I’ve never written more than toy programs in — Haxe and Chapel spring to mind — and some I’ve written large, fully-working applications in — Ruby being the most notable.

There’s a fairly large middle ground of languages and language toolchains that I have more than a passing interest in. Some I look at because of the tooling, environment or compiler technology — Objective-C is easily the most attractive to me, with interesting things in all three areas — and some I look at simply to learn new things.

One language has frequently come back to haunt me over the last few years, though. I’ve written a lot of code in it, but I’ve never felt like I’ve really wrapped my brain round it enough to use it for more than just research: Clojure. I’m haunted because I desperately want to use its power, features and ability to reason about state over time to help me solve a very real problem, but I can’t seem to think the way it wants me to think.

More importantly, and the same reason I can’t grok Haskell, is that I can’t read it very well. In Haskell’s case I struggle to read it at all. It’s surprising in Clojure’s case because it’s a Lisp and therefore remarkably free of syntax compared to most languages. I mostly end up tripping over the order of execution or the arity of the functions I read, especially those I didn’t write.

It’s not that it’s impossible to figure out, it’s just difficult, for me at least. So what’s next? I’m loathe to give up, so rather than just muddle through this year I think I’m going to start again from scratch and explore the language again, with a look at some new tools to program it, new literature and fresh determination. I’m hoping a new start will make it all truly click for the first time.