Rating: - The Fastest Way to C++
This book is the fastest way to get up to speed in programming in C++. No time is wasted. The reader is plunged immediately into writing C++ programs. There are no digressions into C, simply real-world problem-solving using the Standard C++ Library. Constructors, destructions, vectors, pointers, arrays, and memory management are all covered - in context - not as separate, abstract concepts. If you're trying to learn C++ programming, don't waste your time with other books. This is the one to buy.
Free C++ resources, such as compilers and the libraries are available for free at [...]
Rating: - One of the best programming books I've read.
The book is surprisingly small, but the text is very well-written. It's concise, to the point, and remarkably thorough. It is written so that you dont even need a C background, and doesn't actually explain how to create your own class until the middle of the book. It's a very nice presentation.
I am very proficient in C, and was impressed on how many "tiny details" the authors were able to weave into the text. For example, they explain why three question marks should not appear in your source code (not even in string literals). I had never heard this before, but it is an example of the thoroughness the book provides.
The book is not exhaustive, and skips a lot of the C++ language -- on purpose as it immediately explains.
A great book. Highly recommended.
Rating: - Great fast intro to C++ for programmers
As someone who knows "how to program" already, and knows several languages (C, Perl, PHP, Java, some Lisp and Forth, and enough Bash to get by), I wanted a book that would simply teach me "how C++ works", without reteaching me C or dragging on with explanations of what an "if" statement does and when you should use it.
I'm very happy with the book -- Chapter 0 (the first -- it gets bonus points with me for numbering this way) starts with a "Hello, world!" program, and by Chapter 2 (the third) it's already dealing with complex control structures. It dives right in to the STL, without explaining it. We simply learn that a vector holds a set of items in a certain order, and when it's fast and when it's slow. The book never burdens you with knowledge until you need it. (In comparison, another C++ book I've read, which will remain unnamed to avoid my own embarrassment, devotes entire large chapters to covering basic program structure, input/output, variables, arithmetic, if statements, for statements, and so on. It probably took the better part of a dozen chapters before they introduced useful STL types like vectors. This book just brings the concepts in when they're useful.)
I would recommend this book to anyone who already knows other languages and simply wants to pick up C++, or someone who doesn't know programming yet but can pick up logical concepts quickly. I would not recommend this book to someone who doesn't know how program and doesn't have that logical mind, because although it explains how things like control structures work, it doesn't beat them into the ground. (Having helped out with some Computers 1 classes at my high school, I know that some people naturally understand things like "if" and "while", and others struggle with applying the concepts even though they can perfectly explain what the control structures do.)
Rating: - Innovative approach for teaching C++
Accelerated C++ uses an innovative approach for teaching C++. When I learned C++, we were taught all the details of defining C++ classes and constructing objects with no motivation or good examples of how to use C++ classes and objects. This book on the other hand uses classes from the Standard C++ Library as examples to teach the use of objects. Readers are able to start writing programs using the Standard C++ Library classes almost immediately.
The details of defining classes are not addressed until half way through the book. By this point the reader is comfortable with using objects and has seen several examples of useful classes. This approach is similar to what is often used to teach Java programming. I believe that this is the reason that Java programmers gain a deeper understanding of object oriented programming much more quickly than most C++ programmers.
I am now using this book to teach an in-house class in C++ programming for experienced C programmers. Everyone in the class has had good things to say about the book.
Rating: - My Two Cents and a Cup of Coffee
Readers of this review should be easily able to discern if their expertise enables them to discard any warnings given here, or if they are in the class of potential users of this book who require the type of warning provided. With that proviso,let us continue.
I have perused a few books of C++ instruction (i.e., examined them carefully) and I must say this one is among the most user-friendly of them; it has enabled me to dip into the previous ones I had tried earlier and understand what those other texts were trying to say. Those other texts got me so confused that I sometimes wondered if I could remember my name, for they were not so well organized and seemed to leave out important pedagogical steps.
This book has enabled me to avoid most such frustrations, and I now have the firm belief that the primary obstacle to learning this programming language is not an intellectual one--it is nowhere near as tough intellectually as your average advanced mathematics or physics text--the obstacle is overcoming frustration. Even this excellent text will provide the diligent reader with plenty of frustration.
For example, at the relatively naive level of this reviewer, the programming example in chapter 4 required me to flip back and forth to find the code for several functions and header files. After finally getting a successful compilation I ran the program and saw a blank board.
I had no idea what was going on. I was confused and even managed to convince myself that the code on page 70: while (read(cin, record)), etc., meant that the program was trying to read a text file named "record" which I needed to create in accordance with the statement on page 61, where the authors say:
"Such a file might look like
Smith 93 91 47 90 92 73 100 87
Carpenter 75 90 87 92 93 60 0 98 "
The text leads one to believe that a file is the input to this program.
After some floundering around I finally got it through my thick skull (so far as C++ is concerned, anyway) that the program on page 70 required CONSOLE input and I needed to type in the example on page 61, with ENTER at the end of each line and the appropriate end-of-file indication at the end. This made the program run and I saw the correct output. An understanding of basic file input/output would allow a reader to generate such a file, but at my level of knowledge this was not yet possible.
Pedagogically it would have been very useful for beginners on my level to have had all the files listed in final form in one place, and a more detailed statement of instructions for what the actual program input is. Unfortunately, my experience is that most C++ books are inappropriate for self-study because of the kinds of inadequacies presented here. Despite these criticisms, in my opinion--by comparison with what I have seen--this book is worth 5 stars.
I recently acquired Prata's C++ Primer Plus and it is a thorough but lengthy text, but one which gives instruction on iterators and other useful concepts much later than in the text at hand. Prata, the text under review, and the manual provided with one's C++ software, should give the beginner all that is needed for acquisition of basic C++ knowledge via self-study, in my opinion.
With the help of Koenig and Moo I am beginning to see the sheer elegance of the C++ programming language--a new experience for me; I never thought I would think of a programming language in this way. There is intellectual beauty in this book!
Therefore I recommend this text heartily. Just remember that your primary obstacle to learning C++ is frustration, not lack of smarts on your part. Also, if I may be so forward as to offer a bit of advice to the novice, learning a programming language is an "experimental science." If you're not sure of something, you have to write small programs and learn what the code is doing via example and make minor variations to solidify your understanding. For example, it seems that initialization of dynamically allocated vectors isn't spelled out in an obvious way in C++ texts, from what I can tell.
std::vector w;
followed by, say, w[0] = x;
doesn't work but
w.push_back(x);
does -- I had to experiment to find this out. If there is another way, I haven't discovered it yet at my level of development.
Without this fine text--despite the frustrations mentioned above -- I would never have been able to achieve a successful entry into C++. Thank you Koenig and Moo!
|