Channels ▼
RSS

Security

The Rise and Fall of Languages in 2012


Programming languages are living phenomena: They're born, the lucky ones that don't die in infancy live sometimes long, fruitful lives, and then inevitably enter a period of decline. Unlike real life, the decline can last many, many years as the presence of large legacy codebases means practiced hands must tend the code for decades. The more popular the language once was, the longer this period of decline will be.

More Insights

White Papers

More >>

Reports

More >>

Webcasts

More >>

The emergence of a new language, however, is almost always tied to needs in a specific sector. For example, Ruby's sudden adoption when Ruby on Rails appeared, and Objective-C's surge, which began in 2007 when the iPhone first shipped. So, understanding the movements up or down — the fluctuations as well as the trends — often delivers valuable insights into the current coding issues.

The most recent processor phenomenon — the transition from the multicore to many-core era — was expected to set the stage for the emergence of functional languages, which fit well with concurrent programming. But most surveys from 2012 still show no major breakthrough. If a functional language does separate from the pack, the leading candidates are Scala and Clojure, with Scala enjoying the greater adoption right now. (Per Ohloh's language figures, which cover all open source projects, and Google trends, which indicate search traffic. On the venerable Tiobe index, which tracks the number of Web pages that mention a given language, Haskell, Erlang, and Scala are effectively tied and ahead of Clojure.)

Language popularity numbers tend to frustrate advocates both for and against certain languages. For years, the fall of Java has been predicted for example. But numbers from the aforementioned three sources suggest otherwise. Java, year over year, is effectively unchanged during the last three years. It is holds either the #1 or #2 (behind C) spot in all major language surveys. This might appear to indicate that the constant complaints about the language and the availability numerous alternatives that run on the JVM (JRuby, Scala, Kotlin, Clojure, Fantom, Gosu, and the rest) have not diminished Java's popularity. However, I think the greater truth is that the language is in decline in its traditional settings, but that the popularity of Android has made up for the shortfall.

The other major mobile language, Objective-C, did well, too: It surged in the Tiobe index (garnering the most growth of any language year over year). On Google trends, it has remained at the same high levels it reached after 2007 (when the first iPhone was launched and mobile development came into its own). However, if Android continues to eat into Apple's worldwide market share, we should expect to see Objective-C stabilize and Java grow.

In general-purpose scripting languages, Python continues to grow slowly, JavaScript and Ruby are treading water, and Perl continues its long decline. According to Google trends, the number of searches for Perl is 19% of what it was in 2004. Its declining role in open-source communities further cements the perception that it's in an irretrievable tailspin. One should always be careful pronouncing a language dead or dying, because rare resurrections have occurred: JavaScript and Objective-C being two stand-out cases. However, Perl is unlikely to see such a new lease on life because of direct competition from Python, which is considerably more popular (whereas Objective-C and JavaScript had no direct equivalents when they came back).

The primary native languages, C and C++, remained effectively the same, rising or falling slightly in the various surveys. The numbers undermine the hope articulated by Microsoft's Herb Sutter that we would see a C++ "renaissance." Google Trends for the last five years shows a steady drop in queries about C++:

Most established languages see a downtrend in Google queries over the last five years, so the decline is not inherently damning — although if a renaissance were afoot, you'd expect to see some upturn. Other indicators of the language (such as changed LOCs in OSS) are, in fact, holding steady. Some even have increased slightly. I think that part of Sutter's hope of renewal was based on C++11 being finalized and the expectation of greater adoption of the language in conjunction with the release of Windows 8. However, I can see nothing that suggests this is occurring. In fact, I can find no evidence that C++ is breaking into new niches at a pace that will affect the language's overall numbers. For that to happen, it would need to emerge as a primary language in one of today's busiest sectors: mobile, or the cloud, or big data. Time will tell, but I feel comfortable projecting that C++ will continue to grow in its traditional niches and will advance at the same rate as those niches grow.

Other quick thoughts: Lua and Tcl, the two languages most used for embedding in C and C++, continue to head in opposite directions. Lua is widely used in gaming and the advent of the new, screamingly fast LuaJIT has made it an attractive option even in performance-sensitive contexts. Tcl meanwhile continues its decline, which has been attributed by insiders to core design issues, slow releases, and poor marketing decisions.

In 2012, we covered several emerging languages we thought had good potential for breaking into the mainstream, notably D, Go, and Dart. While they have not yet entered the premier tier, they are slowly working their way forward and gaining adherents. We will examine more new and interesting languages this year and report on their progress as they vie for developer love.

— Andrew Binstock
Editor in Chief
alb@drdobbs.com
Twitter: platypusguy


Related Reading






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.
 

Video