I'm a Clojure newbie, but what impresses me about Clojure is the restraint and good taste in introducing new features to the language and core libraries. The language continues to be simple, extremely elegant and fun, but most of all, there is a strong sense of good design. APIs are considered carefully and not introduced into the core unless they solve a major problem, and solve it cleanly and well.<p>What is missing from Clojure, I think, is better support – either at the language level or as common practice – for large software composition, or programming-in-the-large. This is probably the opposite problem from to of Erlang, the other language that tackles the huge problem of state management well. Clojure is terrific when it comes to implementing computation, but how to best assemble various components into a large, maintainable program is not so clear.
I started using Clojure in 2012. Here are the changes I've observed, though it is more subtle.<p>The tooling and the libraries are working much better right now. A strong indicator of this was the decision to nuke Noir, which I gather made a lot of sense when it came out. I've noticed that my code makes fewer calls to Java than it did a year ago. nRepl was a huge improvement over Slime. I'm looking forward to Leiningen 3.<p>Documentation across the board has improved quite a bit. Its still not perfect, but you can't deny the quality found in Elastich [1], Leinengen [2], ClojureScript [3], Luminus [4].<p>Many more useful libraries. I can't list them all here, but the library ecosystem has improved quite a bit, not only in quantity, but quality. Don't get me wrong, there are a few duds out there, but it is nice to see that many problems are being solved.<p>[1] <a href="http://clojureelasticsearch.info/" rel="nofollow">http://clojureelasticsearch.info/</a><p>[2] <a href="https://github.com/technomancy/leiningen/blob/master/doc/TUTORIAL.md" rel="nofollow">https://github.com/technomancy/leiningen/blob/master/doc/TUT...</a><p>[3] <a href="https://github.com/clojure/clojurescript/wiki" rel="nofollow">https://github.com/clojure/clojurescript/wiki</a><p>[4] <a href="http://www.luminusweb.net/docs" rel="nofollow">http://www.luminusweb.net/docs</a>
<a href="https://www.google.com/url?sa=t&source=web&rct=j&ei=67jEUrLqNIfZoATMgYLADA&url=http://www.infoq.com/presentations/Datomic&cd=1&ved=0CCgQFjAA&usg=AFQjCNHXR0WgXw9RvAnqneyBY8d_kHBfuA" rel="nofollow">https://www.google.com/url?sa=t&source=web&rct=j&ei=67jEUrLq...</a><p>great video outlining how datomic was implemented using clojure..I would say this is a large sized system....<p>I have built a larger system in clojure and do not have the same concerns..I feel for the first time in a while I have a powerful tool at my disposal and will be my tool of choice for now..
seems like we are going around in circles. what is so new and great about Clojure? we have Lisp and various implementations of Scheme which are more functional,powerful and stable. Clojure runs on the JVM so what?? seems like we kind of reinvent the wheel when the wheel was not broken to begin with.....i have done some programming in Clojure and also scheme. scheme is the real deal simple but powerful and not restricted because the JVM will not allow it.
After not using Clojure For about half a year (not a language my last customer uses) I have started using Clojure again for a new project. Clojure is like Ruby in the sense that I am simply happy working with both languages. I also use Java and JavaScript a lot, but I don't get the joy using those languages (not knocking them, but they are not as much fun to use).