4 ms·
C++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,
by Night_Thastus 1y ago
C++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.
- Night_Thastus 1y agoI find a lot of the syntactic sugar problems can be solved with a library. I use QT for a lot of my work and it is a fantastic library that saves me a lot of time. Using its strings are a breeze, not to mention QFile/QFileInfo/QDir for anything file related, QProcess for running external processes, etc. It's rich, well documented, and highly functional.
- adrian_b 1y agoThere are also some features that have been introduced later, but which are so simple that they do not increase the cognitive load, so there is no need to avoid them. For example, C++14 has introduced a digit separator in numbers, some 35 years after Ada. For me this is an extremely useful feature, because I have to use big constants from time to time, even if I hate any contributor to the C++ standard who has thought that instead of using underscore as the digit separator, like in Ada and in many languages that have followed Ada, it is a good idea to replace the underscore with the apostrophe. There has never been any valid argument for using the apostrophe instead of the underscore. Underscore would have introduced a few subtle complications when parsing legacy programs, but that is also true for the apostrophe. Such complications could have been trivially avoided by forbidding a number to start with a separator.