Unless you're going to be doing something that specifically requires C++ (some game engine related code comes to mind), go with Rust. Most real-world code (by number of codes and lines of code) is something else than C/C++ nowadays, just because of developer velocity and a larger hiring pool.
Yes, you can get that last cycle of power from a piece of hardware by going with C or C++, but on the other hand finding people who can do that is time-consuming and expensive. And in many cases eventually not worth it.
"C++" is such a big concept toi grasp fully, that I don't see the point of studying it unless you're getting paid for it.
> Most real-world code (by number of codes and lines of code) is something else than C/C++ nowadays, just because of developer velocity and a larger hiring pool.
This is simply not true. Examples of major software that is being actively developed:
- Lots of compilers/runtimes (gcc, LLVM (which Rust builds upon), Java/JDK/JVM, Swift, node.js)
- All major browsers and browser engines (Chrome/Chromium, Firefox, WebKit) and thus Electorn
- Lots of rich client applications using either some Windows API, or something like Qt, or Electron (JS + C++)
- Major game engines such as Unreal, Frostbite, CryEngine
- Major OS'es graphics API build upon C++: Microsoft's Direct3D, Apple's Metal
And this is completely ignoring the embedded world, where C++ competes at least at some higher level with C.
The amount of people actually _making_ compilers and runtimes is multiple orders of magnitude smaller than the people using them.
Same with browser engines and game engines. For every coder doing the actual engine, there are a hundred others just using the engine, not touching C++.
You did list a pretty substantial portion of the segments where C++ is a valid choice and in many cases (along with C) the only option.
It's not like they are equivalent. I'd rather stop programming (or any kind of computer science related career) rather than take a job doing business Java or writing game logic in Lua or C#.
> "C++" is such a big concept toi grasp fully, that I don't see the point of studying it unless you're getting paid for it.
Not really necessary to grasp the entirety of the language to use it effectively, I dabble in C++ here and there and usually treat it as a fancy C just using stuff like smart pointers, strings and vectors. Even learned some C++17 stuff which made what I was trying to do a lot simpler though I can’t remember what I was up to, think it was some boost lib I was already using that got promoted or std::variant shenanigans with my asdl generator — definitely yaks were being shorn I can say for sure.
Some employers are actually far-sighted enough to spend money training their employees.
So e.g. you hire a bunch of fresh graduates who've learned some programming maybe Java and Python, and maybe have other expertise you value (e.g. maybe they're aerospace engineers and you write control software for jet engines) and you spend money hiring somebody capable to stand at the front and teach them how to write C++. It's their job to learn this, so you can do it pretty intensively, e.g. lecture slot / exercises / break / repeat.
C++ is a big sprawling language, but you can make a good start on them in two weeks.
You've presumably worked somewhere with at least some onboarding or spin-up time. Somewhere you weren't employee #1 and responsible for buying your own stationery and cleaning the toilet ? What did you do on day one? Fire training? How to use the CI system? Anti-bribery? Getting your photo taken for an ID badge? Maybe some "easy" first tasks just to learn your way around the systems?
If you have a job where you turn up on day one and are just as productive as a long haul employee, I have terrible news for you - you are the most replaceable person in your organisation and you are going to get fired.
Programming languages are like actual languages, after you know the first two or three, the fourth one isn't that much of a hassle (there are exceptions of course).
I didn't know crap about C# when I started my current job, but I did have a decade of Java under my belt. Took me about a day to figure out the basics. Ifs and switches and functions and classes are the same everywhere.
If I would've had to study something like Haskell or Scheme, it would've taken a bit longer.
Yes, you can get that last cycle of power from a piece of hardware by going with C or C++, but on the other hand finding people who can do that is time-consuming and expensive. And in many cases eventually not worth it.
"C++" is such a big concept toi grasp fully, that I don't see the point of studying it unless you're getting paid for it.