Recs.
Updated
SpecsUpdate
Pros
Pro Simplicity as a pillar of culture.
Simplicity is one of the pillars on which Clojure is built. Clojure tries to solve many problems in software development as simply as possible. Instead of building complex interfaces, objects or factories, it uses immutability and simple data structures.
Pro Immutability as the default
Since Clojure is derived from Lisp, it offers a lot of benefits that functional languages have. One of those benefits is immutability. State change is handled by functions (for transformations) and atoms (an abstraction that encapsulates the idea of some entity having an identity).
Pro Designed for concurrency
Since Clojure is designed for concurrency, it offers things like Software Transaction Memory, functional programming without side-effects and immutable data structures right out of the box. This means that the development team can focus their energies on developing features instead of concurrency details.
Pro There is one syntax rule to learn
Everything has the form (thing-to-execute parameter1 parameter2 ...)
.
Pro Starting with clojure means you have less to unlearn that if you come to it later in life
Pro Tries to solve problems as simply as possible
Simplicity is one of the pillars on which Clojure is built. Clojure tries to solve many problems in software development as simply as possible. Instead of building complex interfaces, objects or factories, it uses immutability and simple data structures.
Pro Good for writing concurrent programs
Since Clojure is designed for concurrency, it offers things like Software Transaction Memory, functional programming without side-effects and immutable data structures right out of the box. This means that the development team can focus their energies on developing features instead of concurrency details.
Pro Leiningen
Leiningen is a very useful tool for Clojure developers. It helps with automation, configuration and dependency management. It's basically a must for every Clojure project.
Pro There are only 11 basic instructions to learn
If you ignore the existence of a function, you can always recreate it using the 11 special forms. Later, if something you happen to do often appears to seem particularly handy, chances are that there is a built-in function for that. But you don't need to know or learn it upfront.
Cons
Con Very different semantics from mainstream programming languages
LISP-like languages are very different from mainstream languages (such as C/C++/Java/JavaScript/Python/you-name-it) - both in semantics and syntax. This, in turn, severely limits uses of whatever-learned-with-Clojure, for real-world use (we do learn programming languages for real-world use, don't we?).
Con Syntax can be alien / jarring for those used to other Lisps
Perhaps some may consider this attribute an advantage, but I do not. Clojure does not attempt to maintain significant compatibility with other Lisps. So, if you already know a Lisp or are used to the way Lisp works in general, you'll probably be confused if you take a look at Clojure. See these resources for more details on this subject:
Recommendations
Comments
Flagged Pros + Cons
Pro Immutability is the default
Clojure programmers are highly encouraged to use immutable data in their code. Therefore, most data will be immutable by default.
State change is handled by functions (for transformations) and atoms (an abstraction that encapsulates the idea of some entity having an identity).