I really like C++. It’s not the right tool for every job, but it’s what I reach for when I need to do any kind of systems programming. Unfortunately, C++ has often been cited as a “bad” language, and I feel like that reputation has worsened over time. Recent languages like Go and Rust have taken over a lot of mind share—at least on sites like Hacker News. These are great languages, and I’m happy to see them succeed. But I think a lot of people miss the point of what makes C++ such a great language, and in this post I want to explain things from my point of view.
To make my point, I’m going initially focus on some commonly cited reasons for C++ is an awful language. Then we’ll see why these supposedly awful things are intentional language design decisions that actually make the language rather interesting and unique.
C++ Is Designed For Performance
When you’re designing a programming language, there are a lot of different trade-offs you have to balance. Things like expressiveness, readability, consistency, and performance are among the factors under consideration. C++ is what you get when, at every turn in the language design road, you choose to take the path that leads to higher performance.
One significant difference with C++ compared to most other programming languages, is that C++ has been designed by the people writing C++ compilers. There is no reference implementation of C++. Instead, there are a lot of different C++ compilers written by different vendors. All of these compilers implement the language slightly differently, generate slightly different code, and usually extend the language slightly.
Source: In Defense of C++