I like Clojure, I've used it for a number of projects. I've given money to rhickey. I think it is very promising.
It has a lot of good ideas and it is very refreshing to see people tackling current issues in a dialect of lisp. It is also nice to see a lisp with market traction.
That said, there are a lot of things that are 'unproven' about it.
It isn't clear that shared state immutability and transactions are 'the way' to tackle concurrency.
It isn't clear that Clojure's macros are really better than Common Lisp's macros.
It isn't clear that we really want to be tied to the JVM/NET architecture.
(Or that the concessions made to do so are reasonable... stack traces, tco).
I think I could go on if I wanted to.
A large number of features implemented in Clojure are still research topics...
It grates me when proponents of Clojure tout it as 'a modern dialect of lisp,' implicitly asserting that other lisps are in some way decrepit, aging relics from the 80s.
The truth is that Clojure is modern compared to almost ANY programming language, calling it 'a modern dialect of lisp,' while potentially true, is doing a disservice to Clojure, as well as to other lisps which are under active development.
What arguments are there to say that clojure is not a modern dialect of lisp?
The JVM came about pretty recently (on the LISP timescale), software transactional memory has been around for a while but afaik no mainstream lisp-like language implements it, and so on. That all says 'modern' and 'new' to me.
I'm not versed enough in Lisp or clojure to make any statements about the macro issues.
What bugs me about clojure is on a completely different level, all those 'x done 'in clojure'' articles that really do nothing to advance the state of the art, as though doing something 'in clojure' somehow makes it worth writing about.
And then there's the 'one man show' feeling that is still very pervasive.
It is a modern language. -> T.
It is a lisp. -> T.
However, I only hear, 'It is a modern dialect of lisp,' when I am being told why I should switch from Scheme or CL to Clojure.
This is a non-argument (there is no spec for what a 'modern' language includes). It also has the implication that whatever I am using is in some way non-modern. (Which is an odd attribution for something which is actively developed and I do my daily coding in). Is Java modern? How about Python? Scala? Ruby? It seems like a weird non-category. When I boot up sbcl, it isn't like i'm programming in lisp 1.5.
New would be cool, or saying it has modern features, also good.
Gonna make a new spec for Common Lisp, Common Lisp the Ancient Language.
The JVM does not bring that much new to the Lisp world. What is new in the JVM nowadays is the concurrent GC and the JIT. Lisp runtimes prefer precompiled code. What the JVM lacks for example is easy code loading (think class loading in the JVM), instruction set optimized for Lisp and dumped images.
Clojure combines STM, concurrency etc. in a clever way and with the focus on pure FP. It's not that elements of that did not exist before, but the combination in Clojure seems to be novel.
Lisp has a smaller community than other languages, but it's still a big, diverse community.
I'm not sure if I should recommend anybody to go the same route (since I'm still very much a FP/Lisp newbie, so my words carry little to no weight at all) but it worked well enough for me that stuff made more sense after doing that.
It's funny how the biggest detractors of clojure seem to be those that should be cheering it on, the people that use LISP.
Clojure is a lisp, like it or not, sure it's not common lisp or whatever other dialect you prefer, but that shouldn't matter too much.
LISP used to be leading, now it is lagging and this person seems to be somehow proud of the lag.
LISP is as much a way of thinking as it is a programming language and Clojure is representative of that way of thinking. The implementation details are really just that, details.
So ignore clojure - and any other modern attempt at bringing LISP in to the mainstream - and decades from now you might wish that you had not, because you lost your chance at shaping the future of the language that you profess to love so much.