3 ms·
Some people just like writing code. You can't say that C's features are insufficient, when you can implement the vast majority of C++ features in native C, and
by seamyb88 7y ago
Some people just like writing code. You can't say that C's features are insufficient, when you can implement the vast majority of C++ features in native C, and all of 'em with tooling. What's wrong with having direct control of only the features you need? What's wrong with code generation? Not to trample on C++, I like it (albeit less than C). I would definitely create C++ if it didn't exist.
- einpoklum 7y ago> when you can implement the vast majority of C++ features in native C No, you absolutely cannot, even in principle. C++ is not "C with classes" and some syntactic sugar like it started out. That's not been the case for many years already. Also, even the features you can implement - you won't; you don't have the person-years for that. You will have to, need to, use libraries. For those you need to compare the libraries available for C and for C++, and C comes up quite short (not just because C libraries are also usable in C++...)
- lightedman 7y ago"No, you absolutely cannot, even in principle." Which is why it has been done for my 2D Second Life clone? Some of us can very easily implement C++ stuff in native C.
- seamyb88 7y agoSo which feature can you not implement? The only I can think of which you'd have real problems are anonymous functions/lambdas. Most other features I think you can implement. It won't look the same, but it will serve the same purpose.
- johannes1234321 7y agoThings coming to mind: Pointers which can't be NULL (aka. references) Exceptions which also clean up intermediate frames (the exception itself can be done with longjmp, but no destructors which could be run)
- megous 7y agoPointers that can't be null are usually implemented by struct embedding. That's typical for Linux kernel code, for example.
- ncmncm 7y agoDestructors. It is the defining feature of the language; everything else in the language extends their reach. They are the key to full exercise of code paths, and thus reliable code. A programmer who makes full use of destructors is simply a better programmer than one who doesn't.