Why Clojure? (2018)
Every time Clojure comes up on HN there always seems to be a lot of negativity. I&#x27;ve come to flinch just seeing a mention of the language, which I do still love and have used for a decade, but perhaps this is how everyone feels about their pet language. I think there&#x27;s a bit of a tension with Clojure, that it&#x27;s a weird combination of being principled and being pragmatic, which means that there are always languages that on paper beat it out on any given axis. At the same time Clojure people do have a tendency to paper over the cracks quite a lot, at least some of which must be cognitive dissonance.<p>The biggest problem is that it&#x27;s very hard to picture why, at the end of the day, all the choices that went into Clojure come together into a productive whole for building real-world software. It&#x27;s a really nice mix of terseness without preventing clarity, simple lightweight modelling paradigms, interactive development, easy access to multiple cores, and all on top of the JVM with its enormous ecosystem. It&#x27;s not as Lispy as other Lisps. It&#x27;s not as pure as other functional languages. It doesn&#x27;t have a fancy type system. It doesn&#x27;t have native performance. But it gets stuff done and it does so fairly elegantly in most cases. I&#x27;ve found it a really solid career choice, there&#x27;s really very little that you can&#x27;t solve in a satisfying way. Plus whatever you think about parentheses, Clojure syntax basically hasn&#x27;t changed in 10 years, most new features are just libraries of new functions and macros, and for me that validates that it&#x27;s the correct approach.