The Liberty Software C++ Bookshelf

(Please be patient the bookself is just filling up.)

Recommended books by Liberty Software and Jon Kalb.
We welcome Comments on Books

A note on terms: I use the term Classic C++ to refer to C++ as defined by the ARM and the term Modern C++ to refer to C++ as defined by the ANSI/ISO C++ Standard.

No bookshelf would be complete without magazines.


The Standard

Information Technology - Programming Languages - C++

ANSI Document ISO/IEC 14882-1998

Only available as a two and a half Megabyte PDF document from ANSI.

This document is the word of the ANSI/ISO C++ Standard Committee.

750 pages

This is the definitive definition of Modern C++. It is not easy reading and is not recommended for beginners.


The most important two words about C++ books are Addison-Wesley (Addison Wesley Longman, Inc.). They have the best authors and the best books on C++.


Exceptional C++: 47 Engineering Puzzles, Programming Problems, and Exception-Safety Solutions,

by Herb Sutter

Addison-Wesley

300 pages

Part of Bjarne Stroustrup's C++ In Depth Series

Based on the Guru of the Week problems.

This book is not out yet, but it is already clear that it is a keeper.

Sutter has been posting a series of questions to comp.lang.C++.moderated for quite some time now. Who ever submits a "complete" answer to the problem first is awarded the title Guru of the Week. This book is based on this series of problems and their answers, but has been updated to reflect the Standard.

The name of the book reflects the fact that the challenges involved in writing exception-safe code have been the subject of several of the problems. But the range of problems covers the cutting edge topics that C++ pioneers and master are discussing right now. Subjects include:

  • Generic programming and how to write reusable templates
  • Exception safety issues and techniques
  • Robust class design and inheritance
  • Compiler firewalls and the Pimpl Idiom
  • Name lookup, namespaces, and the Interface Principle
  • Memory management issues and techniques
  • Traps, pitfalls, and anti-idioms
  • Optimization
Scott Meyers's Effective C++ Series published by Addison-Wesley (of course)
Effective C++: 50 Specific Ways to Improve Your Programs and Designs,

Second Edition

256 pages (grin)

More Effective C++: 35 New Ways to Improve Your Programs and Designs,

318 pages

Effective C++ CD: 85 Specific Ways to Improve Your Programs and Designs,

In my opinion, these are the most important C++ books on the market today. If you don't own them, do not hesitate to get them. The CD-ROM format adds extra material, including several magazine articles and an annotated list of books for further reading. I only ordered the CD after hearing others rave about it. (I foolishly thought that I didn't need it since I had both books.) The CD literally sets the standard for on-line presentations. The attention to detail is staggering.

The books are divided into "items" which you could just memorize and use as a set of rules to follow when coding and designing, but you would be missing out. The real value of the books is the discussion of the reasoning behind the rules.

When you have mastered the material in these books you will have your black belt in C++. And you will have a wonderful time doing it.

The Second Edition of the first book is, as you would expect, more up-to-date than the first edition, but, unlike my recommendation for Stroustrups' The C++ Programming Language, I don't don't think having the latest edition is critical. (I did run out and buy it even though I already had the first edition. But that just shows you how big a fan I am of what Meyers has done in these books.)

The C++ Programming Language,

Third Edition

by Bjarne Stroustrup

Addison-Wesley

900 pages

Be certain to get the third edition. This edition is extensively rewritten from the second edition to incorporate Modern features.

Although this book assumes no previous knowledge of C++ it is a pretty challenging book for beginning programmers. I recommend it to individuals that have some background in programming, C, and/or C++.

The wonderful thing about this book is that it thoroughly incorporates Modern features. They are not just covered, but they are covered when and where they should be. They were not added at the end as in recent editions of several C++ books.

This book is also the book that I am currently using as a reference. I suspect that this might change as more Modern C++ books become available, but Stroustrup coverage is so wide and detailed that it makes a very good and up-to-date reference.

Design Patterns: Elements of Reusable Object-Oriented Software,

by Erich Gamma, Richard Helm, Ralph Johnson, and John Vlissides aka The Gang of Four

Addison-Wesley

400 pages

OK, you caught me. This is really a C++ book. Well at least not exclusively. It is valuable to anyone developing object-oriented software in any language. But one can hardly be a self-respective C++ developer today, without this book.

This book starts with an introduction to design patterns and what they are about and the rest of the book is a catalog of about two dozen patterns.

Since one of the purposes of developing design patterns is to allow us to communicate with others about specific ideas, it is very important that we use the same terms for same patterns. This book has become the bible for design patterns discussions and as such is a must have for anyone that wants to follow the conversion.

C++ Programming Style,

by Tom Cargill

Addison-Wesley

230 pages

Although this book is not Modern, it was published in 1992, it is still a wonderful book.

I'm not terrible fond of the name of this book because I don't think the content has that much to do with style. And I am not using the word style in a derogatory way when I say this. I very much appreciate the value of style in programming. I just don't think that this books is about style as much as about analysis of design.

There are nine chapters in this book and each one starts with a flawed code example. The balance of each chapter is the process of analysing the code examples, finding the flaws, and rewiting to improve. This is a wonderful way of learning concepts in context.

Working through these nine chapters will make any intermediate programmer a better programmer. What more can I say? What more can you ask for?

Taligent's Guide to Designing Programs: Well-Mannered Object-Oriented Design in C++

by Taligent

Addison-Wesley

200 pages

As far as I know this book is unique in that it is really the publication of a company's coding standards.

Given that Taligent as an entity is pretty much history, this book may be hard to get. It is; however, publishedby AWL so it may stay in print for awhile. Let's hope so.

Coding conventions are notorious for inciting passions. You know what they say, never discuss religion, politics, or coding standards in a social context. So, of course, I don't agree with everything here, but having such a well-thought-out standard and having it public is a treat.

C++ How to Program,

Second Edition

by Deitel & Deitel

Prentice Hall

1130 pages

This is the book that I am using as a text in my class on Object-Oriented Programming/C++ class at Golden Gate University.

I can give this book a qualified recommendation. It is approachable as a first book in programming, C++, or Object-Oriented design. I would be happier with it if it had a greater emphasis on the Modern features of C++. These features are, for the most part, covered, but the are introduced late and not well developed.

We welcome Comments on Books

<Liberty Software Technical Bookshelf>

<Liberty Software Bookshelf>

<Liberty Software Home>

<amazon.com>


Liberty Software Webmaster (webmaster@libertysoft.com)