For any software developer, I recommend learning functional programming, which is especially true for anyone who spent quite a bit of time on doing Object Oriented Programming. As far as my experience from Ruby -> Groovy -> Scala -> Clojure journey concerned, I strongly recommend learning Clojure to get into functional way of thinking in practical way. One of the hurdles that I encountered in getting started with Clojure is lack of a simple way of setting the environment. Yes, there are many ways one can get started such as Lein, Maven+Clojure Plugin, Emacs+Swank+Slime, Vim+VimClojure, Eclipse+CounterClockWise, NetBeans+Enclojure, IDEA+LaClojure, you name it. But it all makes a newbie to spend days if not hours to get his or her environment right. After playing the hard way( Emac+Swank+Slime, Vim+VimClojure), which I do not recommend for a new comer, I ended up creating a project called ClojureW. It is the easiest way to start with Clojure as far as I know for all three major OSes such as Windows, OS X and Linux. Here is all you need to get going:
1. Download Clojurew from: http://bitbucket.org/kasim/clojurew/get/tip.zip
2. Unzip it to a folder and change to bin directory of this folder
3. Just run clj to get a REPL or run clj cljscript.clj to execute your script.
For beginners, I recommend just using a text editor that highlights matching parenthesis. Believe me, trying to set up an “IDE” for Clojure is painful if not disappointing at best. The main thing that you learn from Clojure is to think bottom-up when solving problems. You can practice this approach with any language but Clojure will force you to think this way. Again, setting up IDE is a hindrance to what Clojure is really about at the beginning. You can play with IDEs once you get into idiomatic Clojure way of thinking. As stated by a book titled, “97 Things Every Programmer Should Know”, being able to quickly type up a simple “Hello World” program and run it via command line can prove extremely valuable after all.#
I used DrSheme (plt-scheme) for editing. It just works immediately and formats in a lisp-way.
ReplyDelete