Empirical Analysis of Programming Language Adoption

Leo Meyerovich has some hard data on the factors that affect programming language adoption, in a paper in the upcoming OOPSLA 2013. For anyone interested in programming languages, the entire paper is worth reading.

Some points that jumped out at me:

extrinsic properties like library availability and social factors are much more important than intrinsic factors like language features

C++ was by far the hardest language to master. Java, JavaScript and C# were in the middle. Python and Ruby were the easiest.

There was almost no variation with age in the number of languages one is proficient in. Good data to use against ageism.

There is a high correlation between enjoying a language and its expressivity.

Static typing still has a massive PR problem. Only ⅓ of developers find static types valuable, compared with ⅔ who find unit-testing valuable. “This suggests that today’s type systems may err too much on the side of catching bad programs rather than enabling ﬂexible development styles.”

Performance was ranked the 2nd most important feature (after libraries), but specific language features that help performance ranked much lower, which shows a “gap between the importance of performance and the language features used to achieve it today.”

Advice for language designers: “Since languages grow niche-by-niche, designers should focus their marketing and library-creation efforts on particular communities. Growth comes by expanding to new domains.” Examples are numpy for scientific programming in Python, and Ruby on Rails for webapps.

Previous related posts:

Whither programming language research?

Innovator’s dilemma in programming languages

How to make your new programming language successful