The RedMonk Programming Language Rankings: June 2015

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.

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.

70 comments

Joel Martinsays:

Nimrod should be Nim. Also, can you post your rankings for language above 20? Also, how do you determine rankings for languages far outside the midline (VimL, SQL, etc). Do you sweep a straight diagonal line from upper-right to lower-left?

sogradysays:

@Joel: Thanks for the correction. We’re still working off of the GitHub and Stack Overflow classifications which are Nimrod, but I’ll try and remember to correct that next run.

As for the downstream numerical rankings, we don’t make those available mostly because the further you go down, the less relevant the numerical ranking is due to lack of sample size. The difference between #95 and #96, for example, could be a few Stack Overflow tags which is meaningless.

We include them on the plot, however, because it can be interesting to see how they perform not so much one language to another as much as on GitHub vs Stack Overflow.

Demetrisays:

Interesting listing overall. I am not sure what you mean by categorizing Scala as “specifically purposed”. It is a general purpose language that runs on the JVM and is about as versatile as Java in most of the ways that count.

It has, lately, become heavily associated with Spark, but if anything, this should drive additional adoption given Spark’s momentum.

sogradysays:

@Demetri: Good point. Scala is certainly a versatile language with a variety of use cases. My point was simply to imply that, typically, it’s a smaller number of use cases than, say, JavaScript or Python.

Use of Scala tends to be driven by a particular need more so than some of the languages in the Top 10.

But you’re right to point out that Scala is, certainly relative to R which it was grouped with, general purpose.

Mennosays:

Adriansays:

It might be useful to normalize the github popularity index. It seems unfair to penalize concise, expressive languages by just counting raw number of lines of code. If a relative verbosity coefficient could be arrived at (say, relative to Java), then the raw popularity index could be divided by this to more fairly rank languages on this axis.

With Clojure, for example, if 0.4 was used as the verbosity coefficient, the weighted github index would be (actual index)/0.4. Clearly more expressive languages would get a boost, as they should.

@sogrady – You can delete/moderate this comment, I’m just giving you feedback on my experience using this comment section on my iOS device. As I was filling out the form I found it near-impossible to click on the green Publish button. Just FYI.

My setup: iOS 8.4 (6+) using Twitter client.

Use case: Followed tweet’s link to rankings, made a comment. As my comment became longer the green button became more and more obscured at the bottom of the screen. I had to scroll up fast several times to see and try to press the green button before it disappeared. Accidentally pressed z once 🙂

Shorter comments (fewer lines) seems to work ok.

This commented was entered using my desktop but would otherwise be impossible using my phone.

[…] New applications increasingly demand new approaches to development. This is one reason that Google’s Go programming language has been on a tear, and it may indicate a rosy future for Rust. As RedMonk analyst Stephen O’Grady points out: […]

[…] Before signing off for now, I will just say that like IBM, HP is all about packaging the open source cloud stacks- HP HelionCloud, the company’s hybrid platform, is a Cloud Foundry for polyglot developers, OpenStack for ops people burger, which will be supporting Docker etc. One final piece of evidence HP wants to engage with developers- it is sponsoring our latest programming language rankings. […]

[…] who feel other ranking systems are a better litmus test for emerging programming languages. The RedMonk Programming Language Rankings is occasionally cited as more accurate as it culls information from GitHub and Stack Overflow. […]

Ray Polivkasays:

I am surprised that there is no mention of APL. Go o TryAPL.org and take a look and try it. Today one can speak of Dyalog APL as a multi-platform programming language that incorporates procedural, functional, and object oriented paradigms.The development of true parallel processing is underway.

[…] ranked as the number one language for discussion and usage followed closely by Java in the RedMonk Programming Language Rankings. Java remains the leading language for web applications and transaction systems. Combining […]

[…] ranked as the number one language for discussion and usage followed closely by Java in the RedMonk Programming Language Rankings. Java remains the leading language for web applications and transaction systems. Combining […]

[…] ranked as the number one language for discussion and usage followed closely by Java in the RedMonk Programming Language Rankings. Java remains the leading language for web applications and transaction systems. Combining […]

[…] is true. They’re clearly still here, constantly switching places with Java as some of the most-used development languages out there – not everything you do needs an application server to run. Not everything fits the […]

Chuck Speakssays:

@Luke – it would seem a ranking based on total lines of code would inflate rankings for more “verbose” languages. Not that it was necessarily more popular, just that people bled more to code in that particular language.

Jonassays:

Pretty sure CoffeeScript will lose users to TypeScript which I think fill a much more important purpose for enterprise scale development. It doesn’t hurt that the TypeScript team cooperates with Google for AngularJS support, as well as now includes ReactJS (JSX) support as well, along with the clever declaration files to “type” any Javascript module. TypeScript is actually the strongest future contender among Javascript variants that I can see.

[…] been gathering more and more developers. By analysis house Red Monk‘s count, which “compares the performance of programming languages relative to one another on GitHub and Stack Overflow,” Go is rapidly becoming a very popular […]

[…] data, combined with GitHub activity, for their bi-annual language popularity rankings. R was ranked #13 in their most recent analysis, in June 2015.) The data comes directly from the StackExchange data dump, loaded into a Sqlite […]

[…] any sleepless nights just yet (especially now Android is has opened up to OpenJDK), in the latest RedMonk Programming Language Rankings, Go placed alongside Haskell in the number 15 slot – just one below relative old timer […]

[…] Go was released in 2009 and since then has enjoyed explosive growth in popularity. It took almost four years to work its way into the Top 20 rankings by RedMonk. See Programming Language Rankings: June 2015. […]