In this book, C++ creator Bjarne Stroustrup talks us through the genesis of C++, detailing his design philosophies, the history of the language's development, and the various trade offs that make up C++.
If you're curious about why C++ is how it is, then this is a fine read. Stroustrup writes well and without hyperbole. Along the way, you'll pick up plenty of interesting trivia. Did you know, for instance, that the earliest versions of what became C++ had AOP-style before and after methods, but no-one used them, so Stroustrup removed them? Or that language level support for delegation was once in the offing? You'll also find out why keyword arguments for functions were rejected. Additionally, there's a fascinating (albeit too brief) section on how the behaviour of exceptions came to be specified, with resumable semantics rejected for the termination model we have now.
Due to the year of publication, events encompassing the adoption of the STL is missing. On one hand, that's a bit of a pity. On the other, it keeps the length of this book to a manageable length.
From the title, you probably already know if you want to read this book. Will it reveal amazing new techniques to speed up your C++ programs? No. But if you have any interest at all in language design, this is really accessible and there is no type theory or lambda calculus to wrestle with here. Even a committed C++-hater might come away with a new appreciation for the language, warts and all. Well, maybe not, but they might retire a few a few of their arguments against it.