Programming: Principles and Practice Using C++ by Bjarne Stroustrup
My rating: 4 of 5 stars
Liebe Leserinnen, liebe Leser,
das ist der erste Beitrag aus der geplannten Reihe von Beiträge mit dem Tag SelfAcademy. In diesen Beiträgen werde ich kleine Rezensionen und Zusammenfassungen über Bücher oder Online-Seminare teilen, die ich bis dahin zu Ende gelesen/gemacht haben werde. Die Rezensionen über Bücher werde ich auf goodreads auch veröffentlichen. Weil ich die Rezensionen auf Englisch schreiben werde (die meiste Rezensionen sind auf Goodreads auf Englisch geschrieben), werde ich nur Englische Fassungen in meinen Beiträgen veröffentlichen.
Lange Rede kurzer Sinn, das erste Buch, das ich vor kurzem zu Ende gelesen habe, und über das ich eine Rezension geschrieben habe, geht um Programmierung und das wurde von Bjarne Stroustrup geschrieben. Die unten zu sehende Rezension ist eine direkte Kopie der ursprünglichen englischen Fassung. Viel Spaß.
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.
Mal wieder, vielen Dank fürs Lesen.