From: jimad@microsoft.com (Jim Adcock)
Subject: Re: Books on c++
Date: 16 Oct 92 21:54:58 GMT
Organization: Microsoft Corporation

In article <1992Oct6.143334.14251@gboro.glassboro.edu> berman@gboro.glassboro.edu (Mike Berman) writes:
>c++ users:
>
>	I'd be interested in your opinions on the following:
>
>	What are your favorite books on c++ and
>object-oriented programming?  In particular, I'm interested in
>books that address data abstraction, data structures, and
>object-oriented programming, but I'm interested in any c++
>books you think are worthwhile.
>
>	The reason I ask is that I'm researching the
>possibility of writing a c++ book myself.  





		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."

Teach Yourself C++ 2nd Ed, Stevens, MIS Press 1990, ISBN 1-558-28027-8
	A raw neophyte should be able to breeze through this text
	and example software in about a day. [I've heard some
	complaints about this book, but its the best
	*really simple* one I've seen.  If you don't want a
	*really simple* overview of the language, skip to the
	following texts]

[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!


Below find a "complete" list of C++ books.  I haven't updated this list
for a few months, so I know that a few books are missing.  Please send
me the below info on any C++ book that people know about not on the
below list.

[My rule for the below list is that it has to be available through
book stores and it has to say "C++" in the title]

Atkinson	0-88022-675-7	Que	Using Borland C++
Barkakati	0672227428	Sams	The Waite Group's Turbo C++ Bible
Barkakati	0-672-22800-9	Sams	Object-Oriented Programming in C++
Berry   	0-672-22619	Sams	The Waite Group's C++ Programming
Bllom		0-8306-3300-6	McGraw	The Turbo C++ Trilogy: Complete Programmers Manual
Cargill		0-201-56365-7	Addison	C++ Programming Style
Chui		0-07-881737-4	McGraw	Turbo C++ Disk Tutor
Coplien		0-201-54855-0	Addison	Advanced C++ Programming Styles & Idioms
Davis		0-201-57052-1	Addison	Hands on Turbo C++
Dewhurst	0-13-723156-3	Prentic	Programming in C++
Eckel   	0-07-881522-3	McGraw	Using C++
Ege		0-12-232930-9	Acedemc	Programming in an Object-Oriented Environment
Ellis		0-201-51459-1	Addison	The Annotated C++ Reference Manual
Ezzell		0-201-55023-7	Addison	Turbo C++ Programming An Object-Oriented Approach
Ezzell		0-201-56781-4	Addison	Borland C++ 2.0 Programming 
Ezzell		0-201-57023-8	Addison	Graphics Programming in Turbo C++
Faison		0-672-22783-5	Sams	Graphical User Interfaces with Turbo C++
Flamig				Academc	The Complete C++ Primer
Flamig		0471529036	Wiley	Turbo C++: A Self-Teaching Guide
Goodwin		1-55828-023-5	MIS	User Interfaces in C++ and Object Oriented Programming
Goodwin		1-55828-032-4	MIS	Graphical Interfaces in C++
Gorlen		0-471-52257-0	Wiley	Data Abstraction and Object-Oriented Programming in C++
Graham		0-07-023983-5	McGraw	Learning C++
Hansen  	0-302-11497-6	Addison	The C++ Answer Book
Hekmatpour			Prentic	C++: A Guide for C Programmers
Horstmann	0-471-52257-0	Wiley	Mastering C++: An Introduction to C++ and Object-Oriented Programming for C and Pascal Programmers
Hu		0-943518-86-5	MIS	C/C++ Expert Systems
JPAM					C++ at Work '89: Conference Proceedings
JPAM					C++ at Work '90: Conference Proceedings
Ladd		1-558-51076-1	M&T	C++ Techniques and Applications
Lippman		0-201-54848-8	Addison	C++ Primer second edition
McCord		0-672-30201-2	Sams	Borland C++ Programmers Guide to Graphics
Mullin		0-201-51722-1	Addison	Object-Oriented Program Design....C++
Murray		0-07-881015-9	McGraw	Borland C++ Handbook
Meyers		0-201-56364-9	Addison	Effective C++
Orlow		0-471-52257-0	Wiley	Data Abstraction and Object-Oriented Programming in C++
Pappan		0-07-881015-9	McGraw	Borland C++ Handbook
Pinson		0-201-15413-7	Addison	An Introduction to Object Oriented Programming and C++
Pinson		0-201-50930-X	Addison	The C++ WorkBook
Plexico		0-471-52257-0	Wiley	Data Abstraction and Object-Oriented Programming in C++
Pohl		0-8053-0910-1	Benjamn	C++ for C Programmers
Pohl		0-8053-0911-X	Addison	C++ for Pascal Programmers
Pohl		0-8053-6017-4	Benjamn	Turbo C++
Plum		0-911-537-10-4	PlmHll	C++ Programming Guidelines
Saks		0-911-537-10-4	PlmHll	C++ Programming Guidelines
Schildt		0-07-881535-5	McGraw	Turbo C/C++: The Complete Reference
Schildt		0-07-881610-6	McGraw	Using Turbo C++
Sedgewick	0-201-51059-6	Addison	Algorithms in C++
Shapiro		0-13-127663-8	Prentic	A C++ Toolkit
Smith		0471524115	Wiley	Reusability and Software Construction: C and C++
Smith		0-07-059180-6	McGraw	C++ for Scientists and Engineers
Stark   	0-13-723156-3	Prentic	Programming in C++
Stevens		1-558-28027-8	MIS	Teach Yourself C++
Stevens		1558511342	M&T	Fractal Programming and Ray Tracing with C++
Stroustrup	0-201-51459-1	Addison	The Annotated C++ Reference Manual
Stroustrup	0-201-53992-6	Addison	The C++ Programming Language 2nd Edition
Usenix					Usenix C++ Conference Proceedings 1988
Usenix					Usenix C++ Conference Proceedings 1990
Usenix					Usenix C++ Conference Proceedings 1991
Usenix					Usenix C++ Workshop Proceedings 1987
Voss		0-07-881737-4	McGraw	Turbo C++ Disk Tutor
Weiner		0-201-15413-7	Addison	An Introduction to Object Oriented Programming and C++
Weiskamp			Academc	The Complete C++ Primer
Weiskamp	0-471-52902-8	Wiley	Power Graphics using Turbo C++
Weiskamp	0471524662	Wiley	Object-Oriented Programming with Turbo C++
Weston		0-201-550253-	Addison	Elements of C++ Macintosh Programming
Wiener		0-201-15413-7	Addison	An Introduction to Object Oriented Programming and C++
Wiener		0-201-50930-X	Addison	The C++ WorkBook
Wilson		0201570203	Addison	C++ Programming with MacApp
Winder		0-471-92384-2	Wiley	Developing C++ Software
Newsgroups: comp.lang.c++