//z 2011-06-25 17:53:49@is2120
各阶段 c++ 书籍 推荐 经典 书单 算法 数据结构
原文由 wanfustudio 发表于csdn论坛
Beginning C++
? Harvey M. Deitel and Paul J. Deitel, C++ How to Program (Fourth Edition), Prentice Hall,
2002, ISBN: 0-130-38474-7
Known as simply the “Deitel” book, this text assumes no prior programming experience.
? Bruce Eckel, Thinking in C++, Volume 1: Introduction to Standard C++ (Second Edition),
Prentice Hall, 2000, ISBN: 0-139-79809-9.
An excellent introduction to C++ programming that expects the reader to know C already.
Available at no cost online at
www.bruceeckel.com.
? Stanley B. Lippman and Josée Lajoie, C++ Primer (Third Edition), Addison Wesley, 1998,
ISBN: 0-201-82470-1.
This book requires no knowledge of C++, but experience with high-level object-oriented languages
is assumed.
? Steve Oualline, Practical C++ Programming (Second Edition), O’Reilly, 2003, ISBN:
0-596-00419-2.
An introductory C++ text that assumes no prior programming experience.
? Walter Savitch, Problem Solving with C++: The Object of Programming (Fourth Edition),
Addison Wesley Longman, 2002, ISBN: 0-321-11347-0.
This book assumes no prior programming experience. It is often used as a textbook in introductory
programming courses.
//z 2011-06-25 17:53:49@is2120.CSDN 转载请注明出处
General C++
? Marshall Cline, C++ FAQ LITE, www.parashift.com/c++-faq-lite.
? Marshall Cline, Greg Lomow, and Mike Giru, C++ FAQs (Second Edition), Addison Wesley, 1998,
ISBN: 0-201-30983-1.
This compilation of frequently asked questions from the comp.lang.c++ newsgroup is useful for quickly
looking up a specific point about C++. The printed version contains more information than the online ver-
sion, but the material available online should be sufficient for most professional C++ programmers.
? Stephen C. Dewhurst, C++ Gotchas, Addison Wesley, 2003, ISBN: 0-321-12518-5.
Provides 99 specific tips for C++ programming.
? Bruce Eckel and Chuck Allison, Thinking in C++, Volume 2: Practical Programming (Second Edition),
Prentice Hall, 2003, ISBN: 0-130-35313-2.
The second volume of Eckel’s book covers more advanced C++ topics. It’s also available at no cost
online at
www.bruceeckel.com.
? Ray Lischner, C++ in a Nutshell, O’Reilly, 2003, ISBN: 0-596-00298-X.
AC++ reference, covering everything from the basics to more advanced material.
? Scott Meyers, Effective C++ (Second Edition): 50 Specific Ways to Improve Your Programs and
Designs, Addison Wesley, 1998, ISBN: 0-201-92488-9.
? Scott Meyers, More Effective C++: 35 New Ways to Improve Your Programs and Designs, Addison
Wesley, 1996, ISBN: 0-201-63371-X.
These two books provide excellent tips-and-tricks on commonly misused and misunderstood features
of C++.
? Stephen Prata, C++ Primer Plus, Sams Publishing, 2001, ISBN: 0-672-32223-4.
One of the most comprehensive C++ books available.
? Bjarne Stroustrup, The C++ Programming Language (Special Third Edition), Addison Wesley, 2000,
ISBN: 0-201-70073-5.
The “Bible” of C++ books, written by the designer of C++ himself. Every C++ programmer should own
a copy of this book, but it can be a bit obscure in places for the C++ novice.
? The C++ Standard: Incorporating Technical Corrigendum No. 1, John Wiley & Sons, 2003, ISBN:
0-470-84674-7.
This book is almost 800 pages of dense standard-eze. It doesn’t explain how to use C++, only what the for-
mal rules are. We don’t recommend this book unless you really want to understand every detail of C++.
? Newsgroups at
http://groups.google.com, including comp.lang.c++.moderated and
comp.std.c++.
The newsgroups contain a lot of useful information if you’re willing to wade through the flame wars,
insults, and misinformation that appear as well.
? The C++ Resources Network at www.cplusplus.com/.
This Web page isn’t as useful as it sounds. As of this writing, the C++ reference section is still under con-struction.
I/O Streams
? Cameron Hughes and Tracey Hughes, Mastering the Standard C++ Classes: An Essential Reference,
Wiley, 1999, ISBN: 0-471-328-936.
Agood book for learning how to write custom
istream and ostream classes.
? Cameron Hughes and Tracey Hughes, Stream Manipulators and Iterators in C++,
Professional Technical Reference, Prentice Hall,
http://phptr.com/articles/ article.asp?p=171014&seqNum=2
.
This well-written article by the authors of Mastering the Standard C++ Classes takes the mystery out of
defining custom
stream manipulators in C++.
? Philip Romanik and Amy Muntz, Applied C++: Practical Techniques for Building Better Software,
Addison Wesley, 2003, ISBN: 0-321-10894-9.
In addition to a unique blend of software development advice and C++ specifics, this book provides one
of the best explanations we’ve read of locale and Unicode support in C++.
? Joel Spolsky, The Absolute Minimum Every Software Developer Absolutely, Positively Must Know About
Unicode and Character Sets (No Excuses!),
www.joelonsoftware.com/articles/Unicode.html.
After reading Joel’s treatise on the importance of internationalization, you’ll want to check out his other
entries on Joel on Software.
? Unicode, Inc., Where is my Character?,
www.unicode.org/standard/where.
The best resource for finding Unicode characters, charts, and tables.
The C++ Standard Library
? Nicolai M. Josuttis, The C++ Standard Library: ATutorial and Reference, Addison Wesley, 1999,
ISBN: 0-201-37926-0.
This book covers the entire standard library, including I/O
streams and strings as well as the contain-
ers and algorithms. It’s an excellent reference.
? Scott Meyers, Effective STL: 50 Specific Ways to Improve Your Use of the Standard Template Library,
Addison Wesley, 2001, 0-201-74962-9.
Meyers wrote this book in the same spirit as his “Effective C++” books. It provides targeted tips for
using the STL, but is not a reference or tutorial.
? David R. Musser, Gillmer J. Derge, and Atul Saini, STLTutorial and Reference Guide (Second
Edition), Addison Wesley, 2001, ISBN: 0-201-37923-6.
This book is similar to the Josuttis text, but covers only the STLpart of the standard library.
C++ Templates
? Herb Sutter, Sutter’s Mill: Befriending Templates, C/C++ User’s Journal, www.cuj.com/
documents/s=8244/cujcexp2101sutter/sutter.htm
.
The best explanation we could find about making function templates friends of classes.
? David Vandevoorde and Nicolai M. Josuttis, C++ Templates: The Complete Guide, Addison Wesley,
2002, ISBN: 0-201-73484-2.
Everything you ever wanted to know (or didn’t want to know) about C++ templates. It assumes signifi-
cant background in general C++.
C
? Brian W. Kernighan and Dennis M. Ritchie, The C Programming Language (second edition), Prentice
Hall, 1998, ISBN: 0-13-110362-8.
“K and R,” as this book is known, is an excellent reference on the C language. It’s not as useful for learn-
ing it the first time.
? Peter Prinz, Tony Crawford (Translator), Ulla Kirch-Prinz, C Pocket Reference, O’Reilly, 2002,
ISBN: 0-596-00436-2.
Aconcise reference to all things C.
? Eric S. Roberts, The Art and Science of C: ALibrary Based Introduction to Computer Science, Addison
Wesley, 1994, ISBN: 0-201-54322-2.
? Eric S. Roberts, Programming Abstractions in C: ASecond Course in Computer Science, Addison
Wesley, 1997, ISBN: 0-201-54541-1.
These two books provide a great introduction to programming in C with good style. They are often used
as textbooks in introductory programming courses.
? Peter Van Der Linden, Expert C Programming: Deep C Secrets, Pearson Education, 1994, ISBN:
0-131-77429-8.
An enlightening and often hysterical look at the C language, its evolution, and its inner workings.
Integrating C++ and Other Languages
? Ian F. Darwin, Java Cookbook, O’Reilly, 2001, ISBN: 0-596-00170-3.
This book provides step-by-step instructions for using JNI to integrate Java with other languages,
including C++.
Algorithms and Data Structures
? Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest, and Clifford Stein, Introduction to
Algorithms (Second Edition), The MIT Press, 2001, ISBN: 0-262-03293-7.
This text is one of the most popular introductory algorithms books, covering all the common data struc-
tures and algorithms. The authors learned algorithms and data structures as an undergraduate from the
first edition of this book.
? Donald E. Knuth, The Art of Computer Programming Volume 1: Fundamental Algorithms (Third
Edition), Addison Wesley, 1997, ISBN: 0-201-89683-4.
? Donald E. Knuth, The Art of Computer Programming Volume 2: Seminumerical Algorithms (Third
Edition), Addison Wesley, 1997, ISBN: 0-201-89684-2.
? Donald E. Knuth, The Art of Computer Programming Volume 3: Sorting and Searching (Third
Edition), Addison Wesley, 1998, ISBN: 0-201-89685-0.
For those of you who enjoy mathematical rigor, there is no better algorithms and data structures text
than Knuth’s three-volume tome. It is probably inaccessible without undergraduate knowledge of math-
ematics or theoretical computer science.
? Kyle Loudon, Mastering Algorithms with C, O’Reilly, 1999, ISBN: 1-565-92453-3.
An approachable reference to data structures and algorithms.
Open-Source Software
? The Open Source Initiative at www.opensource.org.
www.gnu.org.
? The GNU Operating System — Free Software Foundation at
These Web pages for the two main open-source movements explain their philosophies and provide
information about obtaining open-source software and contributing to its development.
? sourceforge.net at
www.sourceforge.net.
This Web site hosts many open-source projects. It’s a great resource for finding useful open-source
software.
Software-Engineering Methodology
? Barry W. Boehm, TRW Defense Systems Group, ASpiral Model of Software Development and
Enhancement, IEEE Computer, 21(5):61-72, 1988.
This landmark paper described the state of software development at the time and proposed the Spiral
Model.
? Kent Beck, Extreme Programming Explained: Embrace Change, Pearson Education, 1999, ISBN:
0-201-61641-6.
One of several books in a series that promote Extreme Programming as a new approach to software
development.
? Robert T. Futrell, Donald F. Shafer, and Linda Isabell Shafer, Quality Software Project Management,
Pearson Education, 2003, ISBN: 0-130-91297-2.
Aguidebook for anybody who is responsible for the management of the software development process.
? Robert L. Glass, Facts and Fallacies of Software Engineering, Pearson Education, 2002, ISBN:
0-321-11742-5.
This book discusses various aspects of the software development process and exposes hidden truisms
along the way.
? Philippe Kruchten, Rational Unified Process: An Introduction (Second Edition), Addison Wesley,
2000, ISBN: 0-201-70710-1.
Provides an overview of RUP, including its mission and processes.
? Edward Yourdon, Death March (Second Edition), Prentice Hall, 2003, ISBN: 0-131-43635-X.
Awonderfully enlightening book about the politics and realities of software development.
? Rational Unified Process from IBM,
www3.software.ibm.com/ibmdl/pub/software/
rational/web/demos/viewlets/rup/runtime/index.html
The IBM Web site contains a wealth of information about RUP, including the interactive presentation at
the above URL.
Programming Style
? Martin Fowler, Kent Beck, John Brant, William Opdyke, Don Roberts, Refactoring: Improving the
Design of Existing Code, Addison Wesley, 1999, ISBN: 0-201-48567-2.
This classic book espouses the practice of recognizing and improving bad code.
? James Foxall, Practical Standards for Microsoft Visual Basic .NET, Microsoft Press, 2002, ISBN:
0-7356-1356-7.
Exhibits the tenets of Microsoft Windows coding style, using Visual Basic
? Diomidis Spinellis, Code Reading: The Open Source Perspective, Addison Wesley, 2003, ISBN:
0-201-79940-5.
This unique book turns the issue of programming style upside down by challenging the reader to learn
to read code properly in order to become a better programmer.
? Dimitri van Heesch, Doxygen,
http://www.stack.nl/~dimitri/doxygen/index.html.
Ahighly configurable program that generates documentation from source code and comments.
Computer Architecture
? David A. Patterson and John L. Hennessy, Computer Organization & Design: The
Hardware/Software Interface (Second Edition), Morgan Kaufman, 1997, ISBN: 1-558-60428-6.
? John L. Hennessy and David A. Patterson, Computer Architecture: AQuantitative Approach (Third
Edition), Morgan Kaufman, 2002, ISBN: 1-558-60596-7.
These two books provide all the information most software engineers ever need to know about com-
puter architecture.
Efficiency
? Dov Bulka and David Mayhew, Efficient C++: Performance Programming Techniques, Addison
Wesley, 1999, ISBN: 0-201-37950-3.
One of the few books to focus exclusively on efficient C++ programming, it covers both language-level
and design-level efficiency.
? GNU gprof,
www.gnu.org/software/binutils/manual/gprof-2.9.1/gprof.html.
Information about the gprof profiling tool.
? Rational Software from IBM,
www-306.ibm.com/software/rational.
Rational Quantify is an excellent (but not free) profiling tool.
Testing
? Elfriede Dustin, Effective Software Testing: 50 Specific Ways to Improve Your Testing, Addison
Wesley, 2002, ISBN: 0-201-79429-2.
While this book is aimed at quality assurance professionals, any software engineer will benefit from its
discussion of the software-testing process.
Debugging
? The Gnu DeBugger (GDB), at www.gnu.org/software/gdb/gdb.html.
GDB is an excellent symbolic debugger.
? Rational Software from IBM,
www-306.ibm.com/software/rational.
Rational Purify is an excellent (but not free) memory error–debugging tool.
? Valgrind, at
http://valgrind.kde.org.
An open-source memory-debugging tool for Linux.
Distributed Objects
? Jim Farley, Java Distributed Computing, O’Reilly, 1998, ISBN: 1-56592-206-9.
Provides a Java-centric view of distributed computing technologies.
? Ron Hipschman, How SETI@home Works,
http://setiathome.ssl.berkeley.edu/
about_seti/about_seti_at_home_1.html
.
Interesting background on the SETI@home project, which uses distributed computing to analyze data
from space.
? Sassafras Software, General KeyServer Questions,
http://www.sassafras.com/faq/
general.html
Information about KeyServer, an application that uses distributed computing to control software licenses.
CORBA
? The Object Management Group’s CORBAsite at http://www.corba.org
CORBAis a “product” of the Object Management Group (OMG). This Web site contains basic back-
ground information and links to the actual standards involved.
? Michi Henning and Steve Vinoski, Advanced CORBAProgramming with C++, Addison Wesley,
1999, ISBN: 0-201-379270-9.
There are a lot more books out there on CORBAwith Java than with C++. This book focuses on C++,
and, despite the title, is accessible to a CORBAbeginner.
XML and SOAP
? Ethan Cerami, Web Services Essentials, O’Reilly, 2002, ISBN: 0-596-00224-6.
This book explains the emerging concept of Web services and the use of SOAPfor distributed comput-
ing. Examples are provided in Java.
? Erik T. Ray, Learning XML(Second Edition), O’Reilly, 2003, ISBN: 0-596-00420-6.
The de-facto XMLreference. Includes discussions of associated technologies like XMLschema, XPath,
and XHTML.
? James Snell, Doug Tidwell, Pavel Kulchenko, Programming Web Services with SOAP, O’Reilly,
2001, ISBN: 0-596-00095-2.
This book discusses SOAPand related technologies, such as UDDI and WSDL. Examples are provided
in Java, Perl, C#, and Visual Basic.
? Eric van der Vlist, XMLSchema, O’Reilly, 2002, ISBN: 0-596-00252-1.
This book tackles the difficult topic of XMLSchema and discusses the nuances of the language.
? Altova Software xmlspy,
www.xmlspy.com.
Information about the xmlspy software package from Altova Software.
Design Patterns
? Andrei Alexandrescu, Modern C++ Design: Generic Programming and Design Patterns Applied,
Addison Wesley, 2001, ISBN: 0-201-70431-5.
Offers an approach to C++ programming employing highly reusable code and patterns.
? Cunningham and Cunningham, The Portland Pattern Repository,
www.c2.com/cgi/
wiki?WelcomeVisitors
.
You could spend all day browsing through this community-edited Web site about design patterns.
? Erich Gamma, Richard Helm, Ralph Johnson, and John Vlissides, Design Patterns: Elements of
Reusable Object-Oriented Software, Addison Wesley, 1995, ISBN: 0-201-63361-2.
Called the “Gang of Four” book (because of its four authors), this text is the seminal work in design
patterns.