The Myth of the Super Programming Language

Jonathan Edwards wrote a short but passionate blag about The Myth of the Super Programming Language over at his blog. Well worth a read!

I’m not sure if I’d paint quite as much of a black and white picture as he does, personally, but by and large the article resonates strongly with my own opinions. This sentence especially has a lot of meaning to me:

What would really make a programming language be super powered is the ability to be used by normal people.

There are a few points to this…

First and foremost, if Edwards concedes that a programming language could be super powered if it’s usable by normal people, then I must assume there to be a spectrum. I’m not a believer in either/or categorization1, but in degrees of separation. So put, I don’t know, machine code perhaps, on one end of the spectrum, and a mythical super powered programming language on the other.

Got that visualized? Now place various programming languages you know along this spectrum. I’ll bet that some are much closer to the super powered end than others. And I’ll also bet (though not quite as much) that on average, most people would place programming languages in similar enough positions along the spectrum.

The point then is that clearly some programming languages are more super powered than others. Which in effect goes a little way towards disproving Edwards’ assertion that there are no super powered programming languages.

And yet I still agree; it’s not so much the programming languages that produces super productivity but the programmer’s abilities.

The second point is that while the difference should be of a lesser degree, better programmers would still be more productive in super powered programming languages than they themselves would be in others. Super powered programming languages, or the ideal of them, then still has some value.

The third point is that some programming languages are clearly more suitable to some type of development than others. That particular pearl of wisdom has been repeated so often that it’s become something of a literary trope; it’s near-impossible not to bring it up when discussing programming languages. It’s also a nice cop-out, the sort of piece of advice that serves only to placate people engaging in opposite positions in a discussion.

Still, it has some merit: some languages such as e.g. PHP or ActionScript are so closely entwined with other technology that using them in a particular environment makes them a lot more productive than using other languages. Purists might argue that’s not a feature of the language proper; others might say that super powered programming languages exist only in their own particular niche; yet other people might want to assert that clearly only general purpose programming languages can, by definition, be even considered for the categorization into the above spectrum.

Whatever. Super powered is pretty thin as a concept.

The last point, then, is that programming languages could be designed to be more super powered by looking at what particular techniques more or less super powered languages employ or avoid. While that happens for special purpose languages all the time (think PHP again), this still applies to general purpose languages.

Let’s do more of that.

  1. Even if that is unavoidable in order to get useful results from categorizing stuff in the first place. []