Explicit C++ is a blog about modern C++ programming, with a focus on eliminating myths, misconceptions, and bad habits.
It’s a sad fact that despite the popularity of C++, the average C++ programmer has woefully poor C++ programming skills. A large part of the problem is that most people who teach C++ are themselves terrible C++ programmers – they are either decades out of date with their knowledge, or they never really learned the language properly to begin with. Bad teachers leads to bad students, some of who go on to become teachers themselves – or people who write about C++ – and the cycle continues.
The most infuriating thing about all this is that C++ is really not that hard a language. It’s certainly a lot easier than most people think. But poorly trained programmers struggle to write C or Java in C++ – because those were the languages they first learned to program in – rather than embracing the C++ language itself, and when that naturally turns out to be difficult, they blame the language. “C++ is hard” and “C++ is cryptic”, they complain, but that’s hardly surprising because they’re trying to write an entirely different language using the C++ syntax. To put it bluntly, they have no idea whether C++ is hard or cryptic, because they have no idea how to actually program in the language.
I believe that if C++ is taught properly… using modern techniques, with a focus on high-level design concepts rather than mucking about with bits in memory… it not only becomes easy, it becomes more powerful, more flexible, and more efficient. By showing the right way to write C++ (or, at least, a better way), I intend to battle the myths and ignorance surrounding the language, and ultimately, I hope, get better C++ written.
The goals of this blog are:
- to dispel the most pernicious myths and misconceptions about C++ and C++ programming;
- to point out bad C++ practices and terrible code, explain why it sucks, and show the right way (or at least a much better way) to do it;
- to introduce cutting edge techniques, code, and libraries, including proposals that may be part of the core language or standard library some day;
- to reframe C++ as a high-level modelling language that allows you to get dirty if you have to, rather than a low-level language with a handful of high-level features you can mostly ignore; and
- to demonstrate how modern C++ techniques just make everything easier, safer, faster,… better.
About by Explicit C++ is licensed under a Creative Commons Attribution 4.0 International License.