The Tiobe Programming Community Index is a gauge that has long tracked the rise and fall of programming languages. First developed during the mid-1990s, the index relies on various data sources to gauge the popularity of languages; that is, the extent to which they're used (but not how much they're liked). The primary sources of information are the top six search engines. The process of how the raw data is converted into rankings is explained in considerable detail on the index's definition page. Suffice it to say that the index is carefully crafted to track the emergence, adoption, and eventual decline of every major and most minor languages (from ABAP to Z shell). Languages have to be Turing-complete, so interlopers that appear in surveys by non-programmers — XML, HTML, and the like — don't pollute Tiobe's findings.

Over the years, the index has been both praised and vilified. The latter by language adherents who are unhappy over the decline of their favorite idiom. Like many writers who've referred to the index, I've been castigated in the past for using it to support the fact that, let's say, Perl is in an inexorable descent (so is Java, but let me not get ahead of myself). Whether you like the results or not, you can't help but be impressed by the care with which the index is compiled. Moreover, having graphs showing 10 years of language adoption is a tremendous research resource.

In January of each year, the Tiobe site provides a recap of the previous year and compares languages using five-year mileposts. All of the data points reveal interesting, if sometimes inexplicable, results.

Looking over the ten-year chart, several patterns emerge immediately. The steady decline of Java is real. Ten years ago, it made up nearly 27% of mentions; since then, it's dropped to 18%. What is less clear is the state of JVM languages as a whole. But we can make a good guess that even if the main JVM languages (Groovy, Scala, and Clojure — JRuby and Jython are broken out separately from their parent languages, alas) were added back in to Java's numbers, the total would still see a decline. Like most readers, I would expect this to be the case, and I expect most of the emigrants migrated to Ruby and Python. We'll see in a moment if this theory is supported.

Java's decline, however, has not knocked it from the top position. It now enjoys a thin lead over C, followed (after a substantial gap) by C++ and PHP. These last two languages have been exchanging positions for a long time. While they've both declined somewhat during the last year, it's too early to tell whether or not that's a trend.

Next is Python, which I'll discuss in a moment. Then comes C#, which has been gaining steadily and finally passed Visual Basic as the .NET language of choice in 2010. Visual Basic has seen perhaps the most precipitous decline of any of the top ten languages — its popularity has dropped by half over the last three years. Most developers in the Microsoft universe would probably have intuited this change, but now there are unmistakably clear numbers to support this. Visual Basic's drop in favor of C#, I believe, is a function of VB being asked to do more than grind out CRUD apps, which were its bread and butter. The more complex the app, the more C# is the .NET language of choice. (Not to be overlooked in this regard is Microsoft's excellent stewardship of the language, which makes this shift possible.) I expect this trend will continue and Visual Basic will move increasingly to the end of the .NET stable where the old plow horses are quartered.

Now comes the interesting part. Python surged hugely this last year — more than any other language. It just beat out Objective-C for greatest increase in adoption in 2010. (Objective-C's jump is likely attributable to the popularity of the iPad, which came out last year.) It's hard to find any specific reason for Python's surge, but I suspect it's the result of continued broad adoption and Google's enthusiastic backing. What is surprising is that several factors might have argued against a break-out year for Python: Two incompatible versions of the language and the uncertain fate of the Unladen Swallow project. The folks at Tiobe speculate that one cause of its newfound popularity might be that it is becoming the teaching language of choice in college courses.

I'm not convinced. I suspect part of the new adoption comes from Perl programmers who are throwing in the towel. Perl fell again last year and the slope of its collapse is holding steady. In mid-2005, the language received 10.5% of mentions; by end of 2010, this number had dropped to 2% – 3%. I expect this trend will continue, as I strongly doubt that many new green field projects would today choose Perl as the principal development language. The causes of Perl's descent into what will soon be meaninglessness are many, but I believe Python is the principal reason. Python is better at doing what Perl does, and it's an easier language to learn.

The final entrant in the top 10 is Ruby, which — surprise, surprise — declined year over year. I don't have any insight into this save to wonder whether the Ruby on Rails (RoR) jubilation has passed into a period of more sober assessment of technology. While RoR is easy to use for erecting new sites quickly, if you need to move out of the basic RoR model, things become more difficult. Moreover, RoR has not broken out of its principal playing field of SMBs, which is what it probably needed to do to continue putting up big growth numbers. This may well change with the increased traction of JRuby, which I believe is how Ruby will end up getting into many data centers where the JVM is already established. If Ruby gains ground this year, it will almost certainly be due to JRuby.

Possibly the biggest surprise in the index was that JavaScript fell out of the top 10. I confess I am baffled by this. JavaScript is the defining language of Web apps. Moreover, I keep seeing perverse instances of Atwood's law (named after über-blogger Jeff Atwood): "Any application that can be written in JavaScript, will eventually be written in JavaScript." Moreover, JavaScript, like Python, has strong corporate backers who've worked hard to optimize execution engines and distribute the language widely (for example, it's now the default language of the Java JSR-223 scripting engine).

The real benefit of the Tiobe index comes from looking at trends rather than fluctuations, and making decisions accordingly when starting new projects. Java, C, C++, PHP, C#, and Python are languages that are widely used and will have plenty of support in the years to come. For all other languages, things are less clear.