From: jimad@microsoft.com (Jim Adcock)
Subject: Re: What is a good C++ book?
Date: 30 Dec 92 20:00:52 GMT
Organization: Microsoft Corporation

In article <1hqi23INNia6@msuinfo.cl.msu.edu> byrne@cps.msu.edu (Eric J. Byrne) writes:
| Sorry, if this is a FAQ, but I don't follow this group.  I'm looking for
| a good book on C++.  

		A Short List of Preferred C++ Texts

With the size of the C++ community continuing to double about every
nine months, many C++ programmers haven't had a chance to complete
their C++ bookshelf.  The below "Short List" of C++ texts attempts
to list favorite C++ texts in many categories, in approximately the
order a new C++ programmer might wish to acquire the texts.  A few good
texts don't appear in this list because they closely overlap other,
more preferred texts in this list.  Specialized texts, not applicable 
to most C++ programmers are not listed here, primarily because I have
not read all, but also because this is intended to be a "short list."

[The following three texts tend to overlap some aspects of each other
 considerably.  If you are only going to buy one, maybe get 
 "The C++ Programming Language" since it contains a copy of
 the reference manual [minus the annotations].  If you can only
 buy two maybe get the Lippman and The Annotated C++ Reference Manual,
 because the annotations tend to help explain the design of the 
 language a lot.  But, buy all three if you can stand it!
 Each has something unique to offer.]

C++ Primer 2nd Edition, Lippman, Addison-Wesley 1991, 0-201-54848-8
	Historically, the most common text to learn C++ from.  Great 
	coverage of multiple inheritance.  Great coverage of templates.  
	Very readable.

The C++ Programming Language Second Edition, Stroustrup, 
	Addison Wesley 1991, 0-201-53992-6
	The newest text from the creator of the language.  Also includes
	the reference manual.  [But, get Ellis and Stroustrup's 
	"The Annotated C++ Reference Manual" if you want a *really*
	"complete" reference.]  Written at a fairly high level -- Lippman
	probably makes for a little easier reading.  Serious C++ 
	programmers will want to read this -- at least to get a better idea 
	of where Stroustrup is coming from.  Good coverage of templates and
	exceptions, and lots of *practical* advice on how to get C++
	to work on real projects.

The Annotated C++ Reference Manual, Ellis & Stroustrup, Addison-Wesley 1990
	0-201-51459-1.  Much more than you ever wanted to know about the
	intimate details of the language, and why.  Today's "definitive"
	answer about what is, or isn't in the language -- excepting 
	[relatively small?] changes coming from the ANSI committee.

Effective C++, Scott Meyers, Addison-Wesley 1992 0-201-56364-9
	Fifty gems of wisdom that every C++ programmer needs to
	know and follow.  Covers probably 90% of the questions that
	are asked on comp.lang.c++

The C++ Answer Book, Hansen, Addison-Wesley 1989, 0-201-11497-6
	Lots of good, small, ADT-like examples of C++ programming.
	The best reference on how to write little classes like Int,
	string, vector, etc.  Written to be used with Stroustrup's
	original 1st edition of "The C++ Programming Language" this 
	needs to be updated to correspond to Stroustrup's second edition....
	....Something Hansen has been promising forever.

A C++ Toolkit, Shapiro, Prentice Hall 1991, 0-13-127663-8
	Similar to Hansen, but at a little easier reading level.
	[I haven't decided which I like more.  Let me know which
	you prefer.  People who want to see lots of C++ programming
	examples should get both.]

Advanced C++ Programming Styles and Idioms, Coplien, Addison-Wesley 1992
	0-201-54855-0  Coplien describes how to write higher order abstractions 
	using C++.  Examples include reference counting,
	wrapper classes, objects that act as functions,
	"Self"-like and "Smalltalk"-like programming styles, etc.
	Its refreshing to have a new C++ book written at 
	a higher level!

C++ Programming Guidelines, Plum and Saks, Plum Hall, '1991'
	[actually just becoming available now?] 0-911-537-10-4
	Best [relatively] "egoless" description of how people
	in the C++ community commonly write code.  The best
	place to look for programming convention descriptions.
	Great source of practical advice.  Much more and much
	better than "C Programming Guidelines," if you've seen
	that.  

Data Abstraction and Object Oriented Programming in C++,  
	Gorlen, Orlow & Plexico, John Wiley, 0-471-92346-X
	The best reference on how to write big, "Smalltalk-like" 
	classes relying on polymorphism, a common base class, 
	dynamic type casting, etc.  Read this one *before* you
	argue on comp.lang.c++ about the "best" way to do 
	store/restore, dynamic type casting, etc.  Gorlen did
	it first -- and better than most.  [I suggest Coplien's
	book before Gorlen, lest programmers from other
	OOPL backgrounds fall into the trap of thinking the
	"Smalltalk"-like approach "is the only way to fly."

Good and Easy OOP books, which also have tie-ins to C++:

An Introduction to Object-Oriented Programming, Budd, Addison-Wesley 1991,
	0-201-54709-0.  An excellent, and pleasantly unbiased introduction
	to OOP, covering a number of languages including C++.

Object Oriented Design with Applications, Booch, Benjamin/Cummings 1991,
	0-8053-0091-0.  The most widely regarded text about what it means
	to design object oriented software.

Object Orientation: Concepts, Languages, Databases, User Interfaces,
	Khoshafian & Abnous, John Wiley 1990, 0-471-51801-8.  A survey
	of the object oriented world, and the best description of
	databases and issues of object identity.

Supplemental Readings:

USENIX C++ Workshops and Conferences
OOPSLA Conference Proceedings
The C++ Report
Journal of Object Oriented Programming
comp.lang.c++
comp.std.c++
bix
comp.object [if one has lots of time to waste]
working papers of the ANSI-C++ committee

Good Luck!