Top critical review
11 people found this helpful
Good within certain limits
on 21 April 2013
Amongst other things I'm a professional trainer, and I've been teaching technical subjects on and off for the last 24 years. I bought this book about a year ago because I'd been asked to provide C++ training and although I'd been teaching in C on and off I'd never delivered a C++ course.
I prefer shorter books that stick to the subject, this book does that at 300 pages. It excels at introducing the simple concepts at the start however it's a slave to its examples. This gives the book some problems as it attacks the more complex aspects of C++ as - although one can understand what is being taught, the slavish manner in which new concepts are introduced into the book's 'student grades' example leaves one floundering somewhat with respect to the 'framing' of the newly introduced concepts.
People learn most effectively when knowledge is 'framed' meaning its related to some (hopefully) more familiar concept. Clearly the authors understand this principle, and the 'student grades' program is meant to serve this purpose, however the book fails to really get the reader to understand how and where the knowledge provided fits into the spectrum of C++ knowledge rather than just the 'student grades' program.
The exercises are excellent but aside from the first few on each chapter I would judge that they are too difficult for 'normal' learners. The authors' attempt to introduce aspects of programming by forcing the reader to code up solutions that would be easy if you'd read on a couple of chapters. This is an approach often taken by academic's - the idea is that one appreciates the knowledge gained by understanding how difficult it would be if you didn't know it. To someone who wants 'accelerated learning' as the title of the book promises, this is soul destroying and a waste of time. The result is that one ends up skipping examples because you know they'll be teaching you how to do it properly in a couple of chapters.
If you really wanted to start from scratch and learn C++ you would have no idea on how to compile the examples in this book, let alone understand; what a compiler is, the phases of compilation, the pre-processor, the link-edit phase libraries and dynamic linking. These are concepts that I introduce in 'chapter one' of my courses, before the first break, to build confidence in what the delegates are about to learn.
This book has other glaring omissions, namely the C++, Standard Template Library. Although the features of the STL are taught in the book, they aren't really identified in a manner that allows the reader to gain perspective and confidence in their use.
Probably the most inexcusable chapter in the book is chapter 8, 'Writing generic functions'. After much consideration I believe that the book seems to have little idea of how to teach one of the most important concepts in C++ which itself is essential to fully appreciate the power of the STL. The reader is left floundering at the end of this chapter wondering what it was all about. If taught properly template classes and functions is a fairly simple topic which is easy to understand and allows the learner to get to grips with what the STL is doing for them. This book just 'drops the ball' so badly that the learners confidence is destroyed, rather than built up.
If you already know how to program, you already know a bit of C, you know how to compile, you have other reference material, you aren't discouraged by chapter 8, you could probably learn C++ quite quickly from this book, however if you want to learn C++ rapidly from scratch I doubt very much that you would match the claim on the book that '..student's learned how to write substantial programs on their first day in the classroom..' because the book just assumes you have knowledge that you probably don't have.