THE READING ROOM / BOOK GUIDE
The design and evolution of C[plus plus]
Bjarne Stroustrup explains why C++ took the shape it did, tracing decisions about types, classes, and compatibility with C from the language's early years into the mid-1990s.
About the book
This is a design history written by the language's originator. Stroustrup sets out the problems he wanted to solve, the constraints that shaped his choices, and the alternatives he rejected. The book follows C++ from its beginnings as an extension of C through the standardization work of the early 1990s, treating the language as a series of engineering decisions rather than a fixed set of rules.
Classes, inheritance, operator overloading, templates, exception handling, and multiple inheritance each get tied to the practical needs that prompted them. Stroustrup also addresses compatibility with C, the cost of features, and the trade-offs between flexibility and safety. The tone is explanatory and occasionally defensive, since many of these choices drew criticism.
It rewards readers who want the reasoning behind C++ rather than another tutorial on syntax.
How to read it
Read it alongside a C++ reference or a working compiler. The arguments make more sense when you can see the syntax they produced. Stroustrup moves between historical narrative and technical justification, so expect to slow down at the sections on templates and exception handling.
The prose is clear but dense, and some passages assume familiarity with C. Skim the compatibility discussions on a first pass if you have not written C. The book is more persuasive as a record of constraints than as a defense of every outcome; treat the author's judgments as one informed perspective.
Who it suits
Programmers who use C++ and want to understand why its features behave as they do will find the most here. So will readers interested in language design, compiler implementation, or the history of software engineering in the 1980s and 1990s. Anyone teaching C++ can use the book to explain the reasoning behind conventions that otherwise seem arbitrary.
Reading considerations
The account stops in the mid-1990s, so it does not cover later standards or the language's subsequent evolution. Stroustrup writes as an advocate for his own design, and readers should weigh his claims against independent critiques of C++ complexity.
Follow the HN conversation
38 different recommenders are recorded in the upstream dataset. These are AI-classified source counts, not an independent rating.
Search HN comments about this book ↗
Explore videos on the same subject ↗
Book notes prepared with DeepSeek, using catalogue records and Open Library subject information. They are reading guidance, not a personal review or a verified chapter-by-chapter account. Book details can vary by edition. HN data methodology · Book metadata and covers.
