Sunday, September 23, 2012

Alternative JVM languages

I am enjoying Martin Odersky's course "Functional Programming Principles in Scala." I use JRuby and Clojure a lot in both consulting projects and my own projects but my main use of Scala in the past was writing some programming examples for my book "Practical Semantic Web and Linked Data Applications, Java, Scala, Clojure, and JRuby Edition" that is available here for free. I had purchased three Scala books and occasionally played with Scala but it never really "clicked" with me (same situatuon with Haskell: bought three books on Haskell, lots of experiments, never had the "clicked" experience).

Taking Martin's class is definitely helping me become more comfortable with Scala.

Having an interactive repl for Clojure and JRuby has always been a big win for me over Java development, even with great Java tooling (e.g., when I have to do GWT or SmartGWT development, having both the server and client side code in Java, all debuggable in IntelliJ is nice, but still a very heavy weight development environment!)

Scala provides a good repl experience and has something else really neat that I learned about in Martin's course: the Eclipse+Scala plugin "worksheet" support. A "worksheet" is a separate edit window that can contain any Scala code and every time you save the worksheet file, then the value of every expression in the worksheet is displayed in the right hand column. This is sort of like Light table for Clojure and Javascript, but very polished and integrated nicely into the IDE. I am a huge fan of IntelliJ, but I have switched to Eclipse+Scala plugin for Clojure development for the class. BTW, if you want to experiment with the "worksheet" functionality, it is probably easiest to download the Scala IDE bundle from the Typesafe download site.

No comments: