
He has been employed by the University of California, IBM, Xerox, Tandem, DEC, and, since 2003, Adobe.

He has been programming since 1967 in the areas of operating systems, programming environments, transaction processing systems, and enterprise and consumer applications.

Paul McJones studied engineering mathematics at the University of California, Berkeley, from 1967 to 1971. Dobb’s Journal Excellence in Programming Award for the design of the C++ Standard Template Library. His work on foundations of programming has been supported by GE, Brooklyn Polytechnic, AT&T,HP, SGI, and, since 2002, Adobe. He has programmed operating systems, programming tools, compilers, and libraries. He has been programming since 1972: first in the Soviet Union and, after emigrating in 1977, in the United States. 作者简介Īlexander Stepanov studied mathematics at Moscow State University from 1967 to 1972. Whether you are a software developer, or any other professional for whom programming is an important activity, or a committed student, you will come to understand what the book’s experienced authors have been teaching and demonstrating for years-that mathematics is good for programming, that theory is good for practice. This subset is defined in a special language appendix coauthored by Sean Parent and Bjarne Stroustrup. The code for these descriptions-also available on the Web-is written in a small subset of C++ meant to be accessible to any experienced programmer. When finished, you will see how the application of the deductive method to your programs assures that your system’s software components will work together and behave as they must.įollowing key definitions, the book describes a number of algorithms and requirements for types on which they are defined that exemplify its abstract mathematical approach. To benefit fully, you will need to work through it from beginning to end, reading the code, proving the lemmas, doing the exercises. The book’s value is more fundamental and, ultimately, more critical for insight into programming. Nor is it a compilation of tips and tricks for incremental improvements in your programming skills. Using abstract algorithms leads to efficient, reliable, secure, and economical software.

For example, the fast exponentiation algorithm is defined to work with any associative operation. The book shows that algorithms implemented in a real programming language, such as C++, can operate in the most general mathematical setting. Its major premise is that practical programming, like other areas of science and engineering, must be based on a solid mathematical foundation. Elements of Programming provides a different understanding of programming than is presented elsewhere.
