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:
C++ and Object-Oriented Numeric Computing
Author:
Daoqi Yang
ISBN:
0-387-98990-0
Publisher:
Springer
Pages:
440
Price:
Reviewer:
Francis Glassborow
Subject:
C++
Appeared in:
18-4

I have to be honest and tell you that I get irritated by this kind of book. The title starts the problem for me. You would expect (or at least I would) a book that starts with the assumption that the reader is familiar with programming and C++ in particular. You would be mistaken.

This is an introductory text on C++ aimed at scientists and engineers. That would be OK if the book tackled programming in C++ in a way that is appropriate to what I call the incidental programmer - someone who needs to program as part of their work or profession but who is a professional in some other discipline. Such people need a good clear introduction on how to express the problems of their discipline in C++. They need the full power of the high-level abstractions provided by the Standard Library (and should be told about both Boost and other specialist quality libraries).

What these people do not need is a tedious introduction to low level C++ with a lot of emphasis on its C ancestry.

Let me give you an example of what sticks in my gullet. The author wants to spend some time on operator overloading so he writes a chapter on implementing classes for complex numbers, vectors (mathematical ones) and matrices. The first of these is already fully designed and implemented in the Standard Library complete with specialisations for all the floating point types and facilities for mixing the different specialisations. What we find in the book is a partial implementation of a complex number type with doubles used for the real and imaginary parts. There is no discussion of the reasons for the design. For example, the author correctly implements

operator+
in terms of
operator+=
but give no explanation.

Later, in chapter 7 (on templates), he gives the briefest of introductions to the Standard

complex<>
types.

Perhaps I should not go on, because I clearly have no sympathy for the author's approach. From my perspective the material is too low level, too skimpy, lacks explanation of either how the implementation works or how the reader might use C++ in his/her discipline. This book is clearly ill-suited to the ordinary novice and, in my opinion, does not tackle the use of C++ by mathematicians, scientists or engineers. There is a place for a good clear introduction to numerical programming using C++ but this book is not it.