The only reason I can understand for the existence and use of Clojure is interoperation with Java and because Clojure is more actively developed than ABCL.
The big question to me is why people who do not need Java interop are using Clojure. Here are some reasons I can think of:
- The tooling around Clojure feels more familiar to Ruby/Python/Node programmers.
- Ruby/Python programmers need their programs to run slowly so that they can be certain something is happening.
- Cult of personality. Rich Hickey has a lot of great videos and conference presentations. Lisp has no apparent technical or thought leader. Followers need leaders.
- Hubris. The same stupidity that causes organizations to throw out Robert's Rules of Order and then subsequently reinvent non-standard solutions to the problems RR was created to solve in the first place.
P.S. CL's map works with all sequences, including vectors.
To be fair, unlike Ruby/Python/JS, Clojure actually tries to solve a relevant problem in a new way (concurrency). It is something that probably could have been built on top of Common Lisp, but at the same time, there is something to be said for having a relevant paradigm baked into the standard library from the beginning.
It's less than one fifth of the age of CL, yet it has vastly superior libraries. Part of this is the Java interop, but at this point, even Clojure native libraries tend to be just better than CL libraries.
The reason for this is probably the common focus on good, sensible defaults and less on "everyone can easily roll their own". Having a set of basic, sensible data structures and abstractions that everyone share is not the same thing as "well, it's easy for anyone to do this". The idea that CL is flawless because it's so powerful that all flaws can be fixed by users is a disease, not a strength. It leads to a community where work is massively duplicated because all libraries are designed for a specific use, and every user needs to bend them to his uses.
You're making the same argument for why MIT started teaching Python instead of Scheme. I feel sorry for anyone whose life as a programmer is library spelunking instead of solving new problems.
If you think libraries are more important than having a truly interactive development environment that is Lisp 100% of the way down, you are missing out hugely on power and expressiveness. It has to be experienced to be understood. You're only fooling yourself and other people by thinking that Clojure is a "good enough" Lisp.
> I feel sorry for anyone whose life as a programmer is library spelunking instead of solving new problems.
You do realize that the vast majority of all the things that need to be done are essentially "library spelunking"? Not every programmer can spend his time doing AI research. A lot of the things that need to be done are "easy" but very work-intensive, and can be made much, much faster by good libraries. The majority of programming jobs are still essentially crud apps with a db backend, and CL is simply just a bad language to implement those in.
> If you think libraries are more important than having a truly interactive development environment that is Lisp 100% of the way down, you are missing out hugely on power and expressiveness. It has to be experienced to be understood.
I have experienced it, and understood it. And after 6 years of it, I switched to Java, because that's actually a more productive language to get things done in. Because even if the language itself is shit, things like internationalization and input validation have good libraries so I don't have to spend weeks working on getting all the little details right. Clojure buys me that, and a better language.
Clojure may not be a good enough lisp, but it's certainly better than CL.
The big question to me is why people who do not need Java interop are using Clojure. Here are some reasons I can think of:
- The tooling around Clojure feels more familiar to Ruby/Python/Node programmers.
- Ruby/Python programmers need their programs to run slowly so that they can be certain something is happening.
- Cult of personality. Rich Hickey has a lot of great videos and conference presentations. Lisp has no apparent technical or thought leader. Followers need leaders.
- Hubris. The same stupidity that causes organizations to throw out Robert's Rules of Order and then subsequently reinvent non-standard solutions to the problems RR was created to solve in the first place.
P.S. CL's map works with all sequences, including vectors.