Blag

He's not dead, he's resting

The C++ Books List

The current “C++ books worth reading” list is as follows:

Learning

  • If you can already code, work your way through the next section in order. If you can’t, don’t learn C++ as your first language.

General reference

  • “The C++ Programming Language”, 3rd Ed, Bjarne Stroustrup.
  • “The C++ Standard Library: A Tutorial and Reference”, 1st Ed, Nicolai M. Josuttis.
  • “The C++ Standard Library Extensions: A Tutorial and Reference”, 1st Ed, Pete Becker. This covers TR1, which isn’t fully implemented in most compilers yet.
  • “C++ Templates: The Complete Guide”, 1st Ed, David Vandevoorde and Nicolai M. Josuttis.
  • “Standard C++ IO Streams and Locales: Advanced Programmers Guide and Reference”, 1st Ed, Angelika Langer, Klaus Kreft.

Using C++

  • “Effective C++: 55 Specific Ways to Improve Your Programs and Designs”, 3rd Ed, Scott Meyers.
  • “Effective STL: 50 Specific Ways to Improve Your Use of the Standard Template Library”, 1st Ed.
  • “More Effective C++: 35 New Ways to Improve Your Programs and Designs”, 1st Ed, Scott Meyers. Somewhat dated in parts.
  • “Modern C++ Design: Generic Programming and Design Patterns Applied”, 1st Ed, Andrei Alexandrescu. Note that using any technique mentioned in this book is liable to get you kicked in the face, but being aware of said techniques is useful.

Software Design

  • “Design Patterns: Elements of Reusable Object-Oriented Software”, 1st Ed, Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides. Better known as “Gang of Four”. Not C++ specific.
  • “Patterns of Enterprise Application Architecture”, 1st Ed, Martin Fowler.
  • “xUnit Test Patterns: Refactoring Test Code”, Gerard Meszaros.
  • “Patterns for Parallel Programming”, 1st Ed, Timothy G. Mattson, Beverly A. Sanders, Berna L. Massingill.

Behind the Scenes

  • “Inside the C++ Object Model”, 1st Ed., Stanley B. Lippman.
  • “The Design and Evolution of C++”, 1st Ed, Bjarne Stroustrup.

Unix

  • “Advanced Programming in the Unix Environment”, 2nd Ed, W. Richard Stevens, Stephen A. Rago. C, not C++.
  • “Linux System Programming”, 1st Ed, Robert Love. Again, C.

Algorithms and Tools

  • “Mastering Regular Expressions”, 3nd Ed, Jeffrey E. F. Friedl. No mention of C++.
  • “Synchronization Algorithms and Concurrent Programming”, 1st Ed, Gadi Taubenfeld.
Advertisements

3 responses to “The C++ Books List

  1. Victor A. Wagner Jr. May 14, 2008 at 8:56 pm

    I think you’re wrong about not learning C++ 1st even if you don’t program yet. You left our “Accelerated C++”
    My list is at
    http://rudbek.com/books.html

  2. Ciaran McCreesh May 14, 2008 at 9:04 pm

    The problem with C++ as a first language is that it forces you to know way too much about the language and about programming in general before you can write sane code. That’s a strength for serious programmers, but for novices there are much better choices.

    I’ve heard good things about “Accelerated C++”, but I’ve not read it myself. I learned C++ from “The C++ Programming Language”, and never really read an introduction book.

  3. Till July 20, 2008 at 5:10 pm

    A few comments, now that I’ve finally had a chance to read some of these:

    “Effective C++” is an excellent guide to C++ idioms. Clear, concise explanations.

    I suppose your ‘recommendation’ of “Modern C++ Design” is about reading other people’s code. I only flipped through it, but it seems to be mostly a long list of stupid template tricks, the kind of clever nonsense that you should never do unless absolutely necessary.

    GoF is mandatory as a reference, but perhaps not the best way to *learn* design patterns.

    “Patterns for Parallel Programming” is extremely specific to parallel/distributed computation, and focuses mainly on the low-level details. There are no larger patterns for building parallel systems, and this book would probably not be the best place to start if you’re completely unfamiliar with threading, synchronization, etc.

    The Fowler book is quite good, but again fairly specific to its topic of “enterprise” systems, as defined in the preface.

    Finally, “xUnit Test Patterns” is superb. If you think unit testing/test-driven development is a good idea but aren’t quite sure how to make it work in the real world of complex applications, read it.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s