Vivek Haldar

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 flexible 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