I started with C++ too, and then ended up finding a job writing firmware pretty much all in C. There really hasn’t been anything we’ve run into that’s made us consider switching to C++; being able to (and needing to) have complete control over your memory means you can do some pretty fancy stuff with the tiny amounts of memory on our ASICs.
We’ve been eyeballing switching to rust a little bit, but really only for other applications; the root of our main code base is over 25 years old at this point and a rewrite would take a Herculean effort.
I started in C and switch to C++. It’s easy to think that the latter sort of picked up where the former left off, and that since the advent of C++11, it’s unfathomably further ahead. But C continues to develop and occasionally gets some new feature of its own. One example I can think of is the restrict key word that allows for certain optimizations. Afaik it’s not included in the C++ standard to date, though most compilers support it some non-standard way because of its usefulness. (With Rust, the language design itself obviates the need for such a key word, which is pretty cool.)
Another feature added to C was the ability to initialize a struct with something like FooBarfb= {.foo=1, .bar=2};. I’ve seen modern C code that gives you something close to key word args like in Python using structs. As of C++20, they sort of added this but with the restriction that the named fields have to come in the same order as they were originally defined in the struct, which is a bit annoying.
Over all though, C++ is way ahead of C in almost every respect.
If you want to see something really trippy, though, have a look at all the crazy stuff that’s happened to FORTRAN. Yes, it’s still around and had a major revision in 2018.
I started with c++ so does c really has advantages over c++ ?
And yeah same, Rust seems to be pretty cool too, at some point I’m gonna try it…
I started with C++ too, and then ended up finding a job writing firmware pretty much all in C. There really hasn’t been anything we’ve run into that’s made us consider switching to C++; being able to (and needing to) have complete control over your memory means you can do some pretty fancy stuff with the tiny amounts of memory on our ASICs.
We’ve been eyeballing switching to rust a little bit, but really only for other applications; the root of our main code base is over 25 years old at this point and a rewrite would take a Herculean effort.
I started in C and switch to C++. It’s easy to think that the latter sort of picked up where the former left off, and that since the advent of C++11, it’s unfathomably further ahead. But C continues to develop and occasionally gets some new feature of its own. One example I can think of is the
restrict
key word that allows for certain optimizations. Afaik it’s not included in the C++ standard to date, though most compilers support it some non-standard way because of its usefulness. (With Rust, the language design itself obviates the need for such a key word, which is pretty cool.)Another feature added to C was the ability to initialize a
struct
with something likeFooBar fb = {.foo=1, .bar=2};
. I’ve seen modern C code that gives you something close to key word args like in Python using structs. As of C++20, they sort of added this but with the restriction that the named fields have to come in the same order as they were originally defined in the struct, which is a bit annoying.Over all though, C++ is way ahead of C in almost every respect.
If you want to see something really trippy, though, have a look at all the crazy stuff that’s happened to FORTRAN. Yes, it’s still around and had a major revision in 2018.
C++ is way ahead of C in the same way that a metastasized cancer is way ahead of a benign tumor