Leo Meyerovic – the sociology of programming languages adoption

When building any tool, we have to make a trade off between things like safety, performance or productivity. Leo refers to Erik Meijer’s essay Confessions of a used programming language salesman with the change function” perceived adoption need/perceived adoption pain. This shows in erik’s career, instead of making new languages (Haskell) he tried to embed functional ideas in existing languages.

So, sociology. We think about hackers as lone gunman, but in reality coding is a very much social activity. In was in the times of ENIAC and it still is today with GitHub.
In that sense programming is like music, it spreads in social ways (you probably like the bands your friends like) There was research done into that [citation needed]

Leo want to improve language design by looking at programming language adoption. Therefore, he used different data sets:
Survey data from:
* ‘the hammer principle’ (13.000) where people ranked different programming languages.
* their own survey on SlashDot
* EDx

In addition to surveys, they also analysed repositories from source forge and github. With this data they analyzed, for example, the popularity of languages for different domains, like blogging or build tools.

Java, as you can see, is popular for many different purposes, while Prolog is more domain specific.


There are a few very popular languages (again Java) but there is a long tail of niche languages. Also, learnability for different languages really differs, C++ takes 1-2 years, while Python, PHP or Ruby take 1-3 months.


Diffusion of innovation

In the 60s research was done on adoption, among farmers, because they wanted to know why certain crops (genetic corn) was not selling very well.
The steps of any adoption are: knowledge, persuasion, decision, trail, confirmation. For the corn, for example, we could plant just one or two corns and then see if they perform well.

But innovation does not always go by itself, for each step, there are catalysts, like trialability (ease of trying), observability (you can see that others do it), causation (knowing that it works) and compatibility.