September 9, 2011

The effable nature of language adoption

It's fun (and easy!) to come up with catchy explanations for successes/failures in programming language adoption and pretend that they're root causes.

Java had a marketing powerhouse.
Smalltalk was a walled garden.
Lisp has too many parentheses.
C++ kept backwards compatibility with C.

Deep down I think folks acknowledge there's a multitude of factors that play into the success of a language. Catchy explanations tend to reflect our pet peeves. In the end, though, it doesn't matter how wrong it is that PHP is the top dynamic language in the TIOBE index — the programming universe is pragmatist and could care less about our moral objections.

Let's say that there's an ethereal Appeal of Switching (AoS) ratio involved in changing from one language to another in order to accomplish a particular programming task. This encompasses new programming paradigms, nifty features, and language niceties — the things that make you say, "Ooh, but if we used X then we would have Y!"

Talking to people about language adoption, I've heard an interesting theory proposed: a new language has to satisfy a fairly high minimum AoS ratio in order to displace an existing language from a niche. Does 10x sound about right?

As we deep-down-acknowledge, there are lots of factors, but this theory reflects a necessary condition: there has to be a lot of appeal to overcome well-understood inertia. Of course, necessary doesn't imply sufficient, but the niche won't seriously consider switching for less. The AoS ratio has to be large enough to compensate for growing pains.

P.S. Languages that really fail solely because of marketing are already extraordinary: they, by definition, have all the appeal required to overcome the inertia. They just have no mechanism to spread the word.