5 ms·
> All these languages are potentially-better systems languages than C/C++ No they are not. C++ has spent decades building "a better C/C++". Any language that i
by otabdeveloper1 7y ago
> All these languages are potentially-better systems languages than C/C++
No they are not. C++ has spent decades building "a better C/C++". Any language that ignores those lessons and takes the stance of "learning C++ is too hard, let's go shopping" is doomed to fail.
- moomin 7y agoWhich of these languages do you think hasn’t learned the lessons of C++? Rust, for instance, has liberally encoded “modern C++” whilst plan not providing a lot of the features that make C++ problematic.
- otabdeveloper1 7y agoRust is the better choice, but they're still learning about the real world of error handling, generic library code and performance optimization.
- flohofwoe 7y agoApologies for being a bit blunt, but: <rant> For all the time and work poured into C++, it has remarkably little to show over plain old C99. Some of those new "better C" languages are the work of individuals and very small teams, yet they are able to build more progressive "better C" languages than C++ can ever be because it is held back by the need for backward compatibility for 'failed features' and 'design-by-committee'. If all that ever comes out of those small 'better C' languages is some sort of consensus of which core-set of features actually makes a 'better C', than they have already contributed more to programming language development than C++. </rant>
- p0nce 7y agoHere 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 7y 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 7y 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 7y 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 7y ago
- orbifold 7y agoWithout starting a rant myself about people that think C++ has nothing to offer over C, what is in your opinions then the reason for any large company to develop their code in C++ and not C? I'm thinking of virtually all Adobe Products, anything related to the creative industry really, Google, CERN, Microsoft... No-one in their right mind would try to develop Adobe Photoshop in C.
- notacoward 7y ago> For all the time and work poured into C++, it has remarkably little to show over plain old C99. Exactly. I think of it as a path-finding problem. C was obviously not where people wanted to be. As with any path-finding problem, it's possible to make a wrong turn. Often, attempts to recover without backtracking only make things worse. I contend that C++ has done exactly this. They're at point where a mature, reasonable person would admit their error and backtrack until a better path can be found. I doubt that many of C++'s critics are arguing from ignorance or afraid of complexity. More often, they're objecting to spurious complexity because they know how to do better. I've written compilers, and they're not even close to being the most complex things I've written. It's not so much "let's go shopping" as "let's return this defective merchandise" and build something that works. It's only the lemmings who insist on rushing further down the wrong path. "Turning around is hard; maybe if I get enough others to come with me they'll break my fall."