REVIEW - The C++ Standard Library from Scratch

Title:

The C++ Standard Library from Scratch

Author:

Pablo Halpern

ISBN:

0789721287

Publisher:

Que Pub (1999)

Pages:

351pp

Reviewer:

Francis Glassborow

Reviewed:

April 2000

Rating:

★★☆☆☆

When I first heard of this title my instinctive reaction was that it would be another waste of trees. For those that need an authoritative tutorial and reference for the C++ Standard Library The C++ Standard Library by Nicolai Josuttis will be very difficult to beat. I am telling you this so that you will know the mind set I had when I picked this book up.

I do not think it is entirely my fault that I started with this expectation, I think the title has a lot to answer for. This is not a definitive tutorial nor is it any form of reference. On the other hand neither the author not the publisher claims that it is. The publisher classifies it as 'Beginning' level but mars that by saying that it covers 'the ANSI/ISO C++ Standard Library'. It does not. What it does is act as a good introduction to using the C++ Standard Library for relatively inexperienced C++ programmers.

The text is based round developing a small application (a small Personal Information Manager, TinyPIM). This means that various features of the Standard Library are introduced as solutions to design and implementation problems. I am a fan of this type of tutorial approach and I think the author has executed it well for his target readership. By the time a reader has worked through the text they will be motivated to buy an authoritative text such as that by Josuttis. I would hope they would then progress to adding Matt Austern's Generic Programming and the STL to their programming books.

Now let me warn you that I disagree with some aspects of the text. I do not like the use of friend to provide such things as insertion and extraction operators. There are several other style issues of that kind (you know that I prefer the rigid placement of cv qualifiers to the right of the thing they qualify).

I think my other complaint is a little more serious, I strongly object to seeing code littered with include guards that use lowercase letters. There is a de facto standard for include guards and the sooner new programmers get in the habit of using it the easier they will find writing code that conformsto the industry norms. The industry standard is not arbitrary but based on experience and it works.

My last caveat is the author's use of specifically MSVC++ #pragmas. He carefully provides those as conditionally inclusions - quite unnecessary as #pragmas are designed so that they do not need to be surrounded with #ifdef...#endif. Worse is that this provides special support for a single product.

In conclusion, this is a fundamentally good text for its target readership. However, it is marred by some of the detail. It achieves what it set out to do but along the way it exposes the novice to some bad or debatable coding habits.


Book cover image courtesy of Open Library.