This page contains an annotated bibliography of books that may be helpful for
people taking advanced programming. Entries followed by a call number can be
found in the Guggenheim Library.
David R. Musser, Gillmer J. Derge, and Atul Saini;
STL Tutorial and
Reference Guide: C++ Programming with the Standard Template Library,
second edition, Addison Wesley, 2001. I have a copy of this.
An excellent book, complete and clear. Make sure you get the second edition,
which has been updated to cover the current, standard version of the STL.
Scott Meyers, Effective STL: 50 Specific Ways to Improve Your Use of the Standard Template
Library, Addison Wesley, 2001.
Once you've learned the STL, you need to learn to use it well. This book will
help you. I have a copy of this.
Bjarne Stroustrup, The C++ Programming Language, special edition (a.k.a. The Thousand
Pages of Bjarne), Addison Wesley, 2000.
Unfortunately, if you're going to be a C++ programmer, you're going to be a
language lawyer, and you might as well get the laws from Moses himself. I have
a copy of this.
Scott Meyers, Effective C++: 50 Specific Ways to Improve Your Programs and Design,
second edition, Addison Wesley, 1998
Scott Meyers, More
Effective C++: 35 New Ways to Improve Your Programs and
Designs, Addison Wesley, 1996.
You can use Effective C++ in two ways: first, if there's a chapter about
some C++ feature, you should think hard about whether or not you really need to
use that feature. Second, if you decide you do need to use it, you should read
and understand the chapter so you can avoid all the little traps that are
waiting for you.
If you can't borrow a copy of More Effective C++, you should wait until
the second edition comes out before you buy one.
Stephen Dewhurst, C++ Gotchas,
Addison Wesley, 2003.
You know how you go to the doctor for a cough or an itch - nothing serious -
and the doctor gives you a prescription for three days worth of pills or syrup
or something? And you go to the druggist and get the prescription filled, and
you take it home and you open it up? And all folded up in the package is a
really big sheet of paper covered with really small print describing all the
bad things that can happen to you if take the medicine improperly - like how
your fingers fall off if you take it on an empty stomach, or like how your
lungs will burst into flames if you take the medicine and then go to sleep too
soon afterwards? You know that sheet? This book is to C++ what that sheet is
to your medicine.
Andrei Alexandrescu, Modern C++ Design: Generic Programming and Design Patterns Applied,
Addison Wesley, 2001.
This is what I call advanced C++ programming.
David Vandevoorde and Nicolai Josuttis, C++ Templates: The Complete Guide, Addison Wesley, 2003.
I like to think of C++ as a fractal language: if you pick any part if it and
view it at any scale, you'll see another 500-page book describing how to use
that part. This is the 500-page book describing the template subsystem. If
you don't know anything about template meta-programming, you're better off
learning it from a cleanly-designed and implemented functional language (say
haskell or o'caml). If you are familiar with template meta-programming and
parametric polymorphism, this book will be frustrating because it's a compiler
killer. Except for the initial, introductory chapters, I've not been able to
successfully work through the chapters in this book without breaking all the
compilers at my disposal (various versions of g++ and the Solaris Forte
compiler). I have a copy of this.
This page last modified on 14 January 2004.