You probably already heard that Java topped the TIOBE index in 2015, with an impressive growth spurt of 6% that put it close to 2006 levels and clearly outdistanced stagnant C (21.5% vs 16%). The rest of the field remained fairly unchanged, except for rapidly declining Objective-C, suggesting that Java drew renewed interest from across the industry. Perhaps Oracle’s continuing modernization of Java, comprising existing features (lambda expressions, streams) as well as planned ones (modules, generics for primitives, user-defined value types), has finally stopped developers from looking for better options.
RedMonk’s most recent language snapshots for GitHub and Stack Overflow, taken in June 2015 and January 2016, see JavaScript slightly ahead of Java. As usual, TIOBE ranks JavaScript much lower and C much higher than RedMonk’s sources – a reminder that both languages target specific areas that aren’t equally represented in both surveys. Other languages present in both Top Tens include C++, C#, Python, PHP, and Ruby. Only RedMonk sees CSS (not specifically covered by TIOBE) and Objective-C in the Top Ten, whereas only TIOBE records Visual Basic .NET and assembly language (of all things).
Several much talked-about languages still ranked poorly in both surveys. While generally experiencing some slow ongoing growth, Go, Swift, and the various JavaScript replacement hopefuls (CoffeScript, Dart, TypeScript) keep slumming with niche languages like Matlab. Moreover, despite the ongoing Java boom none of the other JVM languages (Clojure, Groovy, Scala) is nearly as popular. That was confirmed by a JAXenter survey showing a greater interest of Java programmers in JavaScript or TypeScript than in any alternative JVM language. As noted above, a plausible explanation is that Java has accumulated enough features to obviate the need for such alternatives.
Other Rankings
In July 2015, IEEE Spectrum combined ten data sources into the weighted IEEE Spectrum ranking. Mathematics and engineering should be quite influential there, as evidenced by the appearance of R and Matlab in the Top Ten. The rest consists of the usual suspects, in order: Java, C, C++, Python, C#, PHP, JavaScript, Ruby.
Also in July 2015, JetBrains posted some interesting C++ infographics. Their estimates of worldwide developer numbers produced a ranking of Java, C#, JavaScript, PHP, C++, Python, Objective-C, C, and Ruby – comparable to RedMonk rather than TIOBE. JetBrains sees over twice as many C++ as C developers in the world (4.4 vs 1.9 million) – which is the exact inverse of TIOBE shares (6.9% vs 16%). Are C++ people googling only a quarter as much as C people? JetBrains’ estimated distribution of C++ developers is perhaps enlightening: only 1 million in America versus 3.4 million in the rest of the world, with C++ being relatively more popular in Europe including Russia. Might TIOBE’s search engines overemphasize American results? We would need more data to confirm this guess. The uniquely strong position of Visual Basic in the TIOBE index certainly hints at a built-in bias.
Finally, in August 2015 GitHub published long-term language trends covering 2008 through 2015. The most surprising entry here is once again Java, rising from seventh to second place (behind JavaScript) past Ruby, PHP, Python, C, and Perl. Of previously popular languages, Perl and Objective-C dropped out of the Top Ten while C# and CSS gained a firm foothold.
Learn Python!
Oli Moser’s Google Trends comparison of “learn java” versus “learn python” in 2005 through 2015 shows another slight but steady rise for Java since bottoming out around 2010, but also a simultaneous and faster rise for Python which actually surpassed Java in 2015. While not the top language in any other survey I’ve seen, Python has certainly established itself as the de facto “quick & dirty” language for scripting and scribbling, a status that was once held by BASIC and which was later contested by various ghastly shell languages as well as Perl and Ruby, both now in relative decline.
Moser also identified the primary source of new Python recruits. The Google Trends timeline for “java developer” almost precisely matches “learn java” whereas “python developer” is nearly nonexistent. Instead, the big increase in “learn python” matches an entirely different search term: “data scientist.” And that’s indeed who is avidly using Python these days, according to every report I’ve seen on scientific programming languages. Evidently, those who aren’t professional software developers most appreciate Python’s relative terseness and lack of mandatory boilerplate code.
Bonus Links
Uku Pattak has built a nifty real-time analysis of GitHub repositories for tabs versus spaces, ordered by language. Representing tab haters worldwide, I’m happy to say that hard tabs are now in the minority in almost all programming languages, excepting only a few oddballs I’ve never heard of (Autohotkey, Autoit, Haxe!?) and more notably Go. As Daniel Lemire informed me on Twitter, Go comes with a formatting tool that enforces tab indentation on source code. This clearly proves that Go is the work of the devil.
Finally, two slick websites that visualize the operation of various algorithms have come to my attention. Carlo Zapponi’s Sorting simultaneously runs your selection from 17 sorting algorithms. Mike Bostock’s Visualizing Algorithms is an almost book-length page covering a great variety of algorithms, with references to further algorithmic and mathematical visualizations.