7 ms·
At the end, all things are equivalent, however for example explaining that to complete beginners (vector growing rules, their relationship to underlying memory
by xorblurb 11y ago
At the end, all things are equivalent, however for example explaining that to complete beginners (vector growing rules, their relationship to underlying memory allocation and pointers, the fact that "raw" memory allocation exists at all) would be IMO a bad idea, while introducing them to modern C++ without any legacy C++/C backward compatibility is probably both ok and quite safe.
I would also be OK in introducing plain C to complete beginners, exploring more about objects in memory and pointers and complete manual control of all code paths (although, on a side-note, its way harder now that compiler writer consider any undefined behavior to be a fatal sin, even when it would have an "obvious" meaning when looking at the target machine in term of what its ISA is).
However, for sure, I would not introduce pre-C++11 nor mixed C/C++ to beginners.
How does it matter? Well, I think that a beginner with a trivial source code is a reasonable approximation of a team working on a not so clean codebase as far as safety is concerned. Likewise for a tired confirmed developer on a clean codebase. Is it simple enough to be taught by a non expert teacher without needing too much preparation? If not, it means you risk to have to keep too much details in your head, that will either slow you down or you will eventually make mistakes.