▲ 13 points
back
4 comments
I used to use C++ in the early 2000's but have moved on to Java since then.
The language was and is extremely powerful and gives a whole level of control on what is going on. But I remember having to debug core dumps due to double pointer deletes and things like that.
The problem is that this happened on batch jobs that where just reading a text file with some banking data and inserting records in a couple of database tables.
For me the biggest problem of C++ was that it gave a level of control to the developer that did not scale well for most day to day tasks where that control is not really needed, and just gets in the way of getting things done and risks introducing huge non-deterministic bugs.
C++ has always been used, in practice, together with many C language features that should long since have been abandoned. That's just what people do. Maybe they shouldn't, and you don't have to, but the sociological fact is that people who want to have the advantages of C++ but leave behind the legacy of C move on to D, Go, or other languages.
It's going to take enforcement. Some widely-used C++ compiler will have to have a twistable knob that treats those old features as an error, so companies or projects can require new code to compile with that knob twisted.
Clang has a plugin system where you can pretty easily inspect the AST for arbitrary constructs and warn, fix, or abort if they are found.