REVIEW - C++ Programming for the Absolute Beginner

Title:

C++ Programming for the Absolute Beginner

Author:

Dirk Henkemans, Mark Lee

ISBN:

1931841438

Publisher:

Cengage Learning (2001)

Pages:

455pp

Reviewer:

Francis Glassborow

Reviewed:

February 2002

Rating:

★☆☆☆☆

A careful look at the front cover will give you a hint about the authors approach to introducing C++ to the absolute beginner (no experience required). Up in the top left corner it says: Source code for all games included on CD. It does not take long to decide that the main target readership for this book is the enthusiastic youngster who would like to get into the programming aspect of computer/video games. Read the foreword by Scott Greig (Director of Programming, BioWare) will quickly confirm that suspicion. So this review is based on the assumption that you are in that target readership.

Before you buy have a look at the table of contents. If you look carefully you will realise that the substance of the book is less than 400 pages. Now even that may seem like an awful lot of pages, but let me assure you that even covering C++ in that space requires a great deal of selectivity in what areas are covered. Look further and you will discover that the C++ bit stops at page 306, the rest is about Windows, DirectX and the final game. Accelerated C++ (Koenig& Moo) only covers the basics of C++ and assumes that the reader already knows how to program in some other language (or is a fast study) and yet that takes over 300 pages. Perhaps you are beginning to wonder. Well I think you have every right to do so. The author's coverage of many topics is superficial and often leaves out what I consider to be essential topics.

I have searched the book (no I have not read it cover to cover) for any explanation of copying. Nowhere can I find a discussion (or even a mention) of the copy constructor. When you remember that the compiler will generate one for you if you do not write one, and that for classes that own resources the compiler generated one will almost certainly be wrong, you might worry a little. Well, worry a lot because the copy constructor is used implicitly whenever you pass or return by value (intentionally, or by accident because you forgot the '&' to turn it into a reference. Of course if you are really a candidate for reading this book, this will not mean much to you. However, take my word for it, it matters.

This is just one example to give you an idea as to how the author seems to have got a gallon into a pint pot - he has left a good deal on the cutting room floor (to mix metaphors).

Then there are odd thinkos scattered through the book. One occurs on page 40 where he is writing about constants. He first describes the preprocessor mechanism and then follows immediately with the use of const for such and we read the following:

... The syntax is almost exactly the same as the syntax for declaring a #define:
const constType CONSTNAME value;

That example is explicitly wrong as well as being implicitly misleading. The correct syntax is:

const Type name= value;

Even that would cause irritation to some. But the important thing is that any type will do, not some special one. It is the const qualifier that makes the whole thing a const type. The other thing is the omitted 'equals sign'. Of course he gets it right in his actual code (which I guess was actually compiled) but how could he write (and use on the next page) a syntax that the compiler would never ever accept. Which leads me to the next page where we have the author claiming that:

#define HELLO "Hello"
int x = HELLO;

will compile. Not on any compiler that I know.

In conclusion, this book misses out on too many essential items while setting a pace that I think is quite unreasonable. It contains erroneous and misleading statements and has clearly not been adequately reviewed prior to publication. The games industry needs programmers with a solid basis in C++ (as well as ones using other languages), this book is going to turn out enthusiastic youngster's whose real knowledge will be far behind what they think they have achieved. And that is not counting the large number who will finish up confused and certain that programming is harder than it is (and it is hard enough at the best of times).


Book cover image courtesy of Open Library.