Last weekend I had the pleasure of going to ClojureBridge, a weekend “Intro to Clojure” course put on by Cognitect, the company that made Clojure, here in Durham.
I’d heard of Clojure a bit while I was first learning Ruby, often hearing it recommended as a good language that a Rubyist could use to peak into functional programming. I however had never really looked into learning it and didn’t know much about it, so I was excited to get a crash course on the basics.
The way that the course was set up was fantastic. They split up attendees by skill level and each table just had two attendees of the same level and then a TA assigned to work with those two. This way, everyone got really hands on attention and, because each table had their own TA, everyone could go at their own pace and complete programming beginners as well as those senior in other languages could all get something out of the course. They also had several different projects to choose from so that everyone could do something that interests them.
This set up allowed me to get way more out of the course than I expected. I was lucky enough to get David Chelimsky, former maintainer of Rspec, as my TA so he was able to draw some good parallels between Ruby and Clojure for me to help explain some of the concepts that he knew I probably wouldn’t know immediately as someone who primarily codes in Ruby. As a result I got a fairly good picture of Clojure (at least for someone who hasn’t built a full app in it).
I’m not sure how much I’d want to continue with Clojure in the future. The thing that attracted me most about Ruby and that I absolutely love is the community, and Clojure seemed to have a pretty good community as well, so that’s definitely something going for it. I’m not in love with the polish notation and I have a hard time wrapping my head around reading a line from innermost parens to outermost, instead of from left to right. However, I think stretching my mind in this way is probably a good thing and I’m kind of tempted to stick with it just because it feels so unnatural. At the very least I think it’s good idea to spend some time working in a language where the code itself is just data.
Overall, with my forays into functional land I thus far like Elixir much more than Clojure, but I also think that’s because it feels more natural for me with it’s syntax being so similar to Ruby, not because it is somehow inherently better. I think the only solution is to keep playing with and learning both!