4 ms·
C++20 is going to be much friendlier. If you're new to C-like languages though, perhaps start with C and work up to C++. The foundations are important to unders
by junon 5y ago
C++20 is going to be much friendlier. If you're new to C-like languages though, perhaps start with C and work up to C++. The foundations are important to understand, and you'll appreciate why RAII is important.
EDIT: Ah yes, the "crawww C is unsafe, use rust crawww!" downvote crowd is out in full force today.
- ncmncm 5y agoStarting with C is the worst way to learn C++. You start out with bad habits you then have to unlearn. Unlearning bad C habits is hard because the language accommodates them for as long as you continue to cling to them. You need to consciously decide you will use the new, better way. Once you have done each once, there will be no temptation to backslide.
- junon 5y agoFully disagree. Understanding pointer semantics is a pre-requisite for understanding RAII.
- pjmlp 5y agoI know C++ since 1993, I am quite curious how pointer semantics have anything to do with RAII.
- ncmncm 5y agoYeah, doesn't make sense. Pointers are less useful in C++, because we have better things now.
- junon 5y agoOf course we do. You still need to know how pointers work to use RAII effectively, though.
- pjmlp 5y agoNot at all, because RAII is about constructors/destructors, and not at all about pointers. Heap allocated data is one special case of OS resources that can be managed by constructor/destructor pairs.
- junon 5y agoBecause smart pointers are still pointers under the hood. You're forgetting the time before you know what pointers were - people coming from higher level languages don't immediately grok the concept. By teaching them automatic memory management patterns like we use in C++ without teaching them why you need such things, they'll never fully understand the code they're writing. It's like the "I know React but not JavaScript" crowd all over again.
- pjmlp 5y agoIf you think RAII is about smart pointers, you really don't understand it. RAII is about resource management, regardless of where those resources live on. Heap allocated, OS handles, indexes on a fixed sized buffer, network sockets, ...
- junon 5y agoYes, I'm aware, thanks. Lifetimes, ownership, etc. are all overlaps of RAII and associated concepts. Again, what did being pedantic prove here? You clearly understood what I meant.
- kretaceous 5y agoThe downvotes are probably because you said "start with C" while the OP has clearly stated they have experience with C and use it in their day job. P.S. I haven't downvoted you.
- junon 5y agoOh I missed that line, thanks. The advice still stands, however - perhaps not to OP. But I think it's even more reason to learn C++20 in OP's case.
- sharedptr 5y agoI use C at work and in the past for hobby projects C++ (11) to do some modifications to Quake 3. Is C++20 support in compilers already? MSVC/GCC/Clang