
C++ was the fastest growing programming language in Sept according to TIOBE - Jjducu
https://www.techrepublic.com/article/c-is-now-the-fastest-growing-programming-language/
======
in3d
This index has a lot of noise. C++ is only up because Sep 2019 was a low
point. Its popularity is lower than in June 2019 for example. I wouldn't put
much stock in this and I like C++. Does anybody really believe that C actually
fell from 17.15% in Nov 2015 to 6.5% in Aug 2017 and then went back up to
15.45% in Sep 2018? ([https://www.tiobe.com/tiobe-
index/](https://www.tiobe.com/tiobe-index/))

~~~
rumanator
> This index has a lot of noise.

I would go even further and state that TIOBE is deprived of any meaningful
value. It's basically a index that tracks web noise. I mean with TIOBE, C++'s
ranking goes up if someone writes a blog post with a joke that goes "A C++
developer walks into a bar...".

I wouldn't be surprised if this post in HN is contributing to the bump.

TIOBE is what you get from garbage-in.

> I wouldn't put much stock in this and I like C++.

I would bet that C++20 led some bloggers to post random stuff with C++ in it.

------
jasode
I've been playing around with Rust because it's a promising low-level systems
alternative to C++ but the reality is that many projects are enabled more by
_existing libraries & tools_ rather than blank slate clean language syntax.

Some example domains of libraries & tools where C++ is the 1st class client
instead of Rust:

\+ deep learning: NVIDIA CUDA api is C++

\+ HPC High Perfomance Computing: Intel MKL math library is C++

\+ physics engine for video games: Unreal game engine is C++

\+ latest cpu chip : ARM Allinea dev tools for the new Neoverse chips (e.g.
latest AWS Graviton2 servers) is C++

\+ Qt GUI is C++

Because of the extensive C++ ecosystem, you get a non-intuitive situation
where programming the _latest cutting-edge apps_ requires a 35-year-old
language from 1985 instead of the newer Rust language from 2012. I predict
this delta of tools+libraries between C++ and Rust will continue to exist for
10+ years.

One could try to write a bunch of Rust wrappers for all the above C++ SDKs but
I'm not convinced that's a good use of development resources.

~~~
pornel
Rust wrappers for C libraries work great. C++ is a bit harder, but tooling is
getting better.

The fact that Rust has zero-cost FFI and even inlining across LLVM languages
allows you to take existing C/C++ project, and start writing new Rust code on
top of it.

It's like a more performant version of what people do with Python. Nobody says
"oh, I can't use Python, because my device drivers aren't written in Python".

~~~
ncmncm
The better a C++ library is, the less possible it will be to create a Rust
wrapper for it. Good C++ libraries depend on language features that are, and
will always remain, wholly inaccessible from Rust.

Almost every feature of C++ is there to make writing powerful libraries
possible. Many uses of such features become part of the library interface,
because that enables zero-overhead libraries with semantics intricately
integrated into the caller's usage.

Rust has a goal of zero-overhead code, but is not designed to minimize the
overhead of library usage. That was a choice: it makes the language simpler
and easier to learn, but that comes at a cost. You cannot write a Rust library
to do what is routinely done in C++ libraries, and a Rust wrapper cannot
expose those capabilities to Rust code.

------
saberience
The fact that there is no actual methodology published for how this index of
popularity is actually generated makes me highly sceptical of the whole idea.

All Tiobe (who make these ratings) say is: "Popular search engines such as
Google, Bing, Yahoo!, Wikipedia, Amazon, YouTube and Baidu are used to
calculate the ratings."

What does this mean? What algorithm is used? If they expect these ratings to
be taken seriously they should open source the methodology and data-sets and
put their reasonings for why this data plus this algorithm gives a meaningful
result.

~~~
mumblemumble
Basically, they count the number of hits returned by a search for "{language}
programming" across a wide variety of search engines and websites, and rank
the languages according to which one yields the most hits.

It is an interesting metric, but I just can't bring myself to see it as the
measure of popularity that it is presented as. The number of page hits for a
language is a function of many things. Popularity is one. Others include age,
complexity, and how confusing/difficult-to-learn the language or its libraries
are. I'm guessing there's a marketability angle, too - for economic reasons,
there may not be as many codepoints being poured onto languages whose users
are less likely to purchase commercial tools or consulting services.

I can think of no better illustration of this than the 5th, 6th and 7th places
in this month's rankings. Does anyone _really_ believe that JavaScript is only
the 7th most popular programming language these days? Does anyone really
believe that both C# and Visual Basic are more popular than JavaScript? If you
take the TIOBE score as just a measure of popularity, it would seem to suggest
that .NET developers are collectively over 3 times as numerous as JavaScript
developers.

~~~
gamblor956
C# and VB are very heavily used by businesses.

Outside of the tech bubble it's believable that JavaScript isn't as popular.

~~~
mumblemumble
They are, but I don't know many C# and VB developers who aren't also using
JavaScript. Just flogging your enterprise apps together in WinForms isn't so
viable now that people want to be able to use MacBooks at work, too.

~~~
gamblor956
C# and .Net are multi-platform, and have been for at least a decade.

Javascript is useful for websites. And outside of the tech bubble, that's
basically all it's good for.

Yes, you _can_ use Javascript for non-website stuff. But nobody is doing that
because there are many cheaper and more efficient languages out there for
doing all that other stuff.

------
nindalf
TIOBE does not measure anything useful. It is merely the number of Google
results for that term. It's like comparing apples with cars. If Google returns
more pages for cars than apples, does that mean cars are better than apples?
If Google changes it's algorithm to return more results for food, are apples
now better than cars? God no, it's not a meaningful comparison and this is not
a meaningful metric.

TIOBE only exists for the sake of tech illiterate managers who are trying to
make tech decisions beyond their technical know-how. They decide their team
will use X technology and justify it with a link to TIOBE. The people in this
thread should know better than this.

Here are a few examples of it being wildly inaccurate.

* JavaScript is only the 7th most popular language. Not the most popular like it is on Github, Stackoverflow and developer surveys.

* VB ranks higher than a bunch of other widely used languages. How do we interpret this? There are more jobs for VB developers than jobs for Javascript or Swift or Go or Ruby? Or that there's more software developed in VB than these languages?

* C and Java are pretty stable but if you look at historical TIOBE data they experience wild swings in popularity. There's no way that between 2016 and 2018 C lost half it's popularity and then regained it in 2 years. No, C was stable throughout.

If you really want to know how many developers out there are using a certain
language, read the results of a survey where they ask developers that question
- [https://insights.stackoverflow.com/survey/2020#technology-
pr...](https://insights.stackoverflow.com/survey/2020#technology-programming-
scripting-and-markup-languages-all-respondents)

------
datameta
I think this is partly due to the fact that there is marked growth in interest
in embedded systems. MCUs have gotten even cheaper. It's now standard to have
multiple tiers of sleep modes (standby, sleep, deep sleep). Multiple clock
rates are becoming more popular - which enables on-demand heavy inferencing
interspersed among periods of lower processor usage. CMOS sensors increasingly
have on-chip motion detection[1] that uses less energy than full sensing. RF
comms are being managed more efficiently as for most embedded devices it is
the largest use of energy by orders of magnitude. Last but definitely not
least, machine learning at the edge is a nascent application as we realize on-
edge inferencing can avoid the aforementioned energy drain of sending huge
amounts of data to the cloud.

Of course for mission-critical applications C is still the standard for
firmware in the industry, but for many startups providing novel uses of edge
computing and the plethora of hobby projects C++ is a solid choice.

[1]
[https://www.ntu.edu.sg/home/eechenss/Papers/conf-2011-A%20CM...](https://www.ntu.edu.sg/home/eechenss/Papers/conf-2011-A%20CMOS%20Image%20Sensor%20with%20on-
chip%20Motion%20Detection%20and%20Object%20Localization.pdf)

~~~
stbtrax
Having been in emb systems for a decade+: I'm not sure I agree with that. MCU
prices have been relatively stable for the past decade. Sleep modes etc have
existed for a while and are not drawing in new people. VCs are investing less
in HW startups. Most won't invest in ones that don't have recurring revenue.
Imaging sensors are made by a few large players and CMOS on-chip motion is not
that useful since you can do the same thing with PIR. AI accelerators coming
in to emb linux class projects is a new thing but I'm not sure who is using
that besides the big companies at this point. Also, the growth in C++ is
probably in the new standards, which are not well supported for embedded
compilers (emb linux excluded)

~~~
swiley
IMO it's more the flash than the CPU that puts the lower bound on power
consumption with the smaller MCUs once you start sleeping.

>Also, the growth in C++ is probably in the new standards,

This, especially since growth here means growth in queries.

~~~
datameta
> IMO it's more the flash than the CPU that puts the lower bound on power
> consumption with the smaller MCUs once you start sleeping.

Agreed! There are some novel remarks on that in the link under "[1]" in my
reply to the parent comment.

Or see the following digest if paywalled:
[https://community.arm.com/developer/research/b/articles/post...](https://community.arm.com/developer/research/b/articles/posts/m0n0-an-
arm-research-platform-for-n-zero-sensors)

------
logicchains
It's a testament to the hard work of the language designers and committee
members that they're able to grow the language at such a rapid pace. It's
exciting to think that the C++ I write in 5 years' time will probably be
completely different from how I'm writing it now, due to things like meta
classes, ranges, modules, concepts and reflection. Few other languages are
adapting so quickly.

~~~
dgellow
Meta classes in 5 years? You're optimistic :)

For those who don't know, there is a short video from fluentcpp:
[https://www.youtube.com/watch?v=v9eJE2m3CYk](https://www.youtube.com/watch?v=v9eJE2m3CYk)
(and a transcript if you prefer:
[https://www.fluentcpp.com/2018/03/09/c-metaclasses-
proposal-...](https://www.fluentcpp.com/2018/03/09/c-metaclasses-proposal-
less-5-minutes/)).

And the proposal from Herb Sutter is here: [http://www.open-
std.org/jtc1/sc22/wg21/docs/papers/2018/p070...](http://www.open-
std.org/jtc1/sc22/wg21/docs/papers/2018/p0707r3.pdf)

~~~
pjmlp
They better do it, after all that is the reasoning behind the Microsoft
internal politics to kill C++/CX via C++/WinRT.

That now we have an ISO C++17 compliant framework and are supposed to wait for
ISO C++23 reflection until Visual C++ team bothers to provide the same level
of UWP/XAML tooling that C++/CX enjoys since 2012.

Until then, C++/WinRT provides a revivalist experience for those that missed
the opportunity to deal with bare bones IDL file editing alongside ATL.

------
moomin
So, C++20 got final approval this month. Which in turn means a lot of content
generated off the back of it and lots of people looking at it. Which means
you'd expect a TIOBE spike because they base everything off internet search
engine data. Actual numbers of people using it before and after? Probably
exactly the same.

------
elcritch
Which C++? I know of classic C++ (98), then C++11 which I've used, but now
there's C++14, C++17. C++20(?) which all seem to have very different
features... I'm glad C++ is improving, but eh it's as tricky as HTML5/ES5 to
keep up to date on.

~~~
RcouF1uZ4gsC
This is where C++’s fanatical commitment to backwards compatibility really
helps.

You can bring your C++98 code and compile it with the latest compiler in C++20
mode and it should still work.

This allows you to upgrade (and learn) incrementally. You can slowly
incorporate new features into an old code base.

~~~
leetcrew
it's a double edged sword though. after a while, you end up with some parts of
the code written in c++98 style, some that uses odd c++0x extensions, a bunch
of c++11 style code, and then c++14/c++17 features sprinkled around in the
newest code (or sometimes refactored into older paradigms). to be an effective
developer for an older codebase, you need to understand a lot of history
surrounding the feature sets to understand design decisions from the past.

~~~
bluGill
What is your alternative? Do the great rewrite every few years to the latest
fads? Some have done that successfully, but it is expensive to get right and
many more have failed. In general, if it ain't broke don't break it is a great
use of resources, which keeps your company in business (thus you making steady
paycheck and going home to your family at night). Fix/update the parts that
need updating because they change and let the working stuff keep working.

I will give a nod to the other poster who pointed out automatic tools. They
are often worth running on everything, but they only fix a fraction of the
things that a sane developer with 20/20 hindsight starting over would do
differently.

------
Thaxll
TIOBE is also saying that Perl is increasing in popularity, I can't take that
ranking seriously. When I started 12 years ago Perl was pretty much dying and
replaced by Python, so imagine nowdays...

~~~
josefx
It seems to be a stable language at least. Perl 6 was rebranded for being too
different and Perl 7 will be based on Perl 5 with the explicit goal of staying
backwards compatible. Might as well migrate to Perl instead of Python 3, same
amount of scripts to rewrite and test either way.

------
fortran77
CUDA programming is done mainly in C++. Everyone doing GPGPU programming is
using it. Because of all the interest in the latest NVIDIA 30 series, that
will give C++ a boost.

------
dgellow
tjpalmer, the creator behind the Context Free youtube channel, created a tool
named "Languish" that also gives some perspective on C++ trends, see for
example
[https://tjpalmer.github.io/languish/#y=mean&names=c%2B%2B%2C...](https://tjpalmer.github.io/languish/#y=mean&names=c%2B%2B%2Cc%2Cc%23%2Cjava)

Languish is based on GitHub activity instead of online content and searches
(which is what TIOBE does), I find it neat.

He also has a video from February of this year where he presents it in more
details:
[https://www.youtube.com/watch?v=xu0jWgGoDjc](https://www.youtube.com/watch?v=xu0jWgGoDjc).

------
orbifold
I sometimes think that C++ is evaluated unfairly because it has a very
fragmented ecosystem and painful package management. This leads to an enormous
amount of code duplication and stylistic conventions, which further errode how
pleasant it is to reuse code. It also makes it harder for the community to
develop a common “taste”.

~~~
mempko
Depends on the system you are programming for. Most C++ libraries on a debian
system (like ubuntu) are an 'apt install' away from being on your system. And
CMake is now pretty standard for libraries so you can be pretty confident a
library can be just downloaded and installed via cmake.

------
gigatexal
The language is so vast and intractable: how does one start? Should I master C
first (pointers and such?) and then get into C++ with its Turing complete
templating language and such in order to be able to be competent enough to
grok all kinds of code written in C++? Or should I focus on one iteration like
C++11 or 98 or?

~~~
josefx
> Should I master C first (pointers and such?)

That only means that you have to unlearn a lot of bad habits. For example
malloc/free should not be used in c++ code unless you call into a c library
that uses the counterpart. Even the c++ equivalent new/delete pairs should
only be used if it cannot be avoided.

> and then get into C++ with its Turing complete templating language and such
> in order to be able to be competent enough to grok all kinds of code written
> in C++?

I am quite sure I used Java collections before I had a grasp on its generics.
You don't have to be able to implement std::vector<int> to understand that it
is a collection of int. You might have to be told to avoid std::vector<bool>,
but that is more because it is an unholy design failure that should have gone
the way of the trigraph a long time ago .

~~~
gigatexal
Finally some hopeful words. Thanks!

------
The_rationalist
TIOBE is broken, can we stop using it?

------
ksec
May be change the link to [https://www.tiobe.com/tiobe-
index/](https://www.tiobe.com/tiobe-index/) instead?

Ruby Dropped out of Top 10 a while ago. But even Perl is now ranking higher?

------
jug
TIOBE often look very sketchy to me. I refuse to believe Visual Basic is still
more common than Javascript. That is, the old non-.NET edition. Or R more
common than freaking SQL - the lingua franca of data.

------
merb
I'm not sure if "fastest growing" is a good metric at all.. I mean if I invent
a new programming language I would be really fast the fastest growing one...

------
SomeoneFromCA
Because Moore's law has long stopped. Esp. for single thread performance. New
laptop processors are comparable in performance to ancient Core 2 E8400.

~~~
throw51319
[https://cpu.userbenchmark.com/Compare/Intel-
Core2-Duo-E8400-...](https://cpu.userbenchmark.com/Compare/Intel-
Core2-Duo-E8400-vs-Intel-Core-i5-8250U/2720vsm338266)

Mid-upper laptop, lower watt, from like 2018. Looks like 80% faster per core.

[https://cpu.userbenchmark.com/Compare/Intel-
Core2-Duo-E8400-...](https://cpu.userbenchmark.com/Compare/Intel-
Core2-Duo-E8400-vs-AMD-Ryzen-7-4800U/2720vsm1005639)

Latest lower watt Ryzen is like 8x faster in multithreaded apps.

~~~
SomeoneFromCA
I am not arguing that the average laptop processors are faster than e8400,
what I am saying that processors this slow are still produced and widely used.

[https://www.cpubenchmark.net/cpu.php?cpu=Intel+Celeron+N4000...](https://www.cpubenchmark.net/cpu.php?cpu=Intel+Celeron+N4000+%40+1.10GHz&id=3239)

~~~
throw51319
6 watt TDP. That's like super low power and super cheap, from 2018.

So 11x less power, much cheaper.

------
peterlk
I can't help but wonder how much of this is coming from Unreal Engine. Epic
has been using its Fortnihe money to buy up markets, and after the
Mandalorian, people are starting to look at UE much more seriously in the
media industry. And with the Twinmotion acquisition, Epic is slowly creeping
its way into architecture as well.

Their marketplace is exploding and, anecdotally, there are lots of new
adopters.

------
cafard
September is not yet 1/3 over.

------
awinter-py
for all the benefits of rust at a language level, the package ecosystem is a
bigger component of its success IMO. 'C++ with enums and a working package
manager' is rust's value prop for some teams.

the borrow checker is cool but not always an easy person to work with

if cpp20 adds a working module system and gets the design right (unlike golang
the first 5 times), half of rust's advantage evaporates

------
fithisux
Yes it took sometime for the other PLs to mature their features to the point
when C++ can start copy / pasting. Good luck finding any C++ compiler that
implements latest fetures.

On the other hand D, Nim and Rust are cutting edge.

~~~
otabdeveloper4
> Good luck finding any C++ compiler that implements latest fetures.

Googling finds me something called 'gcc' and 'clang'. Really weird and
esoteric stuff, I must be a googling wizard.

~~~
fithisux
Forgot to mention "in a corporate environment"

