Bookshelf Classic: The Design and Evolution of C++
The book was published circa 1994, and Stroustrup was on hand to give a talk to an eager C++ user group.
While the book describes the early evolution of C++ -- the proposals, the decisions, the trade-offs, and the mistakes -- it is in the early sections where we learn most about the author. Stroustrup writes:
"It is often claimed that the structure of a system reflects the structure of the organization that created it. Within reason, I subscribe to that idea."
In my years of programming and working with management, I have found this to be very true. This was Stroustrup's way of saying the C++ language is largely shaped by who he is. While it's no surprise he has advanced degrees in mathematics and computer science, we learn that his hobbies include history and philosophy. Describing Kierkegaard as appealing and Hegel as grandiose, Stroustrup steered C++ toward the individual and the practical, and away from the abstract and the ideal.
"Many C++ design decisions have their roots in my dislike for forcing people to do things in some particular way."
And sure enough, when a member of the audience raised his hand and proposed a particular feature for the language, Stroustrup recommended it be implemented in a library.
It has been a long time since I last opened this book, and I rediscovered a yellow sticky note on Chapter 8: Libraries. Recalling the moment, I had sought guidance in creating a library to encapsulate threading. Stroustrup led with a quote from Kierkegaard:
"Life can only be understood backwards, but it must be lived forwards."
I didn't fully understand then, but it meant I couldn't completely know what I needed from a pthread library until after I had written it. And that it follows I would have to return to it and rework it.
I am happy to say that I did produce a pthread library for Unix which was published in Doctor Dobb's Journal (1995):
A C++ Framework for DCE Threads
In addition, I reworked the library to support the Windows NT threading model which appeared in DDJ (1996):
DCE pthreads versus NT Threads
Given that this book is from 1994 while the current C++ standard is from 2014, it can't, in a manner of speaking, make you a better language lawyer. It can, however, make you a better judge. By providing some history and context surrounding C++, the book can make you a more thoughtful, more insightful, programmer.