I have two questions. Which qualities of C++ would one want to maintain in a replacement, and what is one using the replacement for?
For the second question, the article's answer is:
kernels, drivers, highly performance-sensitive code like game engines, virtual machines, some kinds of networking code, and so on. And for me in particular, it also includes new plugins to existing C-based legacy systems, including Microsoft Office.
I think this is the first step to discussing "a replacement". I fear that every C++ programmer would give a different answer to each question.
The ideal replacement in the article can be summarised as most/all language features of C, plus some chosen subset of the features of C++.
Although with most of them implemented differently to how C++ has implemented them. Presumably that better implementation is to be done without compromising it's C-like qualities. Which sounds to me like the same trap that C++ itself fell in.
The problem with C++ isn't so much that it's compatible with C or that you shouldn't pay for any features that you shouldn't use -- it's that they used the same dumb linker as C and so most advanced features are grossly limited and ended up as a twisty maze of text manipulation and includes.
Absolutely! Damn language innovators who think that solving module linkage is "not sexy" but modifying syntax to be unprocessable by people and machines is.
Google Go is fast because it stole ideas from Wirth and followers (Turbo Pascal, Modula) who actually took the care to provide sane module linkage for decades. The proper path to the evolution of C was to keep includes and classic linking but to allow "module linking" too. All that was being done for decades, only not in C and C++.
That's no longer true; the linker has been massively extended to support templates at this point. (Otherwise every file that instantiated a particular template would result in all the code for that template being duplicated in the final executable. This actually used to happen in older C++ compilers.)
For the second question, the article's answer is: kernels, drivers, highly performance-sensitive code like game engines, virtual machines, some kinds of networking code, and so on. And for me in particular, it also includes new plugins to existing C-based legacy systems, including Microsoft Office.
I think this is the first step to discussing "a replacement". I fear that every C++ programmer would give a different answer to each question.
The ideal replacement in the article can be summarised as most/all language features of C, plus some chosen subset of the features of C++.
Although with most of them implemented differently to how C++ has implemented them. Presumably that better implementation is to be done without compromising it's C-like qualities. Which sounds to me like the same trap that C++ itself fell in.