This iteration of the RedMonk Programming Language Rankings is brought to you by Cloudflare Workers – the fast, secure, and affordable serverless platform. No matter the language, Cloudflare Workers helps developers solve their hardest problems. Start building today with Cloudflare Workers!
With everything going on in the world, we’re a little late with our third quarter bi-annual Programming Language rankings. But better late than never, they are finally complete.
As always, these are a continuation of the work originally performed by Drew Conway and John Myles White late in 2010. While the specific means of collection has changed, the basic process remains the same: we extract language rankings from GitHub and Stack Overflow, and combine them for a ranking that attempts to reflect both code (GitHub) and discussion (Stack Overflow) traction. The idea is not to offer a statistically valid representation of current usage, but rather to correlate language discussion and usage in an effort to extract insights into potential future adoption trends.
Our Current Process
The data source used for the GitHub portion of the analysis is the GitHub Archive. We query languages by pull request in a manner similar to the one GitHub used to assemble the State of the Octoverse. Our query is designed to be as comparable as possible to the previous process.
- Language is based on the base repository language. While this continues to have the caveats outlined below, it does have the benefit of cohesion with our previous methodology.
- We exclude forked repos.
- We use the aggregated history to determine ranking (though based on the table structure changes this can no longer be accomplished via a single query.)
For Stack Overflow, we simply collect the required metrics using their useful data explorer tool.
With that description out of the way, please keep in mind the other usual caveats.
- To be included in this analysis, a language must be observable within both GitHub and Stack Overflow.
- No claims are made here that these rankings are representative of general usage more broadly. They are nothing more or less than an examination of the correlation between two populations we believe to be predictive of future use, hence their value.
- There are many potential communities that could be surveyed for this analysis. GitHub and Stack Overflow are used here first because of their size and second because of their public exposure of the data necessary for the analysis. We encourage, however, interested parties to perform their own analyses using other sources.
- All numerical rankings should be taken with a grain of salt. We rank by numbers here strictly for the sake of interest. In general, the numerical ranking is substantially less relevant than the language’s tier or grouping. In many cases, one spot on the list is not distinguishable from the next. The separation between language tiers on the plot, however, is generally representative of substantial differences in relative popularity.
- In addition, the further down the rankings one goes, the less data available to rank languages by. Beyond the top tiers of languages, depending on the snapshot, the amount of data to assess is minute, and the actual placement of languages becomes less reliable the further down the list one proceeds.
- Languages that have communities based outside of Stack Overflow such as Mathematica will be under-represented on that axis. It is not possible to scale a process that measures one hundred different community sites, both because many do not have public metrics available and because measuring different community sites against one another is not statistically valid.
With that, here is the third quarter plot for 2020.
Besides the above plot, which can be difficult to parse even at full size, we offer the following numerical rankings. As will be observed, this run produced several ties which are reflected below (they are listed out here alphabetically rather than consolidated as ties because the latter approach led to misunderstandings).
In a stark contrast to the massive disruption going on in the world, this quarter’s rankings saw less change overall than is typical. As accretive metrics, the rankings are not particularly volatile to begin with, but even by that modest standard this quarter’s rankings were fairly static. Whether this is part of the normal ebb and flow of relative language trajectories or whether it’s a manifestation of a world being turned upside down isn’t yet clear but we’ve run some preliminary numbers discussed below and will be monitoring the trend closely moving forward.
In the meantime, the changes that did occur are that much more notable, because they are the exception rather than the rule. One change in particular that we’ll discuss below is also notable because it’s something we have never seen before in the eight years we have been ranking programming languages according to their performance on GitHub and Stack Overflow.
With that preamble, here are the most important takeaways from this edition of the rankings.
Java (-1): As the fourth caveat states above, we caution against reading anything into slight differences between the rankings themselves, and this run is no exception. The difference between individual places on the rankings is slight, and the ranking in any single quarter is just a snapshot, one subject to temporary fluctuations. That being said, it is notable that, having been performing these rankings since 2012, this is the first time we have ever placed Java in a rank other than first or second. Even as other reports prematurely and falsely called the language dead or wrote it off, its robust performance in these quantitative rankings validated what we observed qualitatively, which was that Java remained in widespread usage thanks to its ability to find and satisfy new use cases. It is true, however, that Java has never faced more competition for developer time and attention than it does today, and while it will be an enterprise mainstay for years, its traditional position of prominence is not guaranteed. It will therefore be interesting to watch Java over the coming quarters to determine whether this run is a temporary aberration, a new status quo or an early indicator of a longer term decline in popularity.
Rust (+1): Speaking of languages competing with Java for developer time and attention, Rust’s steady if somewhat deliberate ascension up our rankings continues with its debut in our Top 20. Five years ago this quarter, Rust was languishing around at #48 on these rankings, nearly thirty spots behind languages like Haskell, Matlab, Clojure and Groovy. As of this quarter, it has passed them all and appears to have more growth potential yet in front of it. Its focus on the construction of secure applications is of particular and growing importance, and contributes to Rust’s usage in more and more high profile projects. Like Go, it probably has a ceiling in the mid-teens given its nature and focus, but the question is how quickly or not it can hit that mark. Or, in fact, whether its Top 20 positioning is sustainable or whether it might face a temporary setback.
Kotlin (0), Dart (0), Julia (0): The story with these three languages is the story of this quarter’s run, which is to say that there is no story. But before we delve into that, a quick aside: if it’s impressive that Rust now sits in the Top 20 after placing 48th five years ago, how much more impressive is it that Kotlin, one spot ahead of Rust this quarter, was fully twenty behind it five years ago at #68. That historic growth aside, however, the story for many of our recent movers on these rankings was no movement. These three languages which had shown a recent upwards trajectory all stalled, along with many others on our list. The obvious explanation would be a COVID-related dropoff in activity, but the data suggests otherwise. The Stack Overflow tags that we track grew at a negative rate compared with our last run (-16%), but the GitHub pull requests among surveyed languages grew at an 11% rate compared to the last rankings. This is not an anomalous pattern, historically, so there doesn’t appear to be an outsized impact from the pandemic on code contributions and discussion. Absent COVID, however, there is no obvious candidate for a simple hypothesis, so it may well be the static nature of these rankings was just a random occurrence. We’ll have to monitor this moving forward.
Radar trends to watch: August 2020 – O’Reilly says:
August 4, 2020 at 12:56 am
[…] jumps from #20 to #8 on the Tiobe index–possibly because of analysis of COVID data. The Redmonk rankings don’t have a similarly dramatic shift, but have R at #13 based on their analysis of StackOverflow […]
Rafael Alpizar says:
August 7, 2020 at 10:57 am
Hi, I’m an old programmer, and agree that the number of articles in Stack-overflow is a good indication of the popularity of the language, however, I believe that some languages are more troublesome than others which could bias popularity in the upper quadrant towards more troublesome languages.
In the 1990s, for example, C was particularly troublesome. The C Compiler was very lenient leading to much execution errors and occasional OS faults. This has improved a lot since; I love C but one has to recognize the faults of the things one loves.
On the other hand, Ruby, Go, and Rust are not problematic languages once you get to know them well, I think. Compiling is a little more time consuming but then the code often just runs as expected.
The language syntax and semantics are geared to prevent the programmer from having to visit say, Stack-overflow, to figure out what went wrong.
I’m familiar with some of the languages in the Rank Graph and have been following it’s evolution for many years.
It seems to me that the languages below the line (that I know), and particularly in the upper-right quadrant, are much less troublesome than the languages on the upper side of line.
I would even venture to say the the perpendicular distance to the line might be a metric worth studying.