So, 1 and 4 are beneficial for people coming from Java. Could you give more info on 2 and 3 in comparison to node for example?
> try translating it to the language you are familiar with. That will be the best estimate of what Clojure is good for.
That's the point, even if I follow your advice: I don't have any clue why I should try Closure, me not coming from Java it doesn't appeal at all. I am aware that Clojure seems to be the new kid on the block many are talking about and therefore I am asking (to just get it).
My feeling is that Clojure's USP is the mentioned features combined with the closeness to Java and the JVM—so is it right to assume that it's basically the new kid on the block primarily for Java devs who like to get some fresh air without moving to far away from their ecosystem?
What I like best about Clojure is that it's so opinionated. It says: "this is how you should program". It has opinions on state and concurrency, on data structures and polymorphism, and on meta-programming. I think this is what sets it apart from all current programming languages except, possibly, Erlang.
Also, the JVM should appeal mostly to people not "coming from Java". Java devs already have the JVM. They're only getting a great programming language. I think that the biggest selling point of all modern JVM languages is the JVM - the absolutely best software platform in existence. I know of no other platform that comes close to the JVM in performance, monitoring, tooling and a wide ecosystem. Programmers that shied away from Java's verbosity and boilerplate can finally take advantage of the awesome JVM.
I had never programmed a line of Java before starting to use Clojure, so I'll try telling you my perspective.
Clojure is carefully designed to be a certain kind of simple. It does this by making good use of the bounded parametricity ideas Rich Hickey got from Haskell. For instance, many, many objects implement the Seq protocol and thus there are many, many functions which can operate on them. This is a different kind of orthogonal and division of concerns than Java seems to use (in fact, writing Java/Clojure interfaces is hard, not because there's any sort of data conversion or calling convention trouble, just because the Java ideas feel terribly clunky in a Clojure program).
You also get the usual functional/lisp benefits from Clojure. Declarative style (accentuated by some lazy semantics), higher order looping constructs, homoiconicity and macros.
Clojure isn't my favorite language, but it sits at a pretty neat spot in the design tradeoff. It also has a very vibrant community of smart people, which may or may not be a direct consequence of it being a JVM Lisp.
For me Clojure is the best Lisp available, JVM platform or not. It's more functional than the other Lisp, use immutable data-structures, have a lot of data types (vector, set, map, list) with literal syntax and unified abstraction on top of them and the macros are easier to write than in the other Lisp thanks to autogensym and name capturing.
Main selling point: it's Lisp and it's the best available.
A lot of other people have already made the case for Clojure, and you may not be swayed by me either, but I want to add one point that hasn't been explicitly made yet.
I think irahul's point number 4 is one of the more interesting parts of Clojure, and would be beneficial for any programmer who is interested in alternatives to classical OOP, as found in Java, Ruby, Python, C++, C# and many other languages.
Clojure's approach to OOP has been described by many people as "OOP a la carte", meaning that you get to pick and choose which parts of OOP you want to leverage. Protocols, multimethods, hierarchies,... they all give you a lot of flexibility and choice to determine the kind of OOP you want to use.
I think in general, Clojure is just a fantastically well designed language, and that the underlying goals of reducing complexity in programming are things that almost any curious programmer should investigate. I think if you just went to clojure.org and read through the list of links on the left, which wouldn't take more than an hour or two, you would get a great idea if there's anything you find interesting. Alternatively, the "Clojure for Java Programmers" talk is a great intro to the language for non-Lispers, whether you're coming from Java or not. The "Clojure for Lisp programmers" is even better, if you have some experience with Lisp.
> try translating it to the language you are familiar with. That will be the best estimate of what Clojure is good for.
That's the point, even if I follow your advice: I don't have any clue why I should try Closure, me not coming from Java it doesn't appeal at all. I am aware that Clojure seems to be the new kid on the block many are talking about and therefore I am asking (to just get it).
My feeling is that Clojure's USP is the mentioned features combined with the closeness to Java and the JVM—so is it right to assume that it's basically the new kid on the block primarily for Java devs who like to get some fresh air without moving to far away from their ecosystem?