ACCU Home page ACCU Conference Page
Search Contact us ACCU at Flickr ACCU at GitHib ACCU at Google+ 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 1918 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:
Object-Oriented Software in ANSI C++
Author:
Michael Smith
ISBN:
0 07 709504 9
Publisher:
McGraw-Hill
Pages:
474pp
Price:
£24.99
Reviewer:
Yechiel M. Kimchi
Subject:
beginner's c++; object oriented
Appeared in:
12-3
The name of the game in this book is confusion. The title mentions ANSI-C++ and I have decided to believe the author's claim that he had compiled his examples with Borland C++ Builder. I shall leave open the question of why he was using
#include
instead of
or
.

Here are some additional confusing examples

  • Target readers. The back cover claims 'Assumes no previous knowledge of programming.' while the preface states 'This book is aimed at programmers who wish ...'
  • Teaching style and coding. The first chapter that introduces C++ has the following lines of code (p. 40)
    std::cin>>std::resetiosflags( std::ios::skipws ); 
    while(std::cin>>ch, !std::cin.eof()){ 
      std::cout<
    1. The smallest problem here is the fact that operator! had not even been introduced.
    2. std::cin
      is used all over the book. Nowhere could I find the directive using
      namespace std;
      not even in the chapter dealing with namespaces.
    3. The usage of
      eof()
      is not a bug here, only because
      ch
      is of type
      char
      . I easily found a similar piece of code which was buggy (p. 402)
      int num; 
      while(cin>>num, !cin.eof()) { 
          // whatever 
      }
      1. This causes an infinite loop if the input is not an integer.
      2. Why not
        std::cin
        ? Because here,
        cin
        is a local variable!
      3. The type of
        cin
        is
        istrstream
        , a type designated by the standard as depreciated.
Confused? So is the author of this book. However, while the author is able to write simple programs that will compile and may correctly run on some (definitely not all) input, the confused reader will hardly be able to acquire even this low-level skill. Not Recommended.

More examples of errors can be found on my pagehttp://www.cs.technion.ac.il/users/yechiel/CS/BadBooksC+C++.html#OOSCPPsmith