In a recent Dr. Dobb’s article, Binstock announced the decline of Java and C++:
By all measures, C++ use declined last year, demonstrating that C++11 was not enough to reanimate the language’s fortunes (…) Part of C++’s decline might be due to the emergence of competing native languages.
Mobile programming kept Objective-C advancing and it limited Java’s decline. The latter was surely due to the language falling out of fashion (…) and the pressure exerted by other JVM languages (…)
The article provides no data to back up these “declines”. So let us look at the data ourselves. The article cites Ohloh. What Ohloh seems to do is look at the number of commits per programming language. According to Ohloh, both Java and C++ appear quite stable. They both have about 10% of the share of commits in open source projects, and that has been true for the last 6 years or so (C++ is the orange line while Java is the purple one).
So it is not clear what Binstock meant when he wrote that by all measures, C++ declined.
Finally, the article cites the Tiobe index. That is the only source that does show a decline. Java went from 24% to 17% in the last 5 years whereas C++ went from 15% to about 7%. But let us put this “decline” in perspective. Java is still within 1% of being the most popular language according to Tiobe while C++ is still in fourth place. What is more striking is that Objective C went from 0% to over 10% in a few short years (because of its use on Apple iOS).
But Binford points us to 2013. During that year, C++ went from 9.1% to 7.5%. A significant drop, to be sure. However, a much more significant story is that Python went from 4.2% to 2.4%. Maybe these wild variations should lead to us to question the Tiobe index over short periods of time?
If Android were to drop Java as the default language, we might be able to talk about an actual decline in Java use. However, Google did the opposite of dropping Java: they just upgraded their support for Java. Java is clearly in good shape.
I don’t know what the near future hold for C++. We did get a very strong upgrade that was quickly adopted by all vendors (C++11). However, C++ remains a very difficult language to master. It is not for everyone.
The big, glaring problem with these sorts of analysis: C++ and Java are “industrial” programming languages used in a lot of highly closed-source, proprietary, non-consumer, specialized software development. This development, by definition, is difficult to measure. It’s also precisely where languages like C++ and Java have the most benefit.
It’s just not likely a major piece of banking back-end infrastructure or mission critical controllers at a power plant will be replaced with just any language.
So are these languages on the decline? Maybe but we’ll never really know for certain.
C and C++ together still top any other language?
Java is mostly an “industry” language aiming at controlling the level of work and thus innovation from current coders.
A good idea to maintain control over the salary and the production work of the “doers” as opposed to the “thinkers”.
But generally in situation of Web coding or social interactions on the network, java thinking is more a handicap than a promise to agility of thoughts.
I believe also that Android platforms and others will do less with native applications.
The browser will be the rule.
HTML5 and flat dbs with rest/json connection is the perfect balance.
Even Twitter or Facebook messaging applications are a real pain in the UI comparing to their equivalent on the browser.
IMHO, as we are progressing, light and purposeful tools and languages will continue to keep out java pure industrial devs and managers from a sensible approach to the Web and the Internet.
It’s just not their playground of choice.
@Leonid
I am guessing that if you aggregate C and C++, you get a very popular language.
@thieryl
Java is popular as an enterprise computing language, but it is used more broadly too.
If I am right, at the beginning of 2000 years, we received a massive info Wave, from multi-tier architecture to the coming of the XML sphere through mass celebration of the coming SOAP or .NET, while beginning to distrust the old celebrated java applet which were as celebrated as they had the potential to nuke obsessively whole client browsers on the Web, and ta calmed everybody concerning the applet business.
Who won globally a few years laters? a quite small point of architecture called AJAX (in fact often AJAJ) which deported a great part of the load of the massively connected application to the client. It helped greatly the constitutions of vertical brands on the Web and propelled the so-called “social networks” (whiche weren’t an innovation in content but in form.
That is what we called Web 2.0 at the time (which was in effect an OReilly marketing term). And suddenly all the great java Web vendors, IBM, ORACLE and so on, where no more multi-tiered nor XML, not at all, just imagine, they were suddenly “WEB 2.0 compatible”.
I know the choice of a coding language is a very touchy subject concerning developpers. But future generations will be more pragmatical and atheistic regarding to this choice.
Frankly, what Web developper will decide truly if he uses a php, python, ruby, javascript, perl, framework or micro-framework ? He will adapt anyway.
Regarding the Java, for the future, we have two main uncertainties :
1. A poor year 2013 plagued with quite insurmontable security problems fixes.
2. A great phenomenon now, called Maven, which ironically pointed out that many of java architectures were to hard to maintain, if they weren’t firmly and tightly controlled in one hand.
This is the major testimony of the inescapable pyramidal effect of Java, something really XIXth or XXth century in its spirit. Now Taleb would surely look at this as mainly fragile.
Just compare with the architecture fitted for Instagram by the young blokes who created it :
http://instagram-engineering.tumblr.com/post/13649370142/what-powers-instagram-hundreds-of-instances-dozens-of
The idea is not to confront Java, but to point out that through nearly 20 years this language repeatedly did not produce the show he promised on the Web and the Internet, while very much apreciated in heavy pyramidal firms, with data-centered architecture.
I think Go is eating some share from C++ for backend hacking.
@Vivek
Am I right in thinking that, like C++, Go is almost always used in conjunction with C?
“It is important to note that we changed the TIOBE index algorithm at the end of 2013. The two major changes are: 1. now much more search engines contribute to the TIOBE index based on their Alexa rankings and suitability to process data automatically, 2. in the past the sum of the ratings of the top 50 languages was 100%, now the sum of all languages is 100%. As a result most top languages dropped about 0.5%. “
C++11 and C++14 are very important upgrades to the standard, but still we have to wait some time for full “acceptance”. Maybe the “C++ Renaissance” will happen in next year or two, when we will truly use the new features. A lot of c++ projects are legacy and it is not that easy to switch to newest compiler.