He went on to say:
"Let's try that again: I like Scala and Groovy and see no compelling
reason to learn Clojure. Am I missing something?"
I know that I think - but I thought the awesome community here could
help answer this question.
I would very much like to discourage the bashing of other languages
here. It is tedious and pointless. Should anyone be provoked into
responding to this, please keep your comments to attributes/deficits
If I had to pick just one specific feature (which may be a bad
way to going about answering this, but anyway...) I would say
Clojure has full-on straight-up Lisp-style code-rewriting macros,
and this changes the game. Macros have a unique combination of
properties for a language feature: dramatically powerful, very
well understood (lots of material written about them), and yet
still relatively rare among popular new languages.
Many dynamic languages have meta-programming features that can be
used to fill some of the gaps left by lack of macros, so I wasn't
convinced of the power and practicality of Lisp-style macros
until I read Paul Grahams "On Lisp". I highly recommend it.
Even though it talks mostly about Common Lisp and therefore
Common Lisp macros, the macro discussions are very transferable
to Clojure. http://www.bookshelf.jp/texi/onlisp/onlisp.html
There are other reasons to like Clojure, but that's perhaps the
simplest one to name.
I wrote about benefits Clojure (v1.0) some time ago:
The best benefit of Clojure is, I think, the power-to-weight ratio.
The language is so much devoid of syntax and semantics bloat that
whatever code you write in Clojure is pure productivity. Concurrency-
handling makes it suitable for current-day development and as Chouser
noted, the Macros feature is a game changer.
Clojure has a rooted in it a development paradigm suited to manage
state of identities over time.
That is, clojure embraces the "functional paradigm" for most of the
development process, but does not leave you "naked" when time comes to
write those parts of your application which require dealing with
state, time, concurrency, parallelism, etc.
Rich's videos are particularly enlightening concerning this point:
* a (mostly) clojure agnostic explanation of the problem and a
general solution to it:
* a more clojure-oriented talk which complements the above with clojure detail:
2010/1/16 Shantanu Kumar <kumar.s...@gmail.com>:
> You received this message because you are subscribed to the Google
> Groups "Clojure" group.
> To post to this group, send email to clo...@googlegroups.com
> Note that posts from new members are moderated - please be patient with your first post.
> To unsubscribe from this group, send email to
> For more options, visit this group at
That's a really good description for a low barrier to entry. :-)
Dr Jon Harrop, Flying Frog Consultancy Ltd.
How about two reasons to learn Clojure instead?
1) Clojure is (a) LISP. According to Eric Raymond, "LISP is worth
learning for a different reason — the profound enlightenment
experience you will have when you finally get it. That experience will
make you a better programmer for the rest of your days, even if you
never actually use LISP itself a lot."
2) Clojure is designed from the ground up for concurrent
programming. It has a number of mechanisms that improve on locks for
managing state. Those come from other languages, and are liable to
appear in yet more languages in the future. If you're doing concurrent
programming, learning them will make you a better concurrent
programmer. If you're not doing concurrent programming, consider that
CPU improvement has changed from an exponential growth in raw speed to
an exponential growth in number of cores.
O< ascii ribbon campaign - stop html mail - www.asciiribbon.org