Thinking in C++ - Volume 2
Thinking in C++ - Volume 2
Date de publication : 25/01/2007 , Date de mise à jour : 25/01/2007
4. A: Recommended Reading
4.1. General C++
4.1.1. Bruce's books
4.1.2. Chuck's books
4.2. In–depth C++
4.3. Design Patterns
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,
1995)
Continuation of Effective C++ (above). Another C++ classic.
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,
2001).
Continuation of Exceptional C++ (above).
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.
(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,
1995).
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).
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.
Another look at design patterns in practice. Introduces new design patterns.