Channels ▼
RSS

Open Source

The Rise And Fall of Languages in 2013


On the surface, 2013 appeared to be a quiet year in terms of language popularity and adoption. The reality, however, suggest considerable activity. As I usually do in January, I analyze several language metrics from multiple sources: Ohloh.net, which measures activity across almost 600,000 open-source projects, Google Trends, and the much maligned Tiobe index. At first blush, there appears to be no change in this year's figures. The latter index, for example, shows that the top eight spots (starting at #1: C, Java, Objective-C, C++, C#, PHP, Visual Basic, and Python, respectively) were exactly the same as last year. But looking deeper, we see…

JavaScript took the ninth slot, which was vacated by Perl, when it dropped four places. The fall of Perl has been going on for a long time and seems now to be accelerating. Despite great affection for Perl, there is no doubt that Python is safely the top general-purpose scripting language. Not only is Python blessed with a large and active community, but this community has by its sheer size and constant contribution to open source overcome the last notable advantage Perl enjoyed: CPAN — the rich trove of modules. The following chart, courtesy of Ohloh, shows the number of projects with activity per month for the two languages (Python in purple, Perl in khaki).

Python Projects
Figure 1: Python projects active in a given month vs. Perl for 590,000 open source projects.

While Python crossed over Perl some six years ago, it took several more years for its libraries to catch up with CPAN. I believe it's fair to say that point has passed, or if it has not, that it's close enough that CPAN's differentiators are so small as to confer no particular competitive advantage to Perl.

By all measures, C++ use declined last year, demonstrating that C++11 was not enough to reanimate the language's fortunes, despite the significant benefits it provides. I have previously opined that Microsoft's contention of a return to native languages being led by C++ was unsupported by evidence. It is now clearly contradicted by the evidence.

Part of C++'s decline might be due to the emergence of competing native languages. D, designed by Dr. Dobb's blogger Walter Bright, made a surprising leap in to 18th position on Tiobe. The adoption of D at Facebook for new projects might be part of the explanation. But D is by no means alone. Google's Go, which we covered in a five-part tutorial in 2012, has been quickly gaining traction as shown in Figure 2.

Open Source Commits for Go
Figure 2: Monthly open-source commits for Go.

While D was designed as a replacement for C++, and Go for C, not everyone is enamored of Google's approach in Go. The disenchanted are increasingly finding comfort in Mozilla's Rust and Nimrod (a language we'll cover later this month in Dr. Dobb's). Rust is widely viewed as a remarkably elegant language, but adoption is hindered by the changes made in each new release. I expect activity will pick up when the language reaches 1.0 (likely this year). Nimrod, in counterpoint, is stable and presents a most original design that straddles Pascal and Python and compiles to C code or JavaScript. As you can see, there are a lot of potential challengers to C++, although only D, at present, can be credibly said to be eating mindshare. However, I expect that the tepid numbers for C++ derive more from its minor presence in the mobile space, which is unarguably the center of new development.

Mobile programming kept Objective-C advancing and it limited Java's decline. The latter was surely due to the language falling out of fashion, especially among hobbyists, and the pressure exerted by other JVM languages, notably Groovy, JRuby, Scala, and Clojure. JavaScript continued surging forward, driven by its use both in mobile products and Web app development.

If I were to guess the next language to get a bump up, I would vote for C#. It has steadily eaten away almost all of VB.NET's turf and, with the recent work by Xamarin, C# might well become the .NET developer's language of choice for mobile. We'll certainly see.

Until then, happy coding in the new year!

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


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.
 

Video