Should I learn Scala or Clojure next?

4 points by joevandyk ↗ HN
I've got lots of experience with Ruby and C++, been doing mostly Ruby for the past three years. I have experience with Scheme from school.

I want to learn something new, and something that runs on the JVM sounds interesting. My initial project would be a scientific GUI that uses Swing for the windowing toolkit.

Both Scala and Clojure sound interesting to me. But I'm having a hard time figuring out which one to use. Clojure definitely seems more of a mind-stretcher. Scala seems to have gotten more traction recently.

Thoughts from anyone who has used both? I suppose I could learn both, but it takes me a long time to really know how to properly use a new language, so I'd rather focus on one.

6 comments

[ 4.7 ms ] story [ 26.7 ms ] thread
I would go with clojure because the documentation is more developed but it really depends on what kind of project(s) you work on.
Neither sound great for your proposed project. If you are stuck on that type of project, look at something like Griffon instead.

Otherwise, if you are more interested in expanding your mind and thinking differently, Clojure for sure. Scala is nice and a great Java replacement language, but it is quite a bit like Java and looks like Java and can be programmed like Java.

Clojure is different. Clojure is lisp but if it was written today instead of 50 years ago. Clojure is as close to pure CS as we have today on a modern platform.

I encourage every developer to learn a Lisp at somepoint, but today there is no excuse not to as Clojure works on the JVM so easily. Clojure will change your way of thinking and get you exposed to functional programming (FP) and that is a great thing!

Thanks, I hadn't heard of the griffon project before.

I do need to learn a lisp. Clojure's probably the most practical one to learn.

Hmm. JavaFX might be a better choice for a GUI app.
I dunno, Java FX looks better suited for webapps.
In the end picking up both might be worth while (since the two languages can interact with each other in reasonably sane ways thanks to both being JVM languages) but similar to others comments I would start with Clojure as it really feels so powerful. All the advantages people have been praising Lisp for over the years but with massive block of available libraries really is a powerful thing.

I can't comment on the scala community since I don't hang there, but I can also say clojure's will certainly be glad to help, the majority are amazingly friendly on freenode for IRC as well as the google group.