![](/static/253f0d9b/assets/icons/icon-96x96.png)
![](https://sh.itjust.works/pictrs/image/bae905b8-0357-4d8f-aeee-8c3227e76c8c.png)
I suppose it is a kind of survival training? One of my bandmates who’s served came up after. “So here’s the deal. You watch what everyone else is eating. If they’re meticulously avoiding the peach cobbler or whatever it is, you F’ing stay away from that S if you know what’s good for you!”
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.