Most Popular Programming Languages: C++ Knocks Python Out of Top Three in New Study (techrepublic.com)
C++ has knocked machine-learning favorite Python out of the top 3 in the TIOBE Index of popular programming languages. From a report: It marks a reversal of fortune for C++, which, after years of occupying third place in the index, was pushed down to fourth place by Python in September last year. First and second place in the list remain unchanged, with Java in pole position and C at number two. The TIOBE Index attempts to estimate the popularity of languages worldwide based on results from major search engines. The index is sometimes criticized for being a rather blunt measure, likely to be influenced by a range of factors beyond a language's popularity, but its rankings are broadly in line with others, with a similar mix of languages albeit arranged in a different order.
In an analysis alongside the latest figures, TIOBE attributes the comeback of C++ to a surge in its popularity, rather than a fall in the use of Python. "This is certainly not because Python is in decline: Python is scoring all time highs almost every month. It is just that C++ is also getting more and more popular," it writes. The report credits this growing interest in C++ to C++11, the version of the language released in 2011 that TIOBE said made C++ "much simpler, safer and more expressive."
In an analysis alongside the latest figures, TIOBE attributes the comeback of C++ to a surge in its popularity, rather than a fall in the use of Python. "This is certainly not because Python is in decline: Python is scoring all time highs almost every month. It is just that C++ is also getting more and more popular," it writes. The report credits this growing interest in C++ to C++11, the version of the language released in 2011 that TIOBE said made C++ "much simpler, safer and more expressive."
Pick any two.
Besides that, their whole methodology is crap, as has been noted many times over: if there are plenty of messages asking for help on stackoverflow, maybe it's because users are struggling with a language, not because it's 'popular'. A language that is very easy to learn on your own wouldn't have any messages now would it ?
Non-Linux Penguins ?
Anyone know what programming language (or other tool) is used to process the data and generate the TIOBE Index?
It must have been something you assimilated. . . .
Lots of great improvements since C++11. Keeps on getting better!
I just wish the syntax would look a little better for some of these improvements.
SQL is not a "programming language"
While you can get code sizes in line with older C++ apps, at least in my experience compile times are taking a nose dive with each new revision of the language. C++98 between gcc 2.95 and 4.2 is noticable. 4.7 is slow, and everything since 4.8 is even worse. Lots of nice new eye candy and better error messages for sure, but if you're someone who has to compile a lot, particular in the process of trying to port older code with too many minor errors due to changes in headers, kernel APIs, function prototypes, etc between versions of the code, it take up dramatically more time waiting on it to compile or error out. Sometimes all that extra code is worth it, but many times it is not. Furthermore it now limits you to compiling on ever increasingly bigger systems because compiling a C++ program often requires a half to full gig of ram to compile an individual source file, and in some cases multiple gigabytes of RAM to link, excluding link time optimization!
Seriously, I'm all for improvements in software, but maintainability, compile speed, memory footprint, etc apply as well, and modern software development is falling flat on all these fronts. Maybe it is time for some of these developers to be forced to build on something like a Raspberry Pi to remind them that not everything is an 8-20 core processor with 16+ gigabytes of RAM, and that the segmentation of your code and the optimizations you make on those smaller platforms will also translate into faster compiles and better performance on the big systems, which will translate into less time compiling and faster application operation when you get it feature complete or in publishable format.
I was surprised to see Assembly in the top 10. Perhaps I shouldn't be, as I'm not in the world which uses Assembly, and I haven't even played with it since college back in the day.
Forgive my ignorance here, but why the popularity of Assembly? It's impressive to say the least, but I'm unfamiliar with the world that lives in that language.
Happy Monday!
I was curious if it was just x86 assembly, or all assembly across all processors (like ARM)?
Some curious changes on that list...
"There is more worth loving than we have strength to love." - Brian Jay Stanley
...and you oughtn't be anywhere near the top. Just my absolutely accurate and precise opinion.
Stroustrup should have stopped in 1998 adding crap - maybe even back in 1992; I don't use any of the features that were added after that. Unfortunately, many many C++ coders do and it looks like a completely different language.
C++ has become this horribly over complicated language that produces bloated runtimes.
Languages people need the most help with because it's based on search engine queries. This could just as easily mean rather than most popular, it's a list of the language most cursed by those forced to deal with them.
That point alone makes me very much doubt the reliability of the data I know a lot of .NET developers, with only 1%2% still using VB.NET. Also - Javascript, something that is used by pretty much every single website, is # 7?
Could we just have namespaces in C? Maybe reference types?
Or pushing the envelope, how about a simple single-inheritance class model? It seems like every project I've ever worked on has jumped through hoops creating a simplistic "object" model.
I've already been down this road once (or twice). We used C++ with no boost and limited to a very small set of features (well documented). But then along came someone who just wanted to use one little thing in boost. Or some other thing no on the list.
And then the long slide down the slippery slope began.
This article is a video rehash of a 6-month-old yearly survey.
What you're looking for is here: https://www.tiobe.com/tiobe-in...
As a 15 year .NET veteran I call bullshit on VB.NET being so popular. Nobody uses VB.NET and .NET developers laugh at you if you do.
What TIOBE measures: how puzzling a language is to how many Stackoverflow members. So C++ can win, even if it used by fewer Stackoverflow members, because it is more puzzling.
Of course, in order to have any users at all, a language must make itself useful, which C++ does by a variety of metrics, but most notably efficiency. If you care about getting the most bang for your buck out of your expensive, power hungry data center, then you hire more expensive developers and do the job in C++. If you care about lowest possible latency in a financial trading platform, again you do the job in C++. Go ahead, try it in Python. You can do it, it has been done, but you will get eaten alive in the trading jungle.
When all you have is a hammer, every problem starts to look like a thumb.
C++ is like dogshit. It's got bits of this, bits of that, and is mostly indigestible. There's more similarity between C and "classic" C++ than there is between "Modern C++" and the classic.Using C++ without the outdated and buggy Standard Type Library - or some equivalent - is useless. It is a fucking awful language. Given an input 1E7FUBAR what do you suppose int X; cin >> X; gets you? Wouldn't you expect it to throw an error? Nope. And God help you if you typed cin X;
C++ is like one of those 20 pound (10 kg) Swiss Army knives. You can do almost anything with it, except use it.
Career advice: Ignore the drip drip of new rising star languages and the drivel of proponent's blog entries.
There are jobs out there for general purpose languages only occupying a niche of the total number of programming jobs. Becoming an expert in one of those narrowly used in paid jobs languages is a hobby and not a career move.
Case in point: Search for jobs where Ruby is the main programming language versus Cobol jobs. Cobol's been on the skids since the middle 1980s and has more jobs than many of the once over hyped programming languages of the 90s and 2000s.
Blogs, magazines, podcasts, etc. have space to fill and it's much easier to cover the new language, library or tool of the month versus giving in depth information on a well established technology. It's why many sites gravitate to a list of links to what essentially are press releases or blog entries promoting the author's own project.
The Slashdot title with "C++ Knocks Python Out of Top Three in New Study" seems to suggest there was a year when Python was in the top 3 in the TIOBE. But I have am having trouble finding the year that it was in the top three to be knocked down from. In 2018 it was in 4th place so it wasn't knocked down in position between 2018 and 2019. The TIOBE very long term history shows Python being in 7th position back in 2014 but never shows a year that was higher than 4th.
Really, the Slashdot title does not seem to be a good reflection of Python status on the TIOBE at all. I find it more interesting that while C++ held it's 3rd position on the index, it only gained 1.62% from 2018 to 2019. Python on the other hand gained 2.36%. If that trend was to continue between now and 2020, Python could possibly reach 10.5% rating on the TIOBE in 2020 while C++ would only potentially reach 10.4% which would mean it is C++ that is in line to be knocked down from the top three by 2020.
How Slashdot can see Python gaining +2.36% and refer to that as being knocked out in a new study just does not seem logical to me. No other language on the TOIBE top 50 for April 2019 had gained as great as Python had on the index rating.
Can anyone explain the title of this post to me??
LOL, C++11 has made said made C++ "much simpler, safer and more expressive." That's got to be one of the most bizarre statements I've ever read.
More like template meta-programming has increased the language complexity by several orders of magnitude. At least you could step through pre-templatized C++ and understand control flow. With these template meta-programming, the language is completely and utterly incomprehensible, they've truly made it a "write only" language. Case in point, take a look at Eigen.
No, C++ just needs to die, the standards committee just can't seem to figure out how to simply the language, and please the meta programming language geeks. C++ needs to die and get replaced by something like Go or Rust.
C++'s days are numbered.
https://en.wikipedia.org/wiki/...
"The designers were primarily motivated by their shared dislike of C++."
References:
"Dr. Dobb's: Interview with Ken Thompson": http://www.drdobbs.com/open-so...
"Less is exponentially more": http://commandcenter.blogspot....
""The Evolution of Go": https://talks.golang.org/2015/...
And I'm not the only one who agrees.
"Why ESR Hates C++, Respects Java, and Thinks Go (But Not Rust) Will Replace C"
https://slashdot.org/story/334...
Any language measure that doesn't put Swift at the top is useless. Its the best language and used by all the top developers in the world.
The only reason C++ is ranked is because it compiles C because it is C.
------------------ END OF STORY ------------------
Memory management seems to be the thing that scares the hell out of noobies learning C++. This is a lot less daunting if you understand how the runtime you are targeting manages heap space. Don't know/care what the difference is between stack and heap storage spaces? Keep on hacking Python scripts, kid. There's plenty of H1-Bs out there that will code circles around you.
No, I don't have time to be your CS prof while doing your job and my own at the same time.
Not a real interview, if that wasn't clear.
I've seen C++ save companies because the code was too complex for structured languages.
As for reuse - we reused all sorts of common classes. Fixes were shared across 20 different programs and helped the entire software company.
We had programming standards which didn't allow overloading operators unless is was so intuitively clear that it wouldn't be confusing.
We used inheritance, but not multiple inheritance. Coding standards.
Coding standards help new programmers learn defensive coding. C is 100% offensive coding, but so is Java, Javascript, Python ... I'm offended every time I'm forced to deal with code in those languages.
At this point in my career, I'd coded in over 40 languages and consider myself expert in 3.
Rust and C# need to die, die, die. If you suck as a programmer, stick with php or Python. Do the world a favor. We expect those programs to crash, fail, leak, and be slow.
"You would have to remove things from it, not just keep adding every paradigm from every other language."
That's not the problem, in my opinion. It's good to have all the possibilities, even if they are rarely useful.
One of the problems with C++ is that NONE of the rarely useful features are documented well. The rarely useful features should be documented with warnings about the messes that are created when they are used in a way not intended.
I have never seen excellent documentation of ANY features of C++. People who design computer languages are apparently generally not good at professionally careful and helpful communication.
"... all assembly across all processors..."
Sometimes Assembly language is the simplest, most easily understood way of coding something.
Mod parent up. Excellent point:
"The C optimizer of course has an advantage -- no one has to maintain the code it generates so it can be very obtuse w/o causing problems whereas a human writing assembly code using the same approaches would usually be rightfully castigated for writing unmaintainable code."
That scumbag of indicies. All it measures is how often the term "programming +language" appears in Google.
ISO-C is pretty well documented.
It's when you use things that are "compiler defined" that things gets iffy since you then have to rely on the compiler documentation.
Also, many "languages" aren't really languages but rather a compiler or interpreter that does something and whatever it does is called the "language".
Anyone who tries to write another compiler for the language is just looking for problems because every bug in the original interpreter needs to be recreated for compatibility.
You're addressing inherent simplicity: simplicity that inheres in the object itself. Inherent simplicity is overrated.
Not so simple: maintaining your own fork of a major development language, because a recent major release— in pursuit of round-fingered, bent-legged enlightenment—gored your ox on a multi-million-line code base.
Our quest for simplicity is quite primal. It's often just a power move to demonstrate that you occupy the summit of the power hierarchy. Because your vaunted simplicity usually amounts to making something ugly (but very, very real) into somebody else's ugly (and very, very soul-destroying) daily slogathon.
The C++ culture is what you get when there's an iron-clad social contract that Peter does not rob Paul.
The direct consequence of this is that nobody can stand on the summit and gloat about their immensely refined slickitude (to hell with the peons working the actual trenches).
As has been remarked once or twice in the history of Slashdot, C++ lacks any semblance of pointy summit of slickitude; no—father forgive me, for I have sinned—C++ lacks any possibility of a semblance of so much as a stubby, manicured outcropping of soapbox sainthood.
The only other language I know with a similar value system is Perl 6.
Evan Miller: A Review of Perl 6 — 13 August 2017
The difference between C++98 and C++11 is roughly the same thirteen years that the Perl 6 development effort went almost entirely offline. Perl 6 probably shaved off no end of warts to achieve its grand synthesis of becoming all things to all people (forsaking mainly performance, though this is prudently localized—in many cases—to quality of implementation). Meanwhile, C++ dragged its crufty ass through tens of millions of battle-hardened hours in the deep trenches. Will Perl 6 ever achieve the quality of implementation required to obtain a community of critical mass, to justify the immense implementation burden? This remains hard to judge.
I've long taken a Band of Brothers attitude toward C++.
Yes, you can shoot yourself in the foot, if your team is some random unit of random grunts.
But if your team is elite, and cares about being elite, you just don't shoot yourself in the foot on a daily basis, and you don't shoot your teammates in the foot hardly ever, and you go into the worst battles with the best people, and mostly you come back out alive. With C++, there's no such thing as bad weather, there's only bad clothing. The clothing is your job. Other languages do have bad weather—tasks for which the language is fundamentally unsuited—and then there's no clothing at all that will save you, and then you're fucked.
If the guy you're sitting beside has recently graduated from a puppy mill, and has no respect for the game, you probably want to steer clear of C++ with a vengeance of extreme scorn.
If the guy you're sitting beside has recently graduated from an ivory tower—with a raging case of L
Get a draft C++ specification. The final versions are ISO standards and not available for free. But drafts are good enough.
FAQs:
"Q: Why is the standard hard to read? I'm having trouble learning C++ from reading it.
"The standard is not intended to teach how to use C++. Rather, it is an international treaty -- a formal, legal, and sometimes mind-numbingly detailed technical document intended primarily for people writing C++ compilers and standard library implementations.
"Fortunately, there are lots of good books that do teach how to use C++! See these recommendations as a starting point for high-quality tutorial and reference information about how to learn and use C++."
Free book about C++ (PDF file): A Tour of C++ by Bjarne Stroustrup.
I doubt the problems are solved by that book. But I haven't yet investigated.
The C++ standard is UTTER GARBAGE, says ISO CPP
You're a fuckwit says you.
I mean that statement has about as much logic as your post.
SJW n. One who posts facts.
Quoting from ISO CPP: "... sometimes mind-numbingly detailed technical document..." I translated "mind-numbingly" to "utter garbage", an exaggeration, I agree.
Poor technology documentation is a HUGE problem. "Mind-numbingly" is just one of the problems with poor documentation. Bad documentation discourages people from entering a technical field. Poor documentation sometimes makes fixing coding errors FAR more difficult.
Also, personal attacks are unhealthy for the attacker.
I translated "mind-numbingly" to "utter garbage", an exaggeration, I agree.
So you translated one thing to something completely different. It would make sense if the ISO's job was to entertain. But it's not. Boring/exciting is not within the remit of the ISO and frankly is not an issue for standards.
Poor technology documentation is a HUGE problem. "Mind-numbingly" is just one of the problems with poor documentation.
Lack of precision for for a standard is a bigger problem then being boring. Much bigger.
You're lumping in user guides, getting started tutorials with standards, which is frankly facile. The goal of a standard is not to entertain, it's so that two gery techincal groups can without talking to each other make two implementations of something which behave in a consistent manner.
A standards documentation is needed so that I can determine if struct {int a;b;} a; &(a.a)+1; is valid.
Also, personal attacks are unhealthy for the attacker.
So why did you do it then? You started off on the attack about a group of people some of whom I've worked with.
SJW n. One who posts facts.