3 ms·
I used to code C++ in early 00s and used to think I know the language OK. Then I stopped using it, meanwhile C++11 and friends came, along with lambda syntax, m
by rich_sasha 1y ago
I used to code C++ in early 00s and used to think I know the language OK. Then I stopped using it, meanwhile C++11 and friends came, along with lambda syntax, move semantics etc. - that was a jump but I could still just about follow.
Now I don't follow anymore. It's a new language on top of new language on top of new language. On top of C++. On top of C.
- dh2022 1y agoI have the same feeling. It seems to me these copy/move semantics are done for performance reasons, and at the same time are very hard to follow / use / implement correctly. Today I would rather use C or assembly language than C++. At least I know what I am doing.
- Night_Thastus 1y agoC++11 introduces a lot of things that make it far, far easier to work with. I would not want to go back to a pre-11 environment. As for everything after that, you don't need to use those features. You can still write C++ like it's '11 and be none the lesser. That's what I do. Keep it simple.
- addaon 1y agoYeah. C++11 was very much a new language “on top of” C++ — but it was a so much better language that learning it was a joy, and using anything predating it would be crazy. The minor tweaks since then are at times visually stunning (and not always in a good way), but are in the end quite minor, and can be safely ignored.
- rich_sasha 1y agoYeah, I'm not saying these are bad changes! Only that it's so changed that I cannot read modern non-noddy C++, having been previously at least conversational, maybe fluent in it.
- bennettnate5 1y agoThe frustrating thing with layer-cake languages like C++ is that it can technically have all the ergonomic APIs that make life nice to write, yet have all this cruft and esoteric edge-case behavior that makes it so, so hard to read. I can't safely ignore features in C++ that others are using when I'm evaluating the correctness and security implications of already written code. And barring a strictly enforced (e.g. mandatory lint before merging) coding convention that bars all the nasty sharp points and legacy APIs, even a new project will gradually accrue the bad bits from devs who are used to using C++ that way.
- Night_Thastus 1y agoAll languages that are sufficiently widely used eventually become 'layer-cake' languages. It's inevitable once you have multiple big groups of people with very different needs. And once language design and best practices has evolved from where it was when the language was originally developed. The only ones that escape this problem aren't widely used enough to have much demand for new features or changes.
- Bekwnn 1y agoIn a similar boat with C++, but even the complexity of fundamental "simple C++" issues and lack of syntax sugar made me gravitate away from C++ to better-C style languages ultimately landing on Zig. Using another language has only made me feel C++'s shortcomings more strongly than before. Stroustrup even gave a talk about what a new C++ next language would look like and lands on many things better C languages already have implemented. Sadly it's doubtful for gamedev to move away from C++ anytime soon. I am enjoying Vulkan+SDL in Zig on a personal project and can only hope that space of the language's community continues to grow.
- pjmlp 1y agoIf only C added the C++ niceties in regards to bounds checking types, namespaces, modules, strongly typed enumerations,... Still waiting for that C+ to come out of WG14.
- sph 1y agoI have the same issue. Every time I feel I want to get better at C++ and learn what changed in the past 2 decades, I also have to contend with the fact that I'll have to learn cmake, that package management is non-existent, that compile times are atrocious and let's not forget the whole template abomination. The day I need the performance and guarantees C++ can give me is the day I'll dive deep into Rust instead.
- saurik 1y agoThe =default syntax might be new, but this should work the same if you use {}... I think this semantic has been the same the whole time I've used C++ (which seems to be a lot longer than you)? (Or like, is the issue with using the is copy constructable check from the standard library? Back in the late 90s we all had those, just in bespoke libraries.)
- rramadass 1y ago> I think this semantic has been the same the whole time Yes; When you provide any of the "standard" ctors the compiler goes hands off leaving it entirely up to you to do the calls to any of the base ctors. The article was just Raymond being surprised since as somebody else has already pointed out the api name is a bit of a misnomer.
- saurik 1y agoYeah: I am not responding to the article, or Raymond's surprise; I am responding to the comment of someone here annoyed at recent C++.