![]() |
|
Essential C++, by Stanley Lippman, is an excellent introduction to C++ for experienced programmers, a wonderfully deep book for so wonderfully brief a book, and a unique book that storms the heights of theory without exhausting the interest of the reader.
Lippman's credentials are impressive: A close Bell Labs associate for many years of C++ creator Bjarne Stroustrup, Lippman led the cfront team for two releases. Lippman is also the author of the gargantuan C++ Primer (Addison-Wesley). However, the present book, the first of a projected Addison-Wesley series "C++ in depth," is markedly different from the previous tutorial effort.
With laconic simplicity, Lippman tells the whole C++ story while standing on his head, as it were. At a time when the trend is to fatter and airier computer books, Lippman has written a classic worthy to sit next to other masterpieces of brevity and clarity such as Burnham and Hall's Prolog Programming and Applications (Halsted Press, 1985, ISBN 0-470-20263-7) and Leo Scanlon's 8086/88 Assembly Language Programming (Brady, 1984, ISBN 0-89303-424-X). Lippman explains in the preface that while working on the Firebird for the Disney/DreamWorks rerelease of Fantasia, he was in a hurry to learn the essential Perl, and appreciated the brevity of Randal Schwartz's Learning Perl. Point taken.
Even the cover of this book, a photograph of an ancient stone doorway framing a courtyard, which itself contains other doorways and windows framing other doorways and windows, conveys artistically the Tao of object programming. The only criticism I can make of the design of this book is that the cover photo is credited to a corporation, PhotoDisc, and not to the individual who captured this image of immanence on film or disc. On the other hand, the effacement of the artist might just be one more touch of Zen.
Essential C++ delivers all the essentials from the ground up with the most convincing display of "the C language doesn't even exist" writing that I've witnessed. C++ is this book's native language.
The stuff that's pretty much the same as in the C language is handled in the first chapter, "Basic C++," which covers subjects such as data types, expressions, pointers, and flow control. The second chapter, "Procedural Programming," introduces functions, including inline and template functions.
Few C++ introductory books dive into function templates at the same instant that the subject of functions is introduced , but if C++ stands on its own feet, isn't it obvious that Lippman is right and that the organic ordering of the lessons, rather than historical and evolutionary ordering pursued so often, is the correct one? Doesn't it seem easy to write this book now that you've seen it done by an expert?
The third chapter, "Generic Programming," returns to pointers to describe their arithmetic as a brief introduction to the subject of iterators. Here's the core of STL collections dispatched in the third chapter before Lippman has introduced data objects and their declaration. What a performance!
Chapter Four, "Object-Based Programming," shows what objects are down to details of declaration and use of the iostream classes. Chapter Five presents the theory of object-oriented programming. The sixth and seventh chapters cover templates and exceptions, respectively. 50 pages of solutions to the exercises, a handbook to the generic algorithms, an index and there, you're done. The rest of the mechanics that you have to know, you get from experience. The rest you might wish to know you get from studying computer science.
If you're an experienced programmer and would like to have C++ explained to you as if you were an adult, Essential C++ awaits you.
-- Jack J. Woehr
| Readability |
|
| Originality |
|
| Organization |
|
| Accuracy |
|
| Consistency |
|
| Depth |
|
| Timeliness |
|
| Editing |
|
| Design |
|
| Overall Value |
|
Explanation of ERCB rating scale: No stars = unacceptable, 1 Star = marginal, 2 Stars = average, 3 Stars = above average, 4 Stars = exceptional.