With the spring and summer travel schedule drawing to a close, we finally have had time to sit down and run the numbers collected back in June. As always, aside from the fact that we run our own GitHub rankings now, the process used for our bi-annual programming language rankings remains the same as when Drew Conway and John Myles White first looked at the question late in 2010. We have continued this analysis, comparing the performance of programming languages relative to one another on GitHub and Stack Overflow twice a year. The idea is not to offer a statistically valid representation of current usage, but rather to correlate language discussion (Stack Overflow) and usage (GitHub) in an effort to extract insights into potential future adoption trends.
With the exception of GitHub’s decision to no longer provide language rankings on its Explore page – they are now calculated from the GitHub archive – the rankings are performed in the same manner, meaning that we can compare rankings from run to run, and year to year, with confidence.
Historically, the correlation between how a language ranks on GitHub versus its ranking on Stack Overflow has been strong, but this had been weakening in recent years. From its highs of .78, the correlation was down to .73 this time last year – the lowest recorded. For this run, however, the correlation between the properties is once again robust. As with last quarter’s ranking, the correlation between the properties was .77, just shy of its all time mark. This is arguably noise, but we believe the correlation is worth noting at a minimum.
Before we continue, please keep in mind the 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.
(click to embiggen the chart)
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). Note that this is actually a list of the Top 21 languages, not Top 20, because of said ties.
19 Visual Basic
We do have movement outside of the Top 10, however. Here they are in no alphabetical order.
- Elixir: Elixir jumped again this quarter, but to a smaller degree (2 spots) than last (6) run. Its trajectory and functional appeal make it a language to watch, but whether or not Elixir can sustain this momentum is the important question. As even very popular languages like Swift have proven, the difficulty of growth is proportional to the rankings themselves – as one rises, so does the other. It’s also worth noting that Erlang has not seen a bounce from Elixir; it was static this period, holding at 26.
Julia: Julia’s growth has always been slow, but this is the first period in a number of quarters where Julia actually slid. Having moved up to #51 last quarter, it slid back to #52 for this run. This is not particularly surprising, as the language is not currently demonstrating the traction, visibility and enthusiasm characteristic of faster adoption rates. We’ll watch over the next quarter or two to see whether Julia can resume its climb, or whether it has stalled in a manner similar to CoffeeScript.
R: Out of all the back half of the Top 20 languages, R has shown the most consistent upwards movement over time. From its position of 17 back in 2012, it has made steady gains over time, but had seemed to stall at 13 having stuck there for three consecutive quarters. This time around, however, R took over #12 from Perl which in turn dropped to #13. There’s still an enormous amount of Perl in circulation, but the fact that the more specialized R has unseated the language once considered the glue of the web says as much about Perl as it does about R. Which is irrelevant to R advocates, of course. Whatever the cause, R’s relatively unique Top 20 path is one for fans of the language to cheer.
Rust: Interestingly, given that the past two quarters have anecdotally seen an uptick in Rust discussion, the language actually followed Julia’s lead and gave up one spot in the rankings this quarter. From a big picture standpoint, this is not particularly problematic, given that individual ranks should be taken with a grain of salt always, particularly so the further down the rankings a given language sits. That said, upward trajectories are preferable to the opposite, even if the actual rankings themselves are not to be obsessed over. Like Julia, it will be interesting to see whether or not Rust will gain next quarter or if it has instead plateaued.
Swift: Swift at this point has become the canonical example for the inertia of incumbent languages. Have followed an unprecendented growth trajectory since its introduction, this run is the first in which Swift has not gained but merely held its position of #17. In Swift’s defense, it at least performed better than the language directly ahead of it, Haskell, which fell out of a tie with Go for 15th place into #16. But it’s clear that further gains for Swift will not come easily, and will instead be the product of widespread usage across an array of communities. As discussed in the last iteration of these rankings, Swift has opened up new avenues for growth beyond iOS development via its release as open source software and the embrace of third parties like IBM or Perfect, but these have yet to yield gains in new discussion or code sufficient to propel it forward in these rankings. We’ll be watching for signs of this type of new growth closely.
The Historical Rankings
As we did last quarter, this visualization will allow you to dynamically select or deselect languages at will, tracing their individual rankings back to the first runs of this exercise.
A few notes:
- This is not a complete ranking of all the languages we survey. It includes only languages that are currently or have been at one time in the Top 20.
- This graphic is interactive, and allows you to select as many or as few languages as you prefer. Just click on the language in the legend to toggle them on or off. This is helpful because Swift fundamentally breaks any visual depiction of growth: de-select it and the chart becomes much more readable.
- The visualization here, courtesy of Ramnath Vaidyanathan’s rCharts package, is brand new and hasn’t been extensively tested. Mobile may or may not work, and given the hoops we had to jump through to host a D3-based visualization on a self-hosted WordPress instance, it’s likely that some browsers won’t support the visualization, HTTPS will break it, etc. We’ll work on all of that, and do let us know if you have problems, but we wanted to share at least the preliminary working copy as soon as we were able.
With that, we hope you enjoy this visual depiction of the Historical Programming Language Rankings.
[advanced_iframe securitykey=”7322342f8a4e09f44c74349c037382029af3e137″ src=”http://redmonk.com/hist-rankings-full.html” width=”740″ height=”423″]
In general, these rankings are experiencing less volatility over time. The Top 10 in particular is fairly static, and even within the Top 20 movement is becoming more limited. It may be, as mentioned above, that we’re at or near peak fragmentation, and that the Cambrian explosion of programming languages is leading to a predictable period of consolidation. We’ll look at this question in more detail shortly.
Even if that is the case, however, it is not true that there are no interesting trends to watch in the programming language landscape. R’s continued ascent is interesting, particularly following the acquisition of Revolution Analytics by Microsoft. Another language with ties to Microsoft, TypeScript’s ascent is as notable as it is surprising, and whether Swift can pass Haskell and potentially even Go will be fascinating to watch. In the last few spots in the Top 20, meanwhile, there are suggestions that change is coming: Clojure, Groovy and Haskell all fell back this quarter.
We’ll be back with you in two quarters to assess these and other questions.
Jim T says:
July 20, 2016 at 10:08 pm
Delphi and Pascal are separate entries in the ranking, but what defines the difference between them?
The two major Pascal compilers (Delphi and Free Pascal) are both Object Pascal compilers. So shouldn’t the Delphi and Pascal entries be merged into a single Object Pascal entry?
July 21, 2016 at 4:46 am
[…] Source: RedMonk […]
July 21, 2016 at 6:45 am
I do understand that you want to find a way to measure “popularity”, but please don’t use StackOverflow community tag – it’s is _not_ a representative figure.
Secondly using lines of code is yet another bad measure, because in a good language I can achieve the same with 10x less lines of code.
July 21, 2016 at 7:42 am
“We do have movement outside of the Top 10, however. Here they are in no alphabetical order.”
Yet, they are in alphabetical order…
It looks like maybe you started to write “in no order” and changed your mind, choosing alphabetical instead, but forgot to take out the word “no”.
July 21, 2016 at 10:19 am
Do we consider CSS a programming language? I use it and I like it but I do not think it can be used for anything other than styles for HTML web pages. Please correct me if I am wrong.
David T. Macknet says:
July 21, 2016 at 10:57 am
One thing which may not be factored into your calculations which would lead to skew: TeX has its own stack overflow @ tex.stackexchange.com which is where you’ll find the stack overflow activity, rather than in the main stack overflow.
July 21, 2016 at 11:59 am
Sorry, did I miss a link to a fuller lineup? Is there any data on languages below 21? Just looking for the trends on a language I’m interested in that clearly, not many people are using.
Alexander Manley says:
July 21, 2016 at 5:33 pm
Interesting to see GO move up in the rankings once again. Year after year, the steady rise of GO is testament to the expressive power of a language that is forming the corner stone of Cloud infrastructure, whether it be Red Hat’s Openshift, Docker, IBM Cloud-Foundry/Bluemix or the industry wide migration trends away from Python/Java/.NET when it comes to greenfield and non-legacy focused DevOps, in developing cloud native applications and databases like the opensource ACID compliant CockroachDB being built with GO instead if C/C++.
July 23, 2016 at 3:38 am
July 23, 2016 at 6:05 pm
Arthur Zubarev says:
July 24, 2016 at 8:09 am
Why there is no SAS language listed?
July 24, 2016 at 9:25 am
Interested to see that Lua (which recently celebrated a 30th (?) anniversary) ranks in the 70% range on both GitHub and Stack Overflow.
Week 28 | import digest says:
August 1, 2016 at 1:41 pm
[…] RedMonk’s programming language rankings based on GitHub rankings has the following occupying the top four slots: […]
Adam Leventhal's blog » I Love Go; I Hate Go says:
August 1, 2016 at 11:19 pm
[…] were straightforward, and I was quickly writing real code. I’ve wanted to learn Go since its popularity was surging few years ago. In no danger of being judged an early adopter, I happily found a great project […]
Java Annotated Monthly – August 2016 | IntelliJ IDEA Blog says:
August 8, 2016 at 6:17 am
[…] continues to sit in one of the top spots in various language rankings, but its not the only player on the […]
RedMonk Programming Language Rankings for Q3 2016 – Senior DBA says:
August 9, 2016 at 10:05 am
[…] of those same languages on GitHub allows for a analysis of what languages are most popular. The article by Stephen O’Grady reads: “The idea is not to offer a statistically valid […]
Journeyman’s Digest « Daniel J Scheufler says:
August 9, 2016 at 5:13 pm
December 27, 2017 at 2:20 pm
[…] is no movement, in fact, among languages ranked within our Top 10,” added the blog posting accompanying the rankings. “The positions have solidified, and it’s becoming apparent that it […]
Ruby logging best practices and tips - Coralogix - 3rd generation log analyitcs says:
January 9, 2018 at 12:20 pm
[…] Rails lack the ‘cool factor’ they had in the past, depending on where you look it still claims the 5th most used language (it peaked at 4th place in 2013 anyway), 12th place in the IEEE spectrum and 4th place on GitHub. […]