The biggest problem with new programming languages

I love new programming languages. For each new language I grab a tutorial and jump in wholeheartedly, while exclaiming with glee every five minutes how much more productive it will make me, and then reality sets in. Reality is a bitch like that, and the reality here is that there is no simple code re-use across languages. So every new programming language has to reinvent the wheel by building it’s own utilities, web frameworks, gui frameworks, and other crap that make us productive.

This is why software development is stuck, because for each leap in productivity we make, we shuffle backwards at high speed reinventing all the libraries that make us productive in crappy old Java and C++. Especially since it’s so much fun to rewrite an existing library in the latest language of choice and then shout about how many lines of code we’ve saved, when those lines should be added to the existing library’s code, e.g. old library X has 5k lines, we rewrite it as library Y in 1k lines, which equals 6k lines spent solving the same problem, totally unproductive.

So how do we allow new programming languages to flourish by standing on the shoulders of battle-hardened libraries instead of inventing their own? Run everything on a virtual machine like the Java VM? So far Jython and Scala look promising in how they (almost) seamlessly integrate with existing Java libraries, but what about integration between Jython and Scala libraries?

CORBA, SOA, REST, etc. just aren’t cutting it. The only really successful integration is the unix philosophy of “many small tools piped together using text”, but that doesn’t work with the guis, multimedia, networks, etc. we’re using today.

Any ideas?

2009.03.11