Lei Mao bio photo

Lei Mao

Machine Learning, Artificial Intelligence, Computer Science.

Twitter Facebook LinkedIn GitHub   G. Scholar E-Mail RSS


I had been programming using C language since I was an undergraduate student. Later I went to graduate school a few years ago, took some C++ courses and started to program using C++ language. Although C++ is an extension for C, what C++ brings is much more than the entire C and it is still evolving, as you could see from the textbooks that C programming textbook is usually a hundred pages but a C++ programming textbook is more than a thousand pages. This means that the C++ programming we could learn from university lectures is quite limited. To become an expert in C++, we should also read some C++ textbooks thoroughly.

Before the C++ textbook “Programming: Principles and Practice Using C++” 2nd edition was purchased, I already had another C++ textbook “C++ Primer” 5th edition. I never read through the “C++ Primer”, so it is a little bit unfair to judge the book. However, its impression to me is that it is a comprehensive reference book that covers any aspect of C++ (up until the C++11 standard) rather than a textbook. That is probably the reason why I was not extremely motivated to read the entire book.

The author of “Programming: Principles and Practice Using C++”, Bjarne Stroustrup, is the original creator of C++. More importantly, from the reviews online, it seems to be a textbook. These are the major motivations of purchasing the book.

In this blog post, I would like to make some comments on the book after reading through.

Programming: Principles and Practice Using C++


The entire book was written in a textbook style. Each of the chapters has concrete examples and some examples are extended to the next chapters, making the logic between chapters strong. As a textbook, it discussed a lot of the design motivations behind lots of C++ concepts and provided lots of simplified implementations to existing C++ STL functions and std classes. This allows you not only to learn how to use the programming language but also possibly contribute to the programming language in the future. It also has several chapters on how C++ was born and C++ applications in practice to broaden the reader’s view.

At the end of the book, there are also appendixes in the book which could be used independently for quick reference.


As Bjarne Stroustrup has pointed out in the book, this book only serves as a textbook for C++ beginners. There is still lots to learn to become a C++ expert. Only the C++ basics were covered in the book. It has not even talked about parallel programming using C++. For more advanced topics, the readers have to read other C++ books.


5/5. Recommended for C++ beginners. No C programming experience is required to read this book.