This iteration of the RedMonk Programming Language Rankings is brought to you by HP. The tools you want, the languages you prefer. Built on Cloud Foundry, download the HP Helion Development Platform available today.
It being the third quarter, it is time at RedMonk to release our bi-annual programming language rankings. As always, the process has changed very little since Drew Conway and John Myles White’s original analysis late in 2010. The basic concept is simple: we regularly compare the performance of programming languages relative to one another on GitHub and Stack Overflow. 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.
In general, the process has changed little over the years. 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. There was, however, a minor issue with this month’s run which had an interesting impact which will be discussed in more detail below.
In the first quarter run, we noted that an erosion in the typically strong correlation between how a language performed on GitHub and Stack Overflow had been arrested. Down to .74 in Q314, the correlation in Q1 was back up to .76. For the third quarter, however, the correlation has resumed its slide; this ranking’s .73 represents an all time low. The correlation between the two properties remains strong from a statistical standpoint, but it will be interesting to observe whether the two properties continue to drift apart.
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.
- GitHub language rankings are based on raw lines of code, which means that repositories written in a given language that include a greater number amount of code in a second language (e.g. JavaScript) will be read as the latter rather than the former.
- 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.
1 JavaScript
2 Java
3 PHP
4 Python
5 C#
5 C++
5 Ruby
8 CSS
9 C
10 Objective-C
11 Perl
11 Shell
13 R
14 Scala
15 Go
15 Haskell
17 Matlab
18 Swift
19 Clojure
19 Groovy
19 Visual Basic
As with last quarter, JavaScript maintains a slim margin on second-place Java, with the caveat that the difference between numerical rankings is slight. The language’s sustained performance, however, reflects the language’s versatility and growing straegic role amongst startups and enterprises alike.
Aside from those two languages, the Top 10 has been static. With minor execeptions, in fact, it has remained static for several years. While we see periodic arguments from advocates of a particular language, or a particular style or type of language, the simple fact is that the group of the most popular languages has changed little and shows little propensity for future change, though there are two notable would-be challengers discussed below. This raises some interesting questions about language adoption and whether fragmentation has reached its apogee.
Outside of the Top 10, however, we have several changes worth discussing in more detail.
- Go: A year ago, we predicted that Go would become a Top 20 language within a six to twelve month timeframe. Six months ago, it achieved that goal landing as the #17 language in our January rankings. In this quarter’s run, Go continues on that same trajectory, up another two spots to #15. In the process, it leapfrogged Haskell and Matlab. While the language has appeared at times to be in the trough of disillusionment following an extended honeymoon period, none of the periodic criticism has had any apparent impact on the project’s growth. And with an increasingly strategic foundational role within projects that are themselves strategic, Go’s future appears bright. It’s also worth considering whether the Supreme Court decision could eventually, indirectly lead to a more significant change in Go’s fortunes given recent project activity.
-
Erlang: One of the long time choices for developers struggling with concurrency, Erlang jumped one spot on our rankings from #26 to #25, which merits mention because of a recent change in the licensing of the project. Two weeks ago, at the urging of a few prominent Erlang community members, Erlang dropped its early-MPL derived Erlang Public License in favor of the Apache License, Version 2. While a change of this type will not by itself do much to affect the project’s fortunes, removing friction to the adoption of a project – which transitioning from a vanity license to a widely accepted public alternative represents – is certainly a welcome development.
-
Julia/Rust: Historically, we’ve discussed these two languages together because they were both languages to watch, they were closely ranked and on similar trajectories. Last quarter, however, Rust put some distance between itself and its erstwhile rankings-mate, jumping eight spots to Julia’s three. This time around, however, Julia (#52) was the higher jumper, moving up four spots to Rust’s two (#48) – too bad that information wasn’t available in time for JuliaCon. As for Rust, anecdotal evidence has been accumulating for some time that the language was piquing the interest of developers from a variety of spaces, and the quantitative evidence supporting this observation is ample. Both remain languages to keep an eye on.
-
CoffeeScript: This ranking makes the fourth out of five quarters in which CoffeeScript has dropped. From its high ranking of 17 in Q3 of 2013, in the four runs since, it has clocked in at 18, 18, 21 and now 22. It’s not impossible that the language finds a foothold and at least stabilizes its position, but its prospects for re-entering the Top 20 appear dim both because of its own lack of momentum and the competition around it.
-
Dart / Visual Basic: Two quick notes on languages we’re asked about frequently. Visual Basic dropped from 17 into a three-way tie for 19th along with Clojure and Groovy. That’s fine company to be keeping, but the future of VB in the Top 20 is unclear. Dart, for its part, is a language that we field regular questions on both because of its Google pedigree and its ambitions vis a vis JavaScript. To date, however, while Dart has shown steady growth, it’s growth has been minimal next to its Google-born sibling, Go. Dart moved up one spot this quarter, from #34 to #33.
- Swift: As mentioned at the top, this month’s rankings had a minor issue. At the request of a few parties ahead of Apple’s WWDC, we went to take a look at the rankings to determine how Swift had performed given its meteoric rise from #68 to #22. Unfortunately, due to a change in page structure, our automated Stack Overflow scrape had failed. So we narrowed the scope, did a quick manual lookup of the Stack Overflow numbers for the Top 30 from the prior run, and calculated out rankings just for that subset. For this partial run, we had a 3-way tie for 18th place and then Lua and Swift tied for 21, leaving Swift just outside the Top 20.
For our official rankings, however, we obviously required a complete set of Stack Overflow data, so we collected a full run shortly after WWDC. The partial results from our June 1st run were of course discarded so as to compare all languages on an even footing. When we ran the full rankings then, with the new, complete Stack Overflow set we discovered something interesting: Swift had jumped from #21 to #18. Call it the WWDC effect, but Stack Overflow in particular surged as is evident from the chart and pushed Swift up just enough to displace the 19th place finishers. This means that it’s last three rankings in order are 68, 22 and 18. While we caution against reading too much into the actual numerical placement, Swift is certainly the first language to crack the Top 20 in a year. By comparison, one of the fastest moving non-Swift languages, Go, ranked #32 in the original 2010 dataset finally cracking the Top 20 in January of this year. Even if you assign little importance to the actual ranking, then, there is no debate that Swift is growing faster than anything else we track. The forthcoming release of Swift as open source and availability of builds for Linux, as well, should theoretically provide even more momentum going forward.
The Net
For several quarters now, we’ve seen a pattern of little to no change at the top of the rankings, with the list becoming more volatile in direct proportion to a descent down the rankings. Go and Swift represent the first two potential challengers for the Top 10 we’ve seen in some time. It will be interesting to see if one of Go or Swift can punch their way into an otherwise static Top 10, and if so, on what timetable. At a minimum, Go would have to displace Objective C, Perl, Shell, R and Scala. Perl and Shell are everywhere but lack the volume of languages higher up the spectrum, while R and Scala are very popular languages but specifically purposed. The best bet for weakening Objective C, meanwhile, is accelerating Swift adoption. Swift, for its part, has to tackle the above list, as well as Matlab, Haskell and Go itself.
Between Go’s increasing popularity as a modern back end language and Swift’s bid for traction outside of the iOS landscape, the next few iterations of this list will be interesting to watch.
Update: Please note that in the plot above the position of Ada and AGS Script are incorrect. Their Stack Overflow rankings were over-represented and thus the plot values are high.