Finally, this year, I've decided that the time has come and that I have to invest some effort. Unfortunately, I know have to decide where.
I will start saying that all three candidates share the basic functionality that I'm looking for:
I want an interpreted language that saves me time to come up with quick prototypes and hacks. I want a powerful OS tool beyond shell scripts. I may need to compile to bytecode later as well.
- Elegance and expressiveness
I want to avoid boilerplate. I need dynamic typing and runtime inference. I want syntax sugar! I want easy to read DSLs.
They are a must. My only concern is readability but beyond that I cannot understand why Java does not have them yet.
Inheritance on steroids.
- Go Functional
Try to combine imperative style with some characteristics natural to functional programming. Less what and more how (descriptive style).
The first of the crop and the most popular for sure.
Enterprise capabilities along with cool productivity features
A general purpose (multi-paradigm) programming language
- Interoperability with Java
- Language features not retrofitted (ie Genericity)
- Actors, concurrency and distributed programming
- Implicit enrichment of a Java class
- Statically typed with inference
- Not mainstream yet
- Smaller community
I could choose JRuby then, but I'm not sure that's the correct path even though Sun's commitment (for example, with Netbeans and the compiler) seems pretty heavy.
Scala could be. Indeed it's improving (as the others) but it's not there yet. In the end, Scala seems more like a (future) Java replacement and that's not what I'm looking for right now.