Monday, October 20, 2008

Rise of the Virtual Machines

I was pondering the matter of the Next Big Language, or NBL as Steve Yegge likes to call it. There are many opinions on what the next big language will be. Some say JavaScript, others say Erlang, naturally there are also supporters of the idea of it being Python or Ruby.

(Of course, no discussion on the future of programming languages can proceed without the obligatory references to LISP. (Please note the extensive use of parenthesis to reinforce this point.))

I have even previously offered pronouncements on this very matter, although I don't think any of them are online to embarrass me when they are proved wrong. And I do think that all discussions on the next big language are both wrong and irrelevant. Let me tell you why.

The days of a single language dominating everything are practically gone. Even the big boys realize this. Microsoft now offer several languages on their Common Language Runtime (CLR) with more on the way, Sun have just hosted their first JVM (Java Virtual Machine) Languages Conference and IBM don't care what you program in as long as they can sell you hardware and services.

My resume says that I am a Java Web Developer, but perhaps it should just say Web Developer? While I do use Java, most web applications these days involve XML, HTML, JSP and JavaScript at a minimum. Then throw in a little REST and AJAX or perhaps some JSON or YAML and your technology count is reaching for the sky. I really don't think most of us are using a single language too often any more. And this is before you start worrying about deployment platforms and application servers. The days of mono culture are numbered and n is looking fairly small to me.

So there's no such thing as the next big language, but I do think that there is a next big thing. Our industry never stands still. New and exciting technology is being developed all the time. The trick is to figure out what's going to be big, or even better, actually useful.

Recently I read this blog article over at InfoWord. It helped crystalize my current thoughts and now I sincerely believe that multiple languages are here to stay, and that the next round of excitement will be over the environments, specifically the platform independent Virtual Machines, typified by Sun's JVM and Microsoft's CLR. The JVM and CLR are not the only players in town. There is plenty of excitement over at the LLVM camp, who if I remember correctly are strongly favored by Apple within their developer tools group. And I would kick myself if I forgot to mention the Parrot VM currently under development for the forthcoming (someday) release of Perl 6.

This is already where the excitement comes from these days, but I think many of us have not realized it for all of our worrying about the next big language. The next big environment question has been flying well below most of our radar screens and has taken a great many of us by surprise.

I'm actually glad about this because I love programming in multiple languages. Being forced to use only one language is quite stifling to me and I'm much happier when able to bounce back and forth between a couple of languages, each selected for it's suitability for the purpose of the task I use it on.

Even with these powerful forces moving with all of the certainty and unstoppability of tectonic plates, many are going to continue to search for the next big language and will proclaim that this language or that language is The One. I don't doubt this for a moment as the urge is strong in geeks to discover new languages. The problem will then be that language A will be positioned against language B with the implicit (or increasingly, explicitly) understanding that it's one or the other ... last programming language standing ... in the arena of programmatic battle. We must get used to using multiple languages and spend our energies on where they compliment each others abilities. Until we get here, the specter of the mythical next big language will continue to haunt us.

No comments: