Programming: Principles and Practice Using C++ by Bjarne Stroustrup
My rating: 4 of 5 stars
Greetings Dear Readers,
This is the first post in the series of SelfAcademy posts, where you will find small reviews and summaries of book and online courses I read/complete. The reviews of such books will also be shared on goodreads. So, the first book under reviewing is a programming book I finished some time ago from Bjarne Stroustrup himself. The review below is a direct copy of what I posted on goodreads. Please enjoy.
I found this book to be a rather good introduction to programming in general, as it touches quite a lot of very important topics regarding both the C++ language and programming in general. It is far more than just an introduction to C++ syntax, it is a thorough course introducing newcomers to a lot of programming related terminology, syntax, programming principles and strategies, programming history and philosophy and more.
This book really does a great job at introducing the student to a lot of (not exclusively) C++ related features, like:
- proper variable and function declaration and definition (headers, cpp files, namespaces, scope, initialization, pass-by-value or reference etc.)
-explaining different types of errors (compile-, link- and runtime errors, exceptions, narrowing, logic errors, range errors, etc.)
- classes (member access control, constructors, referencing, class inheritance, overriding and virtual functions, abstract classes, etc.)
- STL (iterators, code generalizing, algorithms, etc.)
- and a lot more.
Basically, by going through this book (and doing most of the exercises), one will become very familiar with an immense amount of basic concepts, but by far not all. There are some chapters which are only view broadening at best and provide little practical value, like testing, the C language, and embedded systems programming, but I can’t say it to be a negative side of the book, as it never really intended these to be anything more than what they are. Any of these topics are separate (volumes of) books themselves, so no complaints here.
Another very interesting aspect of this book is, that it silently, without anywhere mentioning it, goes through literally every major part of the C language as well, which shouldn’t be a surprise to anyone who is a bit familiar with the author’s history. Nobody should interpret this though as one will be able to program in C after going through all this, but it will considerably make the process of learning C easier.
As everything human made, this book is also not perfect. Probably the one true negative side that I can mention, is that it literally is filled with forward referencing, by which I mean using concepts and language features that are going to be explained in later chapters only. Having the references to which (future) chapter one needs to go for an explanation doesn’t help much, as those explanations are integrated into that particular chapter’s topic, so just cherry-picking and reading these will put them totally out of context, and as such extremely hard to understand. For someone like me, who doesn’t like “blackbox magic”, it can be a bit frustrating.
Also, because of the aforementioned things, I found myself looking up internet references and forums for further clarifications for some of the less explained subjects, which is indeed a very important skill to acquire early on, but in case of this book, I do not think it was intentional, but rather a side effect of the topic structure. I understand on the other hand, that it is really hard to write a book aimed at total beginners for such a complex language like C++ (people usually start with python or ruby), so I’m not going to dwell on these.
So all in all, to sum this up, I would definitely recommend this book to anyone interested in programming, as it really does a great job at introducing all the necessary basic concepts not just for C++, but generally for programming as well. I must stress that no prior programming knowledge whatsoever is needed to start this book, so I encourage you to start today if you are interested in it. It will take quite some time to get through this, but you will be thanking yourself once you’re done. C and Java syntax look like a breeze to learn after this, not to mention that this book will serve you as a good reference for both the language and general programming tricks during the beginning of your programming journey. I really do mean it, go and read this.
Once again, thanks for reading.