ACCU Home page ACCU Conference Page
Search Contact us ACCU at Flickr ACCU at GitHib ACCU at Facebook ACCU at Linked-in ACCU at Twitter Skip Navigation

Search in Book Reviews

The ACCU passes on review copies of computer books to its members for them to review. The result is a large, high quality collection of book reviews by programmers, for programmers. Currently there are 1949 reviews in the database and more every month.
Search is a simple string search in either book title or book author. The full text search is a search of the text of the review.
    View all alphabetically
Title:
Problem Solving in C++
Author:
Angela Shiflet&Paul Nagin
ISBN:
0-534-40005-1
Publisher:
Thomson
Pages:
1070pp
Price:
£35-99 (no
Reviewer:
Frank Antonsen
Subject:
beginner's c++
Appeared in:
17-1
I have some problems with this book. On the one hand, it is written in an easy to follow language and contains valid points on how to structure programs. It also contains some interesting background information and exercises.

However, the book is more about C with I/O streams added than it is about C++. Even though classes are introduced early on (in chapter 3, on page 151), they are rarely used for anything but the most trivial encapsulation. I would be able to accept this in a beginner's book if there were not so many such oddities and omissions.

Let me give some examples.

For the first 10 chapters, spanning two thirds of the book, the only character data type introduced is char. Then in chapter 11, the first 40-odd pages are used to discuss char*, before 8 pages are devoted to the standard string class. Why? The fundamental character data type is after all not the individual character, just like the basic numeric data type is not the digit. Ironically, the authors finish chapter 11 with saying that people should use std::string instead of the old C-strings!

Throughout the book the authors prefer to use the C-functions exit or even assert to terminate a program upon error. Why do they not use exceptions?

Chapter 10 introduces arrays, and finishes off by introducing the vector class from STL. They even give a (very short) introduction to templates, which they then never use. The final chapters of the book implement some basic data structures. This would be perfectly acceptable if it was a way of demonstrating how templates are used in STL by providing some simple implementation of the container. Instead they even fail to mention that the STL contains (far superior) implementations of these containers.

Furthermore, this is a book that goes to great lengths to teach safe programming methods. Why do they then almost invariably define global constants with #define instead of using const int

or
 string
etc, which would give them type safety as well?

In summary, the authors seem to possess only a rudimentary knowledge of modern C++. As I said above, this is really a book on C with C++'s iostream library added. Not recommended.