An Important Short Book for the C++ Programmer
Reviewed by Conrad Weisert, March, 2001

Andrew Koenig and Barbara E. Moo: Accelerated C++, Addison-Wesley, ISBN 0-201-70353-X, 326 pages.

Accelerated Beats Essential

A year ago I reviewed an utterly incompetent C++ book, the start of Addison-Wesley's new "C++ In-Depth Series" edited by Bjarne Stroustrup. We were puzzled and appalled that the principal designer of C++ and author of superb textbooks, would associate himself with a book so potentially harmful to future practitioners of his own programming language.

It's a relief and a pleasure to report that the latest volume in that series is a significant contribution to the huge body of C++ literature. Koenig and Moo's work is highly recommended for experienced C++ programmers. I disagree sharply with the authors, however, about its suitability for beginners.

Solving problems

Under "a new approach to C++ programming" the preface asserts:

We concentrate on solving problems, rather than on exploring language and library features. We explain the features, of course, but we do so in order to support the programs, rather than using programs as an excuse to demonstrate features.
We wholeheartedly endorse that sentiment, although we might question how "new" it is. Alas, the issue is: In object-oriented programming what do we consider a problem?

The essence of OOP is not developing complete programs but developing components or tools to be used in multiple applications. An OOD/OOP practitioner thinks bottom-up a great deal of the time.

Accelerated C++, on the other hand, takes the opposite view, devoting roughly the first half to writing executable programs before explaining constructors and private member data in chapter 9.

Container emphasis and sequence

Koenig and Moo share many other writers' preoccupation with containers and the STL, ignoring application-domain data, except for a somewhat shaky Student_info class.

While the STL offers powerful tools, an awful lot of application programming has little or nothing to do with containers. Business application programmers need to manipulate amounts of money, dates, and various kinds of composite (record) data. Scientific or engineering application programmers need to manipulate complex numbers and units of distance, volume, mass, force, time, energy, velocity, temperature, etc. Such data are ideally suited to the encapsulation and type-safety inherent in OOP.

Instead of such immediately practical examples, however, Accelerated C++ asks the reader to confront namespaces, template declarations, iterators, and, yes, other language and library features.

Not for beginners

I thoroughly enjoyed reading Accelerated C++, and enthusiastically recommend it as a second or third C++ book in a professional's library. The explanations are clear and the tone is friendly. It's an excellent and concise introduction or refresher on the STL.

I wouldn't choose Accelerated C++, however, as a course textbook. The student has to memorize too much on faith1 before he or she grasps the underlying concepts. Koenig & Moo claim that works well in their course at Stanford, but it wouldn't work for the students in my own highly object-oriented C++ courses.

1 A common complaint about Java as a teaching language, but easily avoided in C++.

Return to book reviews.
Return to IDI home page.