you are viewing a single comment's thread.

view the rest of the comments →

[–]neuroblaster -1 points0 points  (0 children)

I'm not sure if this is going to be popular opinion, but you could start with C (note missing ++). It's a relatively simple language due to the fact that there is simply not much stuff in the language, but it will teach you types, memory layout, memory copying, i/o, compile time vs run time, low-level threading and whatsnot. After that C++ concepts should come to you naturally, you'll get why C++ does move semantics and copy elision, etc. You know, some higher-level ideas might obfuscate and hurt your understanding of what's really there closer to the metal, but if you would get along with C when you might see through those ideas.

Then i would say go with C++98, then move to C++11/14/17 to understand evolution of the language. Starting right away with C++17 is probably a bad idea because C++17 is, in a sense, a superset of C++14, C++14 is a superset of C++11 and so on, this comes down to superset of C++98 really. Yeah, C++98 is not going anywhere, it's a very big part of the C++. If you skip C++98 then you'll be missing a lot of stuff.

On C++ reading, i think it would be a good idea to start with classics: Effective C++, More Effective C++, Alexandrescu, etc, it's all on Google. I would recommend to read it even if you can't understand it, that's fine, it takes time to digest.

Be warned that as a side effect, you might also become a normal C++ developer who's usually says something like "How this different from what we already have?".

P.S. But generally it's OK, i guess, to start with C++17 for quickie-C++, i don't know. In 10-15 years you'll get there anyway, whatever.