天天看點

【經典書籍及評論】老外的推薦清單:計算機科學技術(軟體篇)

第一部分  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.

第二部分  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 version,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.

A C++ 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 formal 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 construction.

第三部分 I/O Streams

❑ Cameron Hughes and Tracey Hughes, Mastering the Standard C++ Classes: An Essential Reference,Wiley, 1999, ISBN: 0-471-328-936.

A good 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: A Tutorial 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 containers 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, STL Tutorial 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 STL part 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 significant background in general 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 learning it the first time.

❑ Peter Prinz, Tony Crawford (Translator), Ulla Kirch-Prinz, C Pocket Reference, O’Reilly, 2002,ISBN: 0-596-00436-2.

第六部分 A concise reference to all things C.

❑ Eric S. Roberts, The Art and Science of C: A Library Based Introduction to Computer Science, Addison Wesley, 1994, ISBN: 0-201-54322-2.

❑ Eric S. Roberts, Programming Abstractions in C: A Second 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 structures 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 mathematics 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.

❑ The GNU Operating System — Free Software Foundation at www.gnu.org.

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, A Spiral 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.

A guidebook 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.

A wonderfully 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.

A highly 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: A Quantitative 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 computer 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 [email protected] Works, http://setiathome.ssl.berkeley.edu/

about_seti/about_seti_at_home_1.html.

Interesting background on the [email protected] 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 CORBA site at http://www.corba.org

CORBA is a “product” of the Object Management Group (OMG). This Web site contains basic background information and links to the actual standards involved.

❑ Michi Henning and Steve Vinoski, Advanced CORBA Programming with C++, Addison Wesley, 1999, ISBN: 0-201-379270-9.

There are a lot more books out there on CORBA with Java than with C++. This book focuses on C++,and, despite the title, is accessible to a CORBA beginner.

第十五部分 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 SOAP for distributed computing.Examples are provided in Java.

❑ Erik T. Ray, Learning XML (Second Edition), O’Reilly, 2003, ISBN: 0-596-00420-6.

The de-facto XML reference. Includes discussions of associated technologies like XML schema, 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 SOAP and related technologies, such as UDDI and WSDL. Examples are provided in Java, Perl, C#, and Visual Basic.

❑ Eric van der Vlist, XML Schema, O’Reilly, 2002, ISBN: 0-596-00252-1.

This book tackles the difficult topic of XML Schema 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.