I was amazed to discover that C++ for Dummies outsells the total of the next three titles aimed at newcomers to C++. Of course this is good news for me because it means that there really are many people out there who believe they know very little but want to learn to program in C++.
Now the title of this book might suggest that it was for the person who has already learnt C++ but wants a good reference volume in which they can look up the things they only vaguely remember. Wrong!
This book is largely a classical introduction (i.e. it does things like using raw C-style arrays for 500 pages before it introduces you to std::vector (and the author forgets about the std:: part so the code from the book will not work as written.) to learning C++. On page 1 we find:
This book is not a big rant about C++. Rather, this is a hands-on, roll-up- your-sleeves book, where you will truly learn C++.
At the very beginning, I start you out from square one. I don't assume any programming experience whatsoever. Everybody has to start somewhere. You can start here. Not to brag, but you are in the hands of a highly successful C++ user who has shown thousands of people how to program, many of whom started out from square one.
On the positive side, the author's understanding of C++ is streets ahead of Herbert Schildt's but that is not saying much. On the negative side much of his code is littered with bad things such as magic numbers, and dynamic resources handled by raw pointers. He actually writes about magic numbers on page 198 but does little to avoid them in his own code.
The code in the book is also littered with typos. One of the commonest is using '' where '' is needed. Indeed this is so common that I wonder if there is some typesetting problem shooting his code.
While I am greatly in favour of getting students to type in source code and thereby learn the kind of errors that result, I am not in favour of presenting novices with large numbers of lines that simply send text to the screen. Learners have better things to do with their time.
Had this book been written and published six or seven years ago I would have been praising it because the author makes a good job of introducing C++ as it was in the past. He has even acquired new skills by learning about such things as UML and the STL. What he has not done is to re-appraise his teaching method in the light of such things as the STL, exceptions and namespaces. Most of his code will not compile with a modern C++ compiler because he does nothing to handle the namespace problem. He does not appear to appreciate the value of introducing exceptions early so as to encourage the programmer to validate input. He still pursues the traditional approach of introducing all the complexities of arrays and pointers long before using std::vector.
In other words his teaching/presentational method has simply accreted new bits without going through a fundamental review to see how Standard C++ could be used to help the newcomer get started with the minimum of complexity.
Finally, I find almost all his code examples crushingly boring. I simply cannot imagine why I would want to spend time as a novice typing in his code examples.
Not a bad book but it could have been so much better, and those interested in learning to program in C++ deserve much better. And perhaps it would be better not to try and write a book that tries to tackle so many different things.