Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Professional C++ [eng].pdf
Скачиваний:
284
Добавлен:
16.08.2013
Размер:
11.09 Mб
Скачать

Appendix B

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

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

806

Annotated Bibliography

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.

807

Appendix B

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.

808

Annotated Bibliography

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.

809