A developing affection: Assessing the rise and fall of programming languages
These days we take applications for granted to run our businesses and organise and entertain us in our personal lives. But which are the programming languages that enable our digital world – and how are they progressing over time?
A good starting point for understanding the relative popularity of programming languages is to look at studies from groups like TIOBE, RedMonk, and Stack Overflow, which show how languages trend over time. GitHub can also be an important gauge, particularly in the open source community, because it objectively shows how many code contributions are being made in a specific language.
In the last five years we’ve entered a period of programming language density. For example, there has been an explosion of languages that have also made their way onto the Java Virtual Machine. But even with all of these newcomers, if you were to map the trend, the top ones have stayed much the same with Java, C, C++, PHP, Python and JavaScript consistently among the most popular languages, according to these studies.
Timing, adoption and being associated with a “killer app” use case are what differentiate popular programming languages from those that fall by the wayside. If you look at programming languages from an academic point of view, there have been some, theoretically better languages that have not taken off or have fallen into disuse simply because they didn’t come along at the right time, or get used as the basis of a killer use case.
The languages C and C++ have been around for decades and are still going strong, and they continue to play an important role for low-level development on things like operating systems, device drivers, or where high performance interaction with hardware is needed, so I expect their use will continue for years to come.
Similarly, Java has been around since 1996 and is also going strong today. One of the reasons for its massive popularity is that it came along at the right time, when developers wanted to increase their productivity and object-oriented programming languages. Java also handles the execution of multiple parallel processes (threads) within a single process very well. When it came along in 1996, threads just weren’t a common thing in general and almost unheard of within programming languages. Java also offered the benefit of being able to ‘write once run anywhere’, so that the code could run on different machine architectures and operating systems, giving it wide appeal among developers.
JavaScript is another programming language that is regularly included among the most popular languages, but here it's important to draw a distinction between popularity in terms of the number of users and how well-liked a programming language is. JavaScript is a dynamic language that has been widely adopted for web and mobile development; however, the developer community at large is quite divided on its likeability. Regardless, the web and more recently the proliferation of mobile has been a “killer app” use case that has propelled its popularity.
Google’s Go language is an interesting one that is worth mentioning. At only 10 years old, Go is relatively young compared to the other languages previously highlighted, but it is rising quickly. In July 2016, the language ranked 55th on the TIOBE Index, and by July 2017 it had moved all the way up to 10th position (though it has dipped several spots in recent months). With the meteoric rise of container technologies like Docker and Kubernetes, we saw traction around Go increase and containers and orchestration of them is probably the “killer app” for Go. In a similar vein, the popularity of Apple devices has led to the rapid rise of Swift to become a top-15 programming language, which is phenomenal considering the fact that it was only introduced three years ago.
In summary, while there has been some fluctuation among the top programming languages, the list of leaders has remained pretty stable over the years. The exact position depends on how each language is being evaluated, and again, I think it’s important to differentiate between popularity of a language and what developers like using. It’s easy to objectively measure which programming languages are being used but that doesn’t measure the more subjective idea of which languages developers actually like.