Dr. Dobb's is part of the Informa Tech Division of Informa PLC

This site is operated by a business or businesses owned by Informa PLC and all copyright resides with them. Informa PLC's registered office is 5 Howick Place, London SW1P 1WG. Registered in England and Wales. Number 8860726.

Channels ▼


The Rise and Fall of Programming Languages in 2011

Last year marked many changes in programming: Mobile devices emerged as a major programming platform and, at the other end of the spectrum, clouds became an established platforms for data and applications. In between, desktops and laptops gained substantially more RAM and somewhat more processor cores. Predictably, some of these changes trickled down to the choice of languages.

The well-known Tiobe Index (an index that culls frequency of mentions of languages and language products and translates it into a percentage of overall mentions) found the greatest language growth last year to be in Objective-C. I believe few readers would be surprised by this. Between the iPhone, iPod, and iPad (and to a lesser extent Macs), the demand for Objective-C skills has clearly grown.

The effect of mobile appears as well in Java, which over the last 10 years of Tiobe data has been in a steady decline. Two years ago, it began something of a comeback — I believe driven by Android development — and this year, Java stayed essentially even with last year. My belief is that Android is filling the gap caused by JVM languages, such as Scala, Groovy, and JRuby, which are drawing Java developers away from the language on desktop and server platforms.

As mobile programming takes off, it brings developers back to a lower level of programming that's closer to the hardware. Typically, because applications on a mobile device tend to have small code bases and require specific languages to exploit every new hardware feature, scripting languages have gained little traction in this area. (Apple's tight controls on languages and tools has also contributed to the phenomenon.) As a result, for the first time in years, possibly ever, all the primary scripting languages — Perl, Python, Ruby and PHP — declined this year. Of these, Python and Ruby's are the most interesting.

Ruby's showing in the Tiobe Index is seconded by its numbers on Ohloh.net, which tracks the number of contributions to open-source projects by programming language. LOCs of Ruby changed or added in 2011 were at their lowest level since 2006 — a fifth of what they were in 2008. I expect that part of the reason for this is that the Ruby on Rails (RoR) jubilation has finally subsided; not because of any inherent defects in the framework, but because it is only one solution to a larger problem. In addition, other frameworks have started adopting some of the original innovations that RoR brought to the fore. Python's fall in Tiobe is not reflected in the Ohloh numbers, which suggests that the decline is likely due to the overall market expanding faster than Python's own ranks, thereby giving it a smaller share.

PHP's decline is tied, in my view, to JavaScript's emergence. JavaScript grew modestly this year on Tiobe but significantly in OSS projects. To the extent that PHP and JavaScript functionality overlap, JavaScript will increasingly rule the day. In a new survey (kindly shown to me pre-release by Zend, the company behind PHP), 82% of PHP developers use JavaScript as a second language. (The nearest competitor, Java, tipped the scales at a piddling 24%). Whether JavaScript's importance as such will continue to grow is hard to say. As I wrote a few months ago, I increasingly believe that JavaScript will become a universal intermediate language, with other languages, such as Coffeescript or Dart, serving as the front-end languages. Personally, I'm hoping that the browser vendors might agree to a compiled binary representation of JavaScript as a way to further accelerate its performance in the browser, but I believe this development could leave open possibilities for instruction extensions by individual browsers that might ultimately prove to be enough of a portability hindrance to off set any performance benefit.

The trend away from scripting to more native languages was also evident in the .NET world. C# saw a huge rise in adoption (second only to Objective-C's jump). The surge was sufficient to move C# ahead of C++ for third place in the Tiobe Index. A significant portion of this rise, I believe, came from developers moving away from Visual Basic. This trend curiously undercuts the core .NET proposition; namely, that developers would use multiple interoperable languages on the platform. But in fact, as the number of languages on .NET consolidates around C#, the benefit is becoming less valuable. (Ironically, the opposite is happening on the JVM, where there is a proliferation of alternative, interoperable languages.)

One year does not a trend make, so changes need to be looked at as indicative but not conclusive. However, the move to non-scripting languages, because it's occurring uniformly across so many idioms, might well augur the end of the cycle that held developer time was worth the sacrificing of performance and closeness to the execution platform. We'll see.

— Andrew Binstock
Editor in Chief
[email protected]
Twitter: platypusguy

Related Article

The Rise And Fall of Languages in 2010

Related Reading

More Insights

Currently we allow the following HTML tags in comments:

Single tags

These tags can be used alone and don't need an ending tag.

<br> Defines a single line break

<hr> Defines a horizontal line

Matching tags

These require an ending tag - e.g. <i>italic text</i>

<a> Defines an anchor

<b> Defines bold text

<big> Defines big text

<blockquote> Defines a long quotation

<caption> Defines a table caption

<cite> Defines a citation

<code> Defines computer code text

<em> Defines emphasized text

<fieldset> Defines a border around elements in a form

<h1> This is heading 1

<h2> This is heading 2

<h3> This is heading 3

<h4> This is heading 4

<h5> This is heading 5

<h6> This is heading 6

<i> Defines italic text

<p> Defines a paragraph

<pre> Defines preformatted text

<q> Defines a short quotation

<samp> Defines sample computer code text

<small> Defines small text

<span> Defines a section in a document

<s> Defines strikethrough text

<strike> Defines strikethrough text

<strong> Defines strong text

<sub> Defines subscripted text

<sup> Defines superscripted text

<u> Defines underlined text

Dr. Dobb's encourages readers to engage in spirited, healthy debate, including taking us to task. However, Dr. Dobb's moderates all comments posted to our site, and reserves the right to modify or remove any content that it determines to be derogatory, offensive, inflammatory, vulgar, irrelevant/off-topic, racist or obvious marketing or spam. Dr. Dobb's further reserves the right to disable the profile of any commenter participating in said activities.

Disqus Tips To upload an avatar photo, first complete your Disqus profile. | View the list of supported HTML tags you can use to style comments. | Please read our commenting policy.