Amit Rathore wrote:I've responded to another thread which may help answer some part of this question: https://coderanch.com/forums/posts/list/539123#2446065
Dan King wrote:does it make to start my learning with Clojure or some other 'functional' language?
Sean Corfield wrote:While there's a lot more "classic" information out there based on Scheme and/or Common Lisp (e.g., SICP, On Lisp), I think if you're coming from Java and you're happy to work from any one of the great new books on Clojure, then Clojure is a natural choice to learn functional programming. One of the benefits in my mind is that you can mix little bits of Clojure into your day-to-day Java work, which you can't do with older functional languages.
Dan King wrote:Keeping benefits in mind, under what situations does Clojure excel/shine? For example, while I could use Groovy for 'everything', I often use it when prototyping, creating GUIs, or developing web apps since (in my opinion) it makes completing the task(s) considerably easier.
Sean Corfield wrote:I find Clojure very productive for prototyping since I can work with code at the REPL, directly inside my IDE, and build solutions iteratively and quickly - treating Clojure as a dynamic scripting language, no doubt much like you use Groovy.
Where I find Clojure shines is when working across data sets where I can leverage map / reduce / filter and the easy composition of small, reusable functions and, in particular, high-order functions. I'm finding that the expressiveness makes me more productive than when working with other languages yet the Java interop makes it easy to leverage, and work with, existing Java code and libraries. Immutable data means easy concurrency and easier testing as well.
Like Groovy, Clojure is intended to be a general purpose programming language, as John notes in his response.
Dan King wrote:Sean, you've convinced me of the benefits of learning Clojure; now that you have, can you suggest how I should go about it? Should I use clojure 1.2 RC3 or 'clojure box'? Based on tools/plugins available should I go with eclipse, netbeans or another? Any other suggestions you may have are appreciated.
By the way, thanks for all the well thought-out and expressed answers; they've been very helpful.