Java, C#, Groovy, Ruby, Python

Is the question "which" or "which ones"?

I am a member of a local user group that exclusively pitches Ruby as the savior of all things linguistic. I had made a strategic decision to learn Groovy instead because it integrates better into my primary language, Java.

This has worked pretty well for me up to now with a couple of jobs getting groovyized nicely.

Well, Chris Nelson, mentioned something to me a few user groups ago that just sunk in today. An extension to the logic of why I chose Groovy.

If we assume the future is a combination of the best of today. Perhaps a tenuous bet but I am an optimist. Then we have to assume that a VM is the correct runtime environment for future systems. This knocks out c-Ruby from the running.

If we think that dynamically typed languages win over statically typed languages then we have to choose Python, Ruby or Groovy as the most blogged about at the moment. I am completely sold on dynamic languages and have been for years.

I asked Chris why he choose JRuby/Rails over Groovy/Grails since he is a Java developer from long back (Trails). He answered, "It's a different language".

My first impression was that Ruby was a different language as well so what's your point. Then today, while reading Charles Nutter's response to Ola's IronRuby post it occurred to me that the language Ruby is key for the simple reason that it is likely to be the first multi-vm language and already represents the best of what a dynamic language can offer.

Based on this there is one choice, quit groovy, learn Ruby in what ever form and the runtime environment will follow.

Did anyone notice how I dropped python so fast? Dynamically typed and runs on JVM (Jython) and CLR (IronPython) today but I hate tabs :-)

Unfortunately, the question is "which ones". Things move to fast to play just one pipe.


Ryan Briones said...

I'm not sure I agree with your logic.

Things move to fast to play just one pipe

That I agree with. The way you got there sounds a little like "cargo cult"ing. (I say at the risk of sounding like I'm "cargo cult"ing Dave Thomas, fresh from RailsConf) I think your filter should be more representative of the work your doing or the work want to do, and adapt as needed. Agile, if you will.

For me, and I've come from a Perl background and currently working with Ruby/Rails, the biggest things on my radar are Deployment and Scalability. So now I'm taking the time to learn about Java, and it's culture, and Erlang. Do I think I'll ever be a Java or Erlang nut? But I'm expanding my skill set, and cross-pollinating ideas. Probably not. And when Perl 6 goes gold, I'll probably do a little of that.

In five to ten years, some other new way to interface with technology will be out and force me to adapt in a different way. What will I do? Maybe learn a new programming language to keep up with those dang teenagers... maybe I'll become a cook. :)

Hope this doesn't come off as stupid...

Clark Updike said...

If the python tab thing really bothers you--try whitespace ;-)

But seriously, the python tabs things is a poor reason to dismiss python since anyone that knows python knows it is essentially a non-reason. In fact, I think it leads to one of python's strengths--readability. I'm learning groovy currently. At the risk of prematurely judging groovy, I'm guessing it will be mildly to moderately less readable than python. Perhaps what groovy lacks in readability it will make up for in conciseness.

java guy said...

well, i doubt VM is the future. VMs eat too much resources for little things. it is fine if it's enterprise app, but for a small website it's overkill. thats why php rocks. not because it's a language to fall in love with, but because it makes webhosting business a reality.