Saturday, September 15, 2007

Trying to resist Scala...must...not...succumb...

I've frequently been engaged in discussions regarding future Java language extensions (closures, etc) on forums like Javalobby and blogs like Neal Gafter's, and my co-workers aren't as big fans of Java as I am (being more inclined to Python and C), but moving away from Java is hard because of the incredible amount of useful libraries available, mature VM, and our favorite IDE - IntelliJ IDEA.

I would like to have a language, right now, that included a better static type system, first class functions, type inferencing, etc, but also allowed me to use all of my existing Java code, and run on top of a mature VM. Having Java-like performance would be a big plus.

And Scala seems to be it. I had looked at Scala a long time ago, but I hadn't realized how much progress they had made. Recently, I took another look at it, and boy oh boy, is it tempting. There seems to be almost no downside to writing future code in Scala, as it will run in the same VM as my other code, and seamlessly interoperate with Java classes, yet offers similar performance. And don't even get me started on Scala's DSL creation capability, which exceeds even Ruby (though still not Scheme)

However, two missing wishlist features gave me the excuse to leave it alone for now. For one, I told my coworkers that I am not switching to any new language which does not have a REPL. I had assumed that Scala was compiler-only. Secondly, no IntelliJ support is a big turnoff.

To my surprise, Scala *does have* a REPL interpreter. Whoops.

Only one excuse left. Please JetBrains, do not add first-class Scala support to IDEA. Do not tempt me to switch languages, I'm begging you! :)

-Ray

4 comments:

Inigo said...

Have you seen the Scala plugin for IDEA, written by a JetBrains developer?

Fortunately for you, it's been neglected recently, and isn't up-to-date with either the latest Scala release or the latest IDEA EAP release. But hopefully, when IDEA 7 comes out, they'll have time to update the plugin.

Jon Harrop said...

Scala certainly looks very interesting!

I wrote the book OCaml for Scientists and am just completing F# for Scientists. Scala is one of the languages that I'm considering writing about next.

Although I find the JVM's cross platform capabilities impressive (it surpasses both OCaml and F# in this respect), I just cannot force myself to write any serious projects in such an out-of-date language as Java. Scala might just swing the balance for developers like me...

Ray Cromwell said...

I think the other interesting thing about Scala is that it's kinda "ML for Java/C/Pascal/.. programmers", in the sense that its syntax is not too foreign to those programmers.

It might be the first academic language to cross the mainstream barrier because of this, and it's ability to interoperate and leverage the huge existing Java codebase relatively painlessly.

Eelco Hillenius said...

And the fact that you can use all your favorite Java libraries is a huge advantage.