||New Reviews| |Software Methodologies| |Popular Science| |AI/Machine Learning| |Programming| |Java| |Linux/Open Source| |XML| |Software Tools| |Other| |Web| |Tutorials| |All By Date| |All By Title| |Resources| |About||
Keywords: C++, C, object oriented programming, gcc
Title: C++ Without Fear
Author: Brian Overland
Publisher: Prentice Hall PTR
Media: Book, CD
Verdict: Useful for the absolute beginner, but not so good for existing programmers wanting to pick up C++
Just in case the title doesn't alert you, the cuddly purple monster on the front cover should be enough to tell you that this is a C++ designed for the complete beginner. That's right, C++ for the complete beginner rather than for someone who has already programmed in another language. This is a laudable enough aim, there are no good reasons why someone new to programming shouldn't start with C++. However, as with all introductory titles for all languages, there are pitfalls to be wary of. The first is the tendency to try and hide complexity and pretend that everything is easy or straightforward. The alternative is to blind with science and leave the na´ve reader struggling to keep up. There's a happy medium which many of the best intro titles manage to reach. Unfortunately the fluffy purple monster that adorns the cover of this one is a poor omen?
The author assumes absolutely no prior knowledge of programming, so in the first few chapters he introduces both C++ and basic program constructs: data types, looping, flow control, functions etc. The text is very snappy, and good use is made of simple examples that illustrate the point. There's a fair amount of repetition in that each code snippet is broken down and examined in some detail, even if the detail only re-iterates what has already been covered. This can get fairly annoying after a while, but there are those who may find the repetition useful. In addition the text includes frequent 'interludes' which cover more advanced topics or material that is slightly peripheral to the main text.
The first nine chapters cover core material, including handling command-line arguments, file I/O, pointers, arrays etc. It's at chapter 10 that objects are first introduced properly, and this continues right through to the end of the book. Much of the material is discussed in the context of a Fraction class, which is developed as new topics, such as polymorphism, inheritance and so are introduced.
By the end of the book all of the key areas of C++ and objects have been introduced to some degree. However the book sorely lacks depth in a number of places, and this is surely a consequence of the author seeking to shield the reader from some of the inevitable complexity of computer programming. At times this attitude crosses the line and becomes downright patronising. The worst of this is in the exercises that included in each section. For example, how is this for talking down to the reader:
Write a program that reports whether a number input is divisible by 7. (Hint: if a number is divisible by 7, that means you can divide it by 7 and get a remainder of 0.).
Aside from the occasionally patronising tone, the book also sticks to fairly simple examples. Note that areas such as GUI programming and interfacing to specific operating systems or peripherals are not covered, this is after all an introductory title.
The book comes complete with a CD that contains the open-source GCC compiler and the RHIDE IDE. For some inexplicable reason these are described as being shareware tools rather than open source. The conspiracy theorists among you can speculate on the author's Microsoft connections and the inability to differentiate open source and shareware.
While the book is aimed at the beginner, mention is made that the book would serve the C programmer wanting to learn C++. However the book is pitched at such a level that any competent programmer is likely to be irritated rather than enlightened. The overly simplistic approach makes this unsuitable for existing C developers, who will want something that moves at a faster pace and goes into greater depth. The absolute beginner on the other hand, (assuming they are not put off by the occasionally condescending tone), may find the book more useful, even if they do have to switch to a more in-depth title later on.