3 ms·
Here are some things that make C++ better than C - RAII - exceptions - classes and objects - inheritance - templates - the STL C++ is strictly better tha
by p0nce 8y ago
Here are some things that make C++ better than C
- RAII
- exceptions
- classes and objects
- inheritance
- templates
- the STL
C++ is strictly better than C when wielded correctly.
- flohofwoe 8y agoAll of those are very subjective. - RAII: Only useful with 'smart' data which must run code for initialization, destruction or copying. It's entirely valid to work with 'dumb' data only which is zero-initialized, and can be copied and deleted without any additional custom actions. - Exceptions: too brittle and complex, modern languages have switched mostly to option-return values, which contain both an error code and success-result. - Classes, objects, inheritance: left-over artefacts from the OOP hype of the 90's - Templates: Not the only option to write generic code, other languages do this better. Programming entirely without generics isn't too bad either, not all code benefits from this. - STL: not sure what to say here, it's the main contributor to slow compile times, excessive hidden memory allocation, slow debug performance and bloated executables. There are not many parts of the STL that are 'acceptable', but of course that's entirely subjective.
- otabdeveloper1 8y ago> All of those are very subjective. They're not. People vastly more experienced and more intelligent than you came up with them. Learn why they exist before dismissing them. You won't get anywhere trying to replace C with a "let's go shopping instead" mentality.
- p0nce 8y agoWell you learn to appreciate the value of RAII and exception working on high-availability software. It's almost impossible to have correct error paths and deinitialization without. I'm very doubtful the new crop of languages without exceptions and RAII actually care about correctness in the wild. Better than template without uniform representation? template is just copy-paste you don't _have_ to use it. Same remark for STL. You want a hashmap of arrays of string, you can have it in C++ in one line. In C you would end up with a linked list instead of picking the right data structure. Objects and inheritance are not a hype. See this page, which uses CSS, which implements inheritance. Having subtyping is a basic premise of being a useful language (or, a GUI language).
- tomp 8y ago> Well you learn to appreciate the value of RAII and exception working on high-availability software. Alternatively, you'll learn to not appreciate the value of exceptions working on high-availability software. Not personal experience, but AFAIK Google (definitely lots of highly-available software) disallows using exceptions in C++.
- erik_seaberg 8y agoThey have a critical mass of bad legacy code. > Because most existing C++ code at Google is not prepared to deal with exceptions, it is comparatively difficult to adopt new code that generates exceptions[....] Things would probably be different if we had to do it all over again from scratch. - https://google.github.io/styleguide/cppguide.html#Exceptions https://google.github.io/styleguide/cppguide.html#Exceptions
- flohofwoe 8y agoI've been writing C++ code since around '98, and have only recently moved back to mostly C. To be honest, features in C++ that I thought are a "must have" are actually a variant of Stockholm Syndrome, after a little while (a few weeks to months) one realizes that the world would keep turning without C++ ;)
- p0nce 8y agoNone of my competitors use a language from the 70's.
- rafaelvasco 8y ago"Left-over artifacts from the OOP hype of the 90's". Sorry, but anyone that bashes on OOP can't be taken seriously. There's no problem with OOP, it can be misused of course, but the same is true of any other paradigm. Every programmer with any worth uses OOP, Functional, Data-Oriented, etc, where they are most effective. They are complements to one another not replacements.