My problem with C++ is actually with all the stuff they keep tacking on with each new edition. It’s evolving into an even more complex monstrosity while at the same time keeping all sorts of nasty vestiges. At some point you’re better off jumping to a new language and we’re well past that point with C++. Sucks for those having to maintain legacy code.
The thing is, much of the new stuff is intended to replace old stuff. Modern C++ is a completely different experience than old C++ - actually a much better one imo. But then there are two problems which make things messy:
Lagacy code, where introducing new concepts without updating the older parts increases complexity.
People who don’t know or don’t care and just copy-paste whatever, mixing styles and standards.
In both cases, you end up needing to know how to do things the new way and the old way, while one of which would be sufficient.
There are exceptions of course (try{ pun(); }catch(const NotFunnyException& err){ return NOT_INTENDED;}).
I mean, you don’t need to use the new features though. You can use a very small subset of C++ and get by just fine.
But yeah it does contain annoyances that have been more or less “solved” with newer languages. I realize there’s still a lot of use cases for C++, but I really can’t see the advantage of using it unless performance is absolutely critical or you need to have 100% certainty of machine level operations…which admittedly is still relevant for quite a few industries.
My problem with C++ is actually with all the stuff they keep tacking on with each new edition. It’s evolving into an even more complex monstrosity while at the same time keeping all sorts of nasty vestiges. At some point you’re better off jumping to a new language and we’re well past that point with C++. Sucks for those having to maintain legacy code.
The thing is, much of the new stuff is intended to replace old stuff. Modern C++ is a completely different experience than old C++ - actually a much better one imo. But then there are two problems which make things messy:
In both cases, you end up needing to know how to do things the new way and the old way, while one of which would be sufficient.
There are exceptions of course (
try{ pun(); }catch(const NotFunnyException& err){ return NOT_INTENDED;}
).I mean, you don’t need to use the new features though. You can use a very small subset of C++ and get by just fine.
But yeah it does contain annoyances that have been more or less “solved” with newer languages. I realize there’s still a lot of use cases for C++, but I really can’t see the advantage of using it unless performance is absolutely critical or you need to have 100% certainty of machine level operations…which admittedly is still relevant for quite a few industries.