Channels ▼
RSS

JVM Languages

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.
 

Comments:

ubm_techweb_disqus_sso_-fbb41ea8d7baaf65489b6ec5c4425c52
2014-01-24T01:48:36

The Python community can be prickly as well if you don't do it in the "Pythonic Way".


Permalink
ubm_techweb_disqus_sso_-fbb41ea8d7baaf65489b6ec5c4425c52
2014-01-24T01:47:37

Why will speed be needed more now than in the past?


Permalink
ubm_techweb_disqus_sso_-93821031f8f915d90048b8eef3708a20
2014-01-14T02:50:11

Would JavaScript rank number nine without the existence and growth of use of server-side Node.js? Node.js has enabled JavaScript to appear on more devices as the front end for a mobile application that's running efficiently, that is to say, not in JavaScript, on the back end. And where does Node.js show up in your survey. Perhaps it doesn't at all.


Permalink
ubm_techweb_disqus_sso_-e4902214a7558e5ec218cb47adc6f26c
2014-01-10T03:16:38

I think that C++ will show an increase in usage when the developers start to use concurrency features of C++ 11 standard and libraries built on them, like Microsoft Concurrency Runtime. Beside, we are entering the state when speed is needed more and more. C++, with appropriate third party libraries will give us performance and productivity.


Permalink
ubm_techweb_disqus_sso_-7d0d785ab94da174a5c7b76014e79288
2014-01-09T19:45:26

"the last notable advantage Perl enjoyed: CPAN"

Surely the prickly user community remains as a notable advantage in Perl's favor.


Permalink
AndrewBinstock
2014-01-08T22:18:22

I did read your blog post. You don't understand when percentages can and cannot be compared. You wrote: "There's no conclusion you can make from comparing percentages with different denominators."
Percentages from different sample sizes can be usefully and accurately compared. What exactly do you think pollsters do?
You are suggesting I can't compare the Democrat margin of victory in the 2008 and 2012 presidential elections b/c the total number of voters was different? Your argument makes no sense whatsoever.
Please stop throwing around wild terms like "unethical" when you don't understand the fundamental arithmetic.


Permalink
ubm_techweb_disqus_sso_-cf4d10934959f096d01094193478aa74
2014-01-08T21:53:51

I understand that you don't have the absolute numbers and didn't read the link that I posted. There's no conclusion you can make from comparing percentages with different denominators. I know which point you are trying to make, but the numbers you show cannot support it.

Furthermore, you are basing your arguments on Ohloh's numbers from the projects they track. They don't track everything and misclassify quite a bit, which I know by looking at their incomplete record of my own contributions.

It borders on the unethical to continue to push conclusions for which you don't have the data and for which you know the data are incomplete, even if you are accidentally right.


Permalink
AndrewBinstock
2014-01-08T20:39:40

You don't understand my point or, actually, what the numbers mean. If Perl's % is shrinking (as it has been for years), then it means that Perl's role in programming is declining--regardless of whether the programming universe is expanding or shrinking.

The fact that it might be growing in absolute numbers is immaterial if that growth is significantly slower than the growth of the programming ecosystem.


Permalink
ubm_techweb_disqus_sso_-cf4d10934959f096d01094193478aa74
2014-01-08T17:30:32

The problem with these analyses is that you can't compare year to year percentages since there's a moving denominator. Although the percentage of everything that is Perl can falling, Perl itself is growing. Although Python might look like it is gaining, that doesn't say thing in relationship to anything else.

It's a serious lack of numeric literacy that allows people to accept these irrelevant plots.

I show how this works (and doesn't work) in "Don't Compare Percentages" http://use.perl.org/use.perl.o...

I don't particularly care if Perl or Python or something else is "winning". There's space for everything to flourish. However, if we are going to talk about trends, we have to do the math right, and these analyses don't.


Permalink
ubm_techweb_disqus_sso_-12013654d015384efe1eab46e654cc19
2014-01-08T05:48:48

Will wait for the article on Nimrod!, can't wait to try it.


Permalink
ubm_techweb_disqus_sso_-6d6ce254ed0d97760f265139f5e4fb9c
2014-01-08T04:02:54

The phrase "training wheels" is a bit insulting. C++ has deep and subtle complexity which a few find quite useful but most find pointlessly confusing. Java's relative simplicity is an advantage for the vast bulk of work.

Simple is better then complex.


Permalink
ubm_techweb_disqus_sso_-ff6fe7ac6b446db67dd665e3c8e52316
2014-01-07T21:00:26

Like standards, the nice thing about languages (both computer and human) is that there are so many! Choose the right one for the job at hand. I do most of my coding in C++, kernel work in C, and web development in PhP. I've used professionally many other languages over the years including Java, Cobol, Dibol, Assembler (for a number of chip architectures), Basic, VB, C#, SoftTalk, Snobol, Prolog, and at least several others, including many scripting languages. I have even written my own scripting interpreters in the deep dark past when there wasn't anything suitable for what I needed to do. I'd probably use Python for that now.

All that aside, my preferred low-level language is C++, simply because when I need to I can do stuff more simply in C without breaking anything, like low-level device control. I consider Java to be C++ with training wheels, and PhP to be pseudo-C++ with embedded HTML capabilities; however the differences between C++ and PhP will often bite you in the nether regions! :-)

For mobile device programming these days, Java and it's pushy cousin Dalvik, seem to be pretty popular, but mostly because the device/OS manufacturers are pushing it. Then there are WebApps - another approach for building mobile apps that is gathering steam.

I guess the point that I am trying to make is that any professional developer these days needs to be polyglot - no one language will serve all purposes.


Permalink

Video