4 ms·
As someone who creates production code in assembly, C, C#, and Java (among others), but who doesn't have that much experience with C++: C++ certainly seems lik
by falcrist 6y ago
As someone who creates production code in assembly, C, C#, and Java (among others), but who doesn't have that much experience with C++:
C++ certainly seems like a fragmented language from the outside. Lots of features added over the years to address problems with safety and provide additional "zero overhead" abstractions. The style and idioms of code written in this language seems to have changed pretty significantly over its lifespan. So breaking backwards compatibility to throw out old standards and force programmers to utilize new ones seems to make sense. However, it raises a few questions.
1) Who decides which parts of the language to throw out and which to keep? How do they decide this? Would the goal be to keep the multi-paradigm concepts, or re-focus the language? Which of the "zero overhead" abstractions should be kept?
2) Has this already been tried before in essence? There are certainly a number of languages out there that seem to strive to be "a better C/C++". What benefit is there to attempting to create a C++ 2.0 instead of using one of them?
3) Do the benefits of breaking backwards compatibility really outweigh the loss of all of the accumulated libraries and all the software of the past 30+ years? Even with ideal management of the new language, would it be enough to bring people to a new version?
4) Do you continue adding to this new version as you did with the previous one... surely that would eventually lead to the same fragmentation seen in the current version.
5) What happens to C++ 1.0 in this case? Do you continue to support and expand it? For how long? I suppose one could look at what happened with Python, but I'm not so sure it's that comparable.