Rating: - waste of money
I bought the book and when I put in the CD I was unable to use the program because I have to wait for the compiler to be emailed to me or mailed to me. I bought the book 2 weeks ago and still have not received the information so I can learn the program.
Rating: - Somewhat dissapointed...
I'm afraid I have to disagree with the review saying that this was a good way to start programming in C++, and makes no assumptions on the level of experience of the reader.
I've been programming a while, and just wanted the book as a handy guide since I don't do much in C++, but I will be in the future.
Instead of my usual "flick to the relevant section" treatment that I often do with new programming books, I decided to take the sensible approach, and work my way through the book as it was meant. Despite this, I found several concepts to be presented in an unhelpful order, and one-line examples being given, without the surrounding context, which is needed to test out and implement the new ideas.
I'll just give one example; in hour three 'enumerated constants' are introduced. There is no mention of the 'simple' method that effectively just creates several constants at once, but instead shows only a single line of code, which creates a new 'enumerated data type'.
Without any surrounding code a new learner, having just learned how to define ordinary constants, might try long and hard to get this idea to work, only to fail to achieve what seems like a simple idea.
Perhaps after reading hour 7, when data types are introduced and the idea of creating your own is mentioned, might the reader flick back and start to consider the implication of the code read much earlier.
Overall, a good attempt to cover most core topics in C++ in a hurry (24 hours is rushing it a bit whatever was written, if you ask me!), but I'm not sure it should be a first C++ book, and I could not recommend it as a book for someone with no previous programming knowledge..
Rating: - Way to start C++ programming
This book doesn't assume you have experience in programming at all. It explains things in good details with great examples, using a clear language. If you have the time and the will to learn C++, this book is the way to go.
Rating: - Some serious pedagogical errors
Like all of the other "teach yourself in 24 hours" books, this one can be used to learn the fundamentals of C++ in a short time. Quite naturally, in keeping with the format, all you can achieve using this book is a basic understanding of the language, and in C++ that is a problem. It is a very hard language to write well and the simple, demonstrative programs in this book will serve to only get you started. Therefore, no one should ever use it for more than just an introduction. If your goal is to code in the language, then you should follow it up with something containing a more thorough coverage.
I understand that errors will always creep into a book, so it does not surprise me when I find them. However, there are some errors/omissions in this one that are more serious than the simple typo. On page 72 there is the statement, "Tabs, spaces and new lines (known as whitespace) have no effect on the program, although whitespace can make the program easier to read." This is of course wrong, and on page 367 there are examples of bugs that whitespace in a macro can generate. Some of the most subtle bugs known to programmers are due to whitespace and such a blanket statement is one that can really confuse the beginner.
When the logical operators && and || are explained, there is no mention of their being conditionally evaluated. This is something that all beginners must be told, as it can also lead to some of the most difficult bugs to catch. It is such a problem that in Java pairs of the logical operators (& and &&) (| and ||) are defined, where the single symbol operator is not conditionally evaluated. I consider this a major flaw in the book.
Some other, less critical errors are:
page 29, "The function main always returns an int." Not true since you can define
void main()
page 115, "The general form of the switch statement is
switch(expression)
. . . .
(where) expression is any legal C++ expression . . . " In fact, the expression must return an integral type.
Page 358 "Static data is scoped to the class. It therefore is available only through an object of the class . . . " Static data can in fact be initialized before the program runs and accessed using the class name, an action demonstrated on page 332. No object is required.
On page 342, there is the statement, "You will often hear novice C++ programmers complain that friend declarations `undermine' the encapsulation so important to object-oriented programming. This is, frankly, nonsense." To date, I have never heard a novice programmer say such a thing. However, I have read many statements by object-oriented experts who argue that friend declarations in C++ are a breaking of the principles of encapsulation. This statement is disingenuous at best.
The most serious mistake that an educator can make is to fail to (or improperly) inform the early learner about problems that can occur due to non-obvious features of a programming language. While the authors do almost everything right, a few errors of that type can severely reduce the quality of a book. That has happened here, hence my lower rating of the book.
Rating: - Got me started
I'm not a software type although I do have some background in programming. I wanted to learn C++ to build my own applications for my computer, but I wanted the learning curve to be reasonable so that I can do it on my spare time. I also wanted to learn programming C++ using my Visual C++ compiler. I purchased this book and Deitel's book "Introduction to MFC" which gets into using Microsoft Foundation Class. You can purchase both books from Amazon for under $45. The two books complemented each other perfectly, and in about 8 weeks spending about an hour each day, I can program applications using my compiler. These two books were perfect for a novice like myself. What was nice was that both books came with a working compiler and all the examples were available either as a download or was available on the CD-ROM. The book seems to give me all the command reference for ANSI and ISO C++ compiler which is a big plus if you also program for UNIX/LINUX systems. What these books doesn't do is that it won't teach you the more sophisticated operating system related things like how to access a disk or other I/Os. If you are trying to learn this level of programming, you need to move up to a higher level books such as the "Win32 System Programming: A Windows(R) 2000 Application Developer's Guide (2nd Edition)" by Johnson M. Hart. But to get started on C++ programming, after many false starts over the years, these two books did it for me.
|