| Sigh. Implemented a scheme in my undergraduate days (in C), had a small love affair with LISP in general (but none with girls ... probably related). I'll be opinionated here: It's not readable. It really isn't. You have to be in the thick of it to see the trees. Idiomatic doesn't cut it. Operator heavy Haskell is more readable. Most of the modern functional languages read closer to the spoken word. I'd rather be presented with a legacy OO code base, than an LISP one if the LOC was anything significant. I hope I don't come across as disgruntled, I am but a mere man, and I know my limits. And still have fond memories of bedding LISP. |
Hang on. Your opinion is that Clojure isn't readable because you didn't find other Lisps readable when you were an undergraduate? But you haven't actually tried Clojure yourself?
I have tried Clojure, and my opinion is that it's easily the most readable programming language I've found.
Clojure has very strong opinions about complexity, which in Clojure parlance is a measurement of interconnectedness between components. The language is built around the idea of reducing complexity, about making things isolated and independent. Idiomatic Clojure code therefore tends to have a very flat structure consisting of isolated functions and data structures. It has a very high degree of code reuse, because it explicitly rejects encapsulation.
Clojure's syntax may be unusual, and individual forms are more information dense than many languages, however the structure of Clojure code is often much easier to understand, and for any non-trivial piece of code, that's the hardest part of comprehension.
When I come across a new Clojure library, I'll often find myself reading a bit of the docs, then heading into the source code to get an idea of how it operates. I rarely do this with an object orientated language, as OOP code tends to be deeper, more interconnected, and because of encapsulation, have more methods to understand. Java in particular is terrible for this.