4. A: Recommended Reading▲
4-1. General C++▲
The C++ Programming Language, 3rd edition, by Bjarne Stroustrup (Addison Wesley 1997). To some degree, the goal of the book that you're currently holding is to allow you to use Bjarne's book as a reference. Since his book contains the description of the language by the author of that language, it's typically the place where you'll go to resolve any uncertainties about what C++ is or isn't supposed to do. When you get the knack of the language and are ready to get serious, you'll need it.
C++ Primer, 3rd Edition, by Stanley Lippman and Josee Lajoie (Addison Wesley 1998). Not that much of a primer anymore; it's evolved into a thick book filled with lots of detail, and the one that I reach for along with Stroustrup's when trying to resolve an issue. Thinking in C++ should provide a basis for understanding the C++ Primer as well as Stroustrup's book.
Accelerated C++, by Andrew Koenig and Barbara Moo (Addison Wesley, 2000). Takes you through C++ by programming topic instead of language feature. Excellent introductory book.
The C++ Standard Library, by Nicolai Josuttis (Addison Wesley, 1999). Readable tutorial and reference for the entire C++ library, including STL. Assumes familiarity with language concepts.
STL Tutorial and Reference Guide, 2nd Edition, by David R. Musser et al (Addison Wesley, 2001). Gentle but thorough introduction to the concepts underlying STL. Contains an STL reference manual.
The C++ ANSI/ISO Standard. This is not free, unfortunately (I certainly didn't get paid for my time and effort on the Standards Committee—in fact, it cost me a lot of money). But at least you can buy the electronic form in PDF for only $18 at http://www.ncits.org/cplusplus.htm.
4-1-1. Bruce's books▲
Listed in order of publication. Not all these are currently available.
Computer Interfacing with Pascal & C,(Self-published via the Eisys imprint, 1988. Only available via www.MindView.net). An introduction to electronics from back when CP/M was still king and DOS was an upstart. I used high-level languages and often the parallel port of the computer to drive various electronic projects. Adapted from my columns in the first and best magazine I wrote for, Micro Cornucopia. (To paraphrase Larry O'Brien, long-time editor of Software Development Magazine: The best computer magazine ever published—they even had plans for building a robot in a flower pot!) Alas, Micro C became lost long before the Internet appeared. Creating this book was an extremely satisfying publishing experience.
Using C++,(Osborne/McGraw-Hill, 1989). One of the first books out on C++. This is out of print and replaced by its second edition, the renamed C++ Inside & Out.
C++ Inside & Out,(Osborne/McGraw-Hill, 1993). As noted, this is actually the second edition of Using C++. The C++ in this book is reasonably accurate, but it's circa 1992 and Thinking in C++ is intended to replace it. You can find out more about this book and download the source code at www.MindView.net.
Thinking in C++, 1st Edition, (Prentice Hall, 1995). Winner of the Software Development Magazine Jolt Award for best book of 1995.
Thinking in C++, 2nd Edition, Volume 1, (Prentice Hall, 2000). Downloadable from www.MindView.net.
Black Belt C++: the Master's Collection, Bruce Eckel, editor (M&T Books, 1994). Out of print (often available through out-of-print services on the Web). A collection of chapters by various C++ luminaries based on their presentations in the C++ track at the Software Development Conference, which I chaired. The cover on this book stimulated me to gain control over all future cover designs.
Thinking in Java, 1st Edition, (Prentice Hall, 1998). The first edition of this book won the Software Development Magazine Productivity Award, the Java Developer's Journal Editor's Choice Award, and the JavaWorld Reader's Choice Award for best book. On the CD ROM in the back of this book, and downloadable from www.MindView.net.
Thinking in Java, 2nd Edition, (Prentice Hall, 2000). This edition won the JavaWorld Editor's Choice Award for best book. On the CD ROM in the back of this book, and downloadable from www.MindView.net.
Thinking in Java, 3rd Edition, (Prentice Hall, 2002). This edition won the Software Development Magazine Jolt Award for best book of 2002, and the Java Developer's Journal Editor's Choice Award. The new CD ROM in the back of this book now includes the first seven lectures from the 2nd edition of the Hands-On Java CD ROM.
The Hands-On Java CD ROM, 3rd edition (MindView, 2004). Over 15 hours of Bruce's lectures and slides covering the basics of the Java language, based on Thinking in Java, 3rd Edition. Available only at www.MindView.net.
4-1-2. Chuck's books▲
C & C++ Code Capsules, by Chuck Allison (Prentice-Hall, 1998). An in-the-trenches guide for practical C and C++ programming. Thoroughly covers the 1998 ISO C++ standard, especially library features, and serves as a bridge to more advanced topics. Based on Chuck's well-known column in the C/C++ Users Journal.
Thinking in C: Foundations for Java & C++, by Chuck Allison (not a book, but a MindView, Inc. Seminar on CD ROM, 1999, bundled with Thinking in Java and Thinking in C++, Volume 1). A multimedia course including lectures and slides in the foundations of the C Language, to prepare you to learn Java or C++. This is not an exhaustive course in C; only the necessities for moving on to the other languages are included. An extra section covering features for the C++ programmer is included. Prerequisite: experience with a high-level programming language, such as Pascal, BASIC, FORTRAN, or LISP.
4-2. In-depth C++▲
Books that go more deeply into topics of the language, and help you avoid the typical pitfalls inherent in developing C++ programs.
Large-Scale C++ Software Design, by John Lakos (Addison Wesley, 1996). Motivates and presents in-the-trenches techniques for large C++ projects.
Effective C++, 2nd Edition, by Scott Meyers (Addison Wesley, 1997). Classic book of techniques to improve C++ designs. Codifies many of the things that programmers have to learn the hard way.
More Effective C++, by Scott Meyers (Addison Wesley,
Continuation of Effective C++ (above). Another C++ classic.
Effective STL, by Scott Meyers (Addison Wesley, 2001). Extremely practical, in-depth coverage of how to use the STL. Contains expert advice found nowhere else.
Generic Programming and the STL, by Matt Austern (Addison Wesley, 1998). Explores the conceptual underpinnings of the design of the STL. Heavy on theory, but imparts a visionary look into the design of generic libraries.
Exceptional C++, by Herb Sutter (Addison Wesley, 2000). Leads the reader through a progression of problems and their solution. Gives easy-to-remember advice for solid design of modern C++ programs.
More Exceptional C++, by Herb Sutter (Addison Wesley,
Continuation of Exceptional C++ (above).
C++ FAQs, 2nd Edition, by Marshall Cline, Greg Lomow,
and Mike Girou
(Addison Wesley, 1998). Nicely-structured compendium of common C++ questions and their answers. Covers a broad range of topics, from beginner to advanced.
C++ Gotchas, by Stephen Dewhurst (Addison Wesley, 2002). Contemporary catalog of easy-to-discover but hard-to-remedy C++ quirks by a widely-renowned recognized C++ expert.
C++ Templates, The Complete Guide, by Daveed Vandevoorde and Nicolai M. Josuttis (Addison Wesley, 2002). The first and only book devoted completely to templates. The definitive reference.
Standard C++ iostreams and Locales, byAngelika Langer and Klaus Kreft (Addison Wesley, 2000). The most in-depth coverage of iostreams available. Plumbs the depths of streams implementation and idiomatic use. A handy reference as well as tutorial.
Design & Evolution of C++, by Bjarne Stroustrup (Addison Wesley, 1994). Traces the complete history of C++, documenting the design decisions that were made along the way. If you want to know why C++ is the way it is, this is the book with the answers, written by the designer of the language.
Modern C++ Design, by Andrei Alexandrescu (Addison Wesley, 2001). The standard text on policy-based design in C++. Filled with practical, advanced uses of templates.
Parallel and Distributed Programming Using C++, Cameron Hughes and Tracey Hughes (Addison Wesley, 2004). Thorough and readable coverage of all aspects of concurrency, including basic concepts, threads, and multi-processing. For beginners and experts alike.
Generative Programming, by Krzysztof Czarnecki and Ulrich Eisencecker, (Addison Wesley, 2000). Ground-breaking book on highly-advanced C++ techniques. Takes software automation to the next level.
Multi-Paradigm Design for C++, by James O. Coplien (Addison Wesley, 1998). Advanced text showing how to harmonize the use of procedural, object-oriented, and generic programming for effective C++ designs.
4-3. Design Patterns▲
Design Patterns, by Erich Gamma et. al. (Addison Wesley,
The revolutionary book that introduced design patterns to the industry. Catalogs a selection of design patterns with motivation and examples (using C++ and a little SmallTalk).
Pattern-Oriented System Architecture, Volume 1: A System
of Patterns, by Frank Buschmann et al (John Wiley & Son, 1996).
Another look at design patterns in practice. Introduces new design patterns.