Volg ICTI

Predicting the most popular programming languages

| Sieuwert van Otterloo | Quality

Software researcher Erik Bernhardsson is trying to predict which programming languages are popular in the future, by counting the number of ‘switch from A to B’ blogs on the Internet. The results are surprising. The top 5 consists not only contains new language Go but also the older languages Python, Java, C and C++.

Why predict programming language popularity

Predicting which programming languages will be popular is interesting for two reasons. First of all when you develop a new system that is intended to work for a long time, it is important to choose a programming language that is long-lived. Secondly developers like to upgrade their CV with upcoming languages. Unfortunately, predicting language trends is difficult. Language choices depend not just on the language itself but also on availability of tutorials and libraries. Secondly, choosing a language is often a matter of taste, as it is difficult to prove that a language is truly superior.

Within ICT Institute we do keep track of language popularity. We do this for instance by checking report on usage, such as this one on Hackathon research. We also check the job adverts, check PYPL on Github (see illustration), ask developers in our IT DD projects. Based on this, we maintain an informal buy-hold-sell list.

Using this list we can advise companies which languages are recommended, which are ok and which should be avoided. However this list only describes the current state. We would like to know what is ahead, but as the old saying goes: “predictions are hard, especially about the future”.

Predict popularity using eigenvectors

Software researcher Erik Bernhardsson (@fulhack on twitter) has found a clever way of making predictions. He counts blog titles describing a language switch from A to B. He uses a small python script for counting the number of search results for all combinations of A and B. The results of all these searches are combined in a giant matrix, showing how people are likely to switch. All this data, combined with some eigen-vector data analytics, can be used to compute a final ranking.

The full matrix can be seen in Erik’s original blog post ‘The eigenvector of Why we moved from language X to language Y‘. The image on top of this page shows the top rows of the results. Here you can see the final ranking: lisp and perl will be the least popular language according to this analysis. Node, Rust, C#, Python, C++, Java, C and Go will become the most popular languages.

Javascript frameworks and Databases

The same method can be used for javascript frameworks and databases. The results for frameworks are probably less reliable than those for languages. First of all there is fewer data used in the analysis. Secondly it is harder to create a new language than it is to create   a new framework. Therefore there is a large chance that new javascript frameworks are introduced and this would change the playing field. Nevertheless it is interesting to see which frameworks and databases people are writing about. For javascript, angular, vue and react are the top frameworks. For databases, the predicted future databases are Cassandra, Postgress and MySQL, as can be see in the illustration below.

Predicted trends

By looking at the values in the full matrix, one can see which transitions are often described in blog posts on the Internet. Assuming that these blog posts are representative for broader trends, we can make the following bold predictions:

  • Everyone will switch from Objective C to Switch for iOS development. In our view, Switch simply is better.
  • .NET developers will all switch from Visual Basic to C#.
  • Cobol will be replaced by Java, making Java the new legacy language
  • Pascal will be replaced by another old language C, and not by any fancy new language
  • SQL databases will not be replaced by NoSQL databases

 

Author: Sieuwert van Otterloo
Dr. Sieuwert van Otterloo is a court-certified IT expert with interests in agile, security, software research and IT-contracts.