After a long hiatus, I’ve decided to start blogging about C++ again.
It’s hard not to be excited about the new, faster pace of C++. We had to wait 13 years after the first standard was published in 1998. Now it’s 2014 and not only is C++11 still in the process of being adopted, there’s another language update just about to be standardized. And that’s not even counting the numerous technical groups working in parallel. As of right now (), there are no less than 12 subgroups underneath the main language and library groups, working on 8 technical specifications with topics ranging from filesystems, to networking, to concurrency.
While I’ve been on hiatus, a hell of a lot has changed. There’s now an official C++ website, and the standard itself is being developed on fricken’ GitHub. No shit, really. You can go on Google Groups and chat directly with the standards committee people – even some of the subgroups. Even Boost has got in on the act: they released Boost 1.56, which is the first version of Boost that uses their new modular git system hosted on GitHub.
It’s like a whole new era for C++ development. The language itself is revitalized by the 2011 standard – and the 2014 standard makes it even better – and the new transparency and openness of the standardization process keeps me fed with new ideas and techniques.
Unfortunately, while the language itself is surging forward, most C++ programmers are not. All of the same problems that I dealt with before I went on hiatus still exist: the vast majority of people teaching C++ are wildly out of date or straight-up incompetent, which means that the majority of people writing C++ are not really writing C++… they’re writing C++-– – a foul hybrid of C with a handful of C++ constructs that manages to capture the worst of both languages, usually badly influenced by a sordid tryst with Java.
It is said that when the world is in greatest need, a hero will rise. Realistically speaking, that’s probably not me. Nevertheless, my quest to eliminate shitty C++ is as important now as it was years ago when I first started out. There is a lot of crappy C++ code out there, and a lot of bad advice and misconceptions. That’s what this blog is going to be about. My target audience is mainly the C++ beginner, but even if you think you know C++, I can say with almost absolute certainty that you will find some stuff here that will challenge your understanding, and possibly even change the way you think about coding C++ altogether. Sounds like a tall order, but I’ve done it before, and I can do it again.
A warning, though: This blog is intended for adults. I will not hesitate to pepper my prose with some colourful metaphors, but more importantly, my aim will often be to shock programmers out of bad habits. To that end, I will often be brusque and adamant with my advice – I will ignore or downplay very remote edge cases where in favour of general and common cases, and I will use terms like “evil” with the intention of startling you out of your comfortable rut and making you think differently about the way you code. Nothing I will write will be 100% non-debatable gospel, of course – programming is engineering, and as an engineer you have the ultimate responsibility of deciding what tools you will use – but when something strikes you as controversial, I urge you to stop and think five times before firing off an angry comment to argue. Look very carefully at what I say, and why I say it, and if you still feel a need to rebut, try to do better than just telling me that you like something because you’re familiar with it.
If I can break you of just one bad C++ habit, or change the way you think about just one part of the language, that will make writing this blog worthwhile for me. So, if you’re serious about being the best C++ programmer you can be, welcome to my blog. I hope I’ll have something that will make you think, but even if not, I hope you enjoy the read.
std::cout << "Hello, world!" by Explicit C++ is licensed under a Creative Commons Attribution 4.0 International License.