Now that we’re halfway through the fourth quarter, it’s probably about time for us to post our third quarter language rankings. We’ve been tied up behind the scenes at RedMonk between projects, our first event in three years and more and haven’t had the time to drop these yet, but the data’s been sitting and waiting for us. We’ll get into the results below.
In the meantime, as a reminder, this work is 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. If a given language is not present in this analysis, that’s why.
- 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 2022.
As has become the norm with the rankings, movement is increasingly rare. Apart from a few instances which we’ll explore momentarily, the top 20 has been stable for multiple runs. As has been speculated about in this space previously, it seems increasingly clear that the hypothesis of a temporary equilibrium of programming language usage is supported by the evidence.
While it is important not to overestimate the significance of any single metric or ranking, this one included, it’s worth thinking about the age of the quote unquote up and coming languages. Go, for example, was released 13 years ago. Rust, 12; Dart and Kotlin 11; TypeScript 10; and even the relatively young Swift has been available for eight years now.
It is not reasonable, of course, to expect a newly minted language to outperform in these rankings. They are accretive by nature, and therefore advantage long term usage and discussion. But anecdotally, we at RedMonk are not really running into many emergent programming languages with rare exceptions like Ballerina – five years old and ranked 87th.
Which is not to say, of course, that programming language evolution is done now or ever will be. For better and for worse, ours is a mercurial industry committed to perpetual reinvention. But it does suggest that, at present, industry innovation is focused on areas other than programming languages, and that we may have hit a point of relative – if temporary – contentment with the wide variety of languages available for developers’ usage.
With that, some results of note:
- TypeScript (1): Long one of our most meteoric risers – and one of the canonical examples of why interoperability with popular existing languages can be a dramatic accelerant in usage and adoption – TypeScript had nevertheless stalled in our rankings. For the last three runs, TypeScript held its ground as our eighth most popular language in the survey. This quarter, however, it’s seventh – and tied with C++. We’ve pointed to many general factors with a link to programming language popularity in the past, among them: the aforementioned interoperability with popular existing languages; any increased availability of security-related features; and associations with popular frameworks or projects. TypeScript has had the good fortune to check all of those boxes, and there is little suggestion at present that the language is headed anywhere but up. The only real question is on what timeframe.
- Go (1): Unlike TypeScript, Go’s trajectory has been anything but clear. While it grew steadily and reasonably swiftly as languages go, it has appeared to be stalled, never placing higher than 14th and having dropped into 16 for the last three runs. This quarter, however, Go rose one spot in the rankings back up to 15. In and of itself, this is a move of limited significance, as the further one goes down the rankings the less significant the differences between them are, ranking-wise. But it has been over a year since we’ve seen movement from Go, which raises the question of whether there is any room for further upward ascent or whether it will remain hovering in the slot one would expect from a technically well regarded but not particularly versatile (from a use case standpoint) language.
- Kotlin (1) / Rust (0) : Like Go, Kotlin had spent the last three runs in the same position. It and Rust had been moving in lockstep in recent quarters, but while Rust enters its fourth consecutive run in 19th place, Kotlin managed to achieve some separation this quarter jumping one spot up from 18 to 17. Big things have been expected of this syntactically friendly language with ready access to one of the largest programming language ecosystems in the world in Java, but sustaining its velocity and upward momentum has proven more difficult than once had been anticipated. But given the tie for 17th, Kotlin now finds itself directly behind Go in these rankings. It will be interesting to observe that trajectory over the next quarter or two to see whether Kotlin will pull even closer or, in time, pass it.
- Scala (-1): For the first time since 2020, Scala has dropped from 14th in our rankings to 15th. While as mentioned above, this is certainly not a massively consequential shift in fortunes, it does give occasion to ask what the future of this language might be over the longer term. Scala has been leveraged for years as a highly credible enterprise back end language, and nothing has changed recently in that regard. One interesting question, however, is whether and how the decision to relicense Akka – a popular Scala framework – from an open source license to a source available alternative might impact Scala adoption. Scala is unquestionably bigger than just Akka, but if popular frameworks can accelerate adoption of the languages they are based on, is the reverse true? The long term impact of the relicensing is unclear as yet, but there are known public instances such as Flink where it has resulted in a deprecation of Akka. It’s certainly not true to say that as goes Akka, so goes Scala, but when growth has been flat and the competitive language landscape is fierce it is not possible to rule out an adversial impact on the language from that decision.
- Objective C (1): Since its peak in mid-2018 at 9, Objective C has been on a largely downward trajectory. In the past seven runs it has only risen once, which does not come as much of a surprise. The venerable language first released the same year that Ghostbusters (the original one) and Indiana Jones and the Temple of Doom were in theaters owes the bulk of its popularity in these rankings to its position as the originally sanctioned language of choice for the iOS ecosystem, one of the largest and most commercially lucrative consumer markets in the world. When Apple annointed the modern Swift as its successor in 2014, the writing appeared to be on the wall. Imagine our surprise, then, to see Objective C bump itself back up a spot from 13 to 12. The odds are that this – like the second quarter in 2020 – is a temporary blip on a gradual downward glide path, but we’ll be watching for any news or developments that suggest this is something more sustainable.
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.