Sunday, 1 June 2014

Clojure - a liberal language with a conservative community

After playing with the idea of learning Haskell, Python and Ruby, eventually I chose to learn Clojure. I only understand now why it is such an appealing choice for me.

Steve Yegge is a technical blogger who used to write very long blog entries. It's worth to read all of them. And his drunken blog rants as well. He worked for Amazon (the drunken blog period) then he moved to Google. And believe me: he knows the world of programming languages. He probably wrote more language interpreters than languages I've ever touched. This week I found another long piece of his thoughts. TL;DR for those of you with short attention span: Steve introduces the terms `software liberal` and `software conservative`. The statement is that software engineers are also (software) liberals or conservatives. This, just as in politics, means that one group can't understand the other no matter how much they argue, simply because their value systems and beliefs differ. Steve places companies and programming languages on this axis as well: Microsoft and Google are conservative, Amazon and Facebook are liberal. Ruby, JavaScript, Python, C, Java, Clojure, Haskell - from extreme liberal to extreme conservative.

Then he picks a language that recently I am the most interested in: Clojure. In his early days with Clojure he liked it so much that he even wrote the foreword for The Joy of Clojure. That's one of the most important Clojure books out there (2nd edition's just released). Steve is a "hard core software liberal" and when he found that the Clojure community is conservative he turned from the language. I think Steve missed to emphasize this point: the language can sit on different side of this metric from its community. Clojure is a liberal language by all means. Even Steve knows that. And yes, the Clojure community is conservative. Liberal languages are powerful and sexy. If you say "But JavaScript is not sexy!" you should read JavaScript Allongé. Liberal communities, however, are kind of a mess. At least for me they appear so. Just have a look at npm.

Software engineers with different views cannot agree on programming languages. That means it is pointless to say "Clojure is the best because..." All I can say is that for me Clojure is the best combination: a liberal language with a conservative community.