This iteration of the RedMonk Programming Languages is brought to you by Microsoft. Developers build the future. Microsoft supports you in any language and Java is no exception; we love it. We offer the best Java dev tools, infrastructure, and modern framework support. Modernize your Java development with Microsoft.
While we generally try to have our rankings in July immediately after they are run, we generally operate these on a better late than never basis. On the assumption, then, that August is better than never, below are your RedMonk Q3 language rankings.
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 2021.
(Click to embiggen)
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).
As has become typical of third quarter runs, this round of the language rankings was fairly static. Whether the causal factors there are related to seasonal vacations, continuing impacts from the pandemic or some other combination of variables is unclear, but after last quarter’s run featured half the languages in the Top 20 changing spots in some way, this quarter’s run features only two such changes. Those changes, however, are quite notable, as is the lack of movement from several languages as we’ll discuss.
- Java (1): After spending a few quarters demoted to third place in our rankings, prompting questions from observers as to whether it was fated to a gradual drift down these rankings, Java surged back into a tie for second place with Python. This would be less of a surprise but for many of the language’s competitors – and, it should be said, the odd industry analyst or two – writing regularly recurring epitaphs for the stalwart of enterprise infrastructure. The language once created to run cable set top boxes continues to be a workhorse, and importantly one that has consistently been able to find new work to do. Java’s performance on these rankings continues to impress, all these years later, and as it’s shown a remarkable ability to adapt to a rapidly changing landscape it’s a language that would be difficult to bet against.
TypeScript (0): After spending two quarters at the ninth position in our rankings, TypeScript just concluded its second consecutive run in eighth place. That is has achieved that ranking at all, and at the expense of languages like Ruby, is immensely impressive. But the question facing the language now is one of ceiling. Does it have the capacity to move up and outperform long term incumbents such as C#, C++ or even PHP eventually, or is TypeScript essentially at or near the limits of its potential? It’s impossible to say with any reliability, but it is interesting to note that a year ago at this time TypeScript lagged the fifth place languages by six points in the combined score that the rankings are based on, but in this run the gap was only two points. Past performance doesn’t always predict future performance, of course, but it suggests at least that TypeScript might yet have some room in front of it.
Go/Kotlin/Rust (0): As with TypeScript, neither Kotlin nor Rust moved in this iteration of the rankings. On the one hand, that fact might be disappointing for advocates of the respective languages, but on the other, it may reflect a new emerging reality of systems languages. The relative performance of Kotlin and Rust, however, along with the longer term stagnation of Go is suggestive. Over the years, Java has faced a veritable gauntlet of would-be challengers for the title of enterprise application language of choice. But Java, as noted above, has shown no signs of riding off into the sunset, and in fact managed to grow its share this run after two quarters in third place unlike Go, Kotlin and Rust. It seems plausible, therefore, that Java is retaining – through a combination of adaptability on its part and inertia on the enterprise’s – a large share of the enterprise applications market, meaning that its would be challengers – languages like Go, Rust and to a lesser extent Kotlin because of the shared JVM platform – are competing less with Java than with each other. If that hypothesis is correct, we should expect Java to sustain its performance and future gains from Go, Kotlin and Rust – if any – will be harder to come by as they compete for shares of a smaller pool of workloads.
Dart (1): Last quarter we discussed Dart’s remarkable ascent after a long period of stagnation, an ascent almost certainly attributable to the popular Flutter framework, and asked the question as to whether Dart was done moving or if it had enough momentum to carry it into the Top 20. A quarter later, we have our answer, as Dart makes its Top 20 debut at #20 – displacing Perl in the process. This achievement in hand, the questions now are whether Dart can sustain a Top 20 ranking, and if so, whether it can continue moving up the charts. It will be a challenge, certainly, because the aforementioned competitive challenges aside, Kotlin and Rust – the two languages in front of Dart – are very popular in their own right. But that’s what will make it interesting see how it performance over the next few quarters, as it will give us some idea of what the current trends are with back end versus front end technologies in these rankings.
Julia (-4): Lastly, as a language we are periodically asked about, it’s worth noting that Julia has actually taken a few steps back. A year ago at this time Julia was poised just outside the Top 20 at #24, but in this quarters run it had dropped back to #28. It’s important to note, as always, that the absolute difference between languages becomes less significant the further down the rankings one goes, but a negative performance such as this for a language is generally not encouraging. In Julia’s case, part of the difficulty lies in its target area; with a notable focus on analysis, Julia often finds itself competing for developers’ attention with Python and R, two languages that whatever their flaws, have proven to be both popular and sustainably so. This has contributed, in a chicken and egg type problem, to a perceived lack of life in the surrounding ecosystem. That being said, it’s notable that Julia Computing, a commercial company started by the Julia project founders, just took in a $24M round of funding. We’ll be watching over the next few quarters to see whether the dollars injected into this ecosystem have any measurable impact.
Credit: My colleague Rachel Stephens wrote the queries that are responsible for the GitHub axis in these rankings. She is also responsible for the query design for the Stack Overflow data.