In his latest post, Dustin Marx points us to an article by Paul Krill which was originally posted on InfoWorld, titled Survey: Java losing popularity among developers. The article is subtitled: "If recent trends continue, C could supplant Java as the most popular programming language by next month."

Being a student of numbers and graphs and statistics and mathematical modeling of all types of data (see, for example, my 1999 Stock Market Modeling Techniques paper), I found this title and subtitle both provocative and interesting. I wasn't surprised to find that the base data for the article was the latest TIOBE Programming Community Index (October 2011). Their October headline is "Java is losing ground despite its new version 7 release." And the first sentence is:

Java lost almost 1% of its popularity in September. If this trend continues, C will be number one again next month.

Huh? So, are they saying that 1% of global Java developers were suddenly laid off in October? That seems unlikely! What are we really talking about here? Let's take a look at the TIOBE October 2011 graph:

The top line (red) is Java; the second line (green) is C. The source of the headlines is the convergence of the red and green lines at the top of the very right edge of the plot.

This graph does not show the percent of developers using a particular language (how could you count them?); rather, it presents a substitute metric developed by the TIOBE team. TIOBE welcomes you to see the definition by which their index is constructed.

I've followed the TIOBE index for some years, and I've used it professionally in proposing candidate languages for customers who wanted to translate old software into a modern language. They're trying to provide a metric based on publicly available data. I commend their effort. Of course, there is a rather significant error bar associated with the measures if you try to project them to "this represents how much development occured this month using this particular language."

So, you could look at that plot and say that Java is overall in a slow decline; and C in 2001 was below Java, and has declined, but its decline is at a slower pace, especially recently. You could even say C is on the rise since its low in late 2007, while Java is declining since then.

Back in the days when I analyzed the stock market, I was interested in analytical methods like Bollinger Bands:

http://www.bollingerbands.com/images/bb.jpg



John Bollinger's analysis is related to signal and noise. Most of my programming experience has involved scientific measurement, and measurement of data that has fluctuational patterns that are fairly unpredictable; so, I found Bollinger Bands interesting.

 

What does this have to do with whether Java is "losing popularity" among developers? Well, it perhaps at minimum suggests that one month's data point compared to the previous month's data point may not represent actual significant change in a language'sreal "popularity" or usage. Bollinger Bands are useful because they demonstrate that short-term changes are natural, but at the minute level (say, month-to-month with respect to programming languages) they're not all that relevant in predicting the future long-term. Lots of human-invented systems (not just the stock market) likely follow this pattern, imo based on my experience (and I'm old!).

Are Java and C becoming the enduring platform languages?

So, what if it's true that Java and C are becoming co-leaders with respect to overall usage? Isn't C so old, so un-cool? So, might it be true that Java circa 1.4 is becoming a fundamentally trusted language distribution like C? Is that a bad thing? But then, we also have Java 7, and ahead, prepared for 16-core tablet/phones, Java 8. Is all this such a bad thing?

And wait a minute? Don't percentages have a denomiator?

There's one other thing about a statement that Java is "losing popularity" among developers. The TIOBE index is a "Normalized fraction of total hits" in percent. So, it's showing us how many hits searches on specific languages return, then normalizing those values to 100%. OK... so, what we don't know is the denominator, the total number of hits for all the languages. How has that changed in the decade shown on the graph above? My guess is that it's grown incredibly. If so, then the actual number of hits for Java (and C, and all the other languages that have grown or held their own in the past decade) has grown immensely.

Does this mean we can be certain there are more Java developers than there were a decade ago? Well, it could just reflect the immense changes in the Internet and in search engines in the past decade. But, I'll be stunned if someone can show me evidence that the number of developers making their living coding Java today isn't millions more than that same number 10 years ago. If anyone disagrees with me, please tell me why in a comment below!

Conclusion: I'm happy about the Java line

So, in my view, watching the TIOBE index is indeed interesting, and useful. I use their index in advising my customers. When I look at the October 2011 plot, I think: if the language you've bet your career on is Java or C, even if you're just starting out, you've got nothing to worry about (as long as you're willing to work your butt off and produce, of course). My guess is the market for both skill sets is currently expanding immensely year by year.

That's the message the TIOBE index October 2011 plot sends to me.


java.net Weblogs

Since my last blog post, quite a few people have posted interesting new java.net blogs:


Poll

Our current java.net poll asks What interests you about JavaFX 2.0 and its future?. Voting will be open until Friday, October 28.


Articles

Our latest java.net article is Sanjay Dasgupta's VisualLangLab - Grammar without Tears.


Java News

Here are the stories we've recently featured in our Java news section:


Spotlights

Our latest java.net Spotlight is Java Spotlight Episode 52: Cameron Purdy, Vice President of Development at Oracle, on JavaEE :

The Executive Committees of the JCP have been busy for the past several months on some significant revisions to the Process. These changes have been specified through JSR 348: Towards a new version of the Java Community Process...

Subscriptions and Archives: You can subscribe to this blog using the java.net Editor's Blog Feed. You can also subscribe to the Java Today RSS feedand the java.net blogs feed. You can find historical archives of what has appeared the front page of java.net in the java.net home page archive.

-- Kevin Farnham
Twitter: @kevin_farnham