Elements of Programming

Alexander A. Stepanov

出版时间

2009-06-19

ISBN

9780321635372

评分

★★★★★
书籍介绍

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

This is not an easy book. Nor is it a compilation of tips and tricks for incremental improvements in your programming skills. The book’s value is more fundamental and, ultimately, more critical for insight into programming. To benefit fully, you will need to work through it from beginning to end, reading the code, proving the lemmas, doing the exercises. 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.

Following key definitions, the book describes a number of algorithms and requirements for types on which they are defined that exemplify its abstract mathematical approach. 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. This subset is defined in a special language appendix coauthored by Sean Parent and Bjarne Stroustrup.

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.

Alexander Stepanov studied mathematics at Moscow State University from 1967 to 1972. He has been programming since 1972: first in the Soviet Union and, after emigrating in 1977, in the United States. He has programmed operating systems, programming tools, compilers, and libraries. His work on foundations of programming has been supported by GE, Brooklyn Polytechnic, AT&T,HP, SG...

(展开全部)

精彩摘录
  • "A value type is a correspondence between a species (abstract or concrete) and a set of datums. 一集数据"
  • "Examples of values are integers represented in 32-bit two's complement big-endian format and rational numbers represented as a concatenation of two 32-bit sequences, interpreted as integer numerator and denominator, represented as two's complement big-endian values."
  • "Functional programming deals with values; imperative programming deals with objects."
  • "An object is well formed if and only if its state is well formed. An object type is properly partial if and only if its value type is properly partial; otherwise it is total. An object type is uniquely represented if and only if its value type is uniquely represented."
  • "当且仅当对象具有格式化的(well formed)状态时, 它才是格式化的对象. 对象如果部分格式化, 那就是部分格式化对象. 否则, 就是全格式化对象. 当类型的值可以唯一表示时, 对象类型就是唯一表示的."
  • "A computational basis for a type is a finite set of procedures that enable the construction of any other procedure on the type."
  • "抽象实体:指永存不变的事物 具体实体:指具体的个别事物,其出现和存在与时间和空间有关 属性:具体实体与抽象实体之间的一种对应关系,它描述了该具体实体的某种性质、度量或者品质 标识:是我们感知实在世界的一种基本概念,它确定一个事物在随时间变化中的不变性 快照:在某个特定时间点上某一具体实体的所有属性的集合"
  • "A datum is a finite sequence of 0s and 1s. A value type is a corespondence between a species (abstract or concrete) and a set of datums(data?). A datum together with its interpretation as a value. A memory is a set of words each with an address and a content. An object is a representation of a concr"
作者简介
Alexander Stepanov studied mathematics at Moscow State University from 1967 to 1972. He has been programming since 1972: first in the Soviet Union and, after emigrating in 1977, in the United States. He has programmed operating systems, programming tools, compilers, and libraries. His work on foundations of programming has been supported by GE, Brooklyn Polytechnic, AT&T,HP, SGI, and, since 2002, Adobe. In 1995 he received the Dr. Dobb’s Journal Excellence in Programming Award for the design of the C++ Standard Template Library. Paul McJones studied engineering mathematics at the University of California, Berkeley, from 1967 to 1971. He has been programming since 1967 in the areas of operating systems, programming environments, transaction processing systems, and enterprise and consumer applications. He has been employed by the University of California, IBM, Xerox, Tandem, DEC, and, since 2003, Adobe. In 1982 he and his coauthors received the ACM Programming Systems and Languages Paper Award for their paper “The Recovery Manager of the System R Database Manager.”
目录
Preface
Chapter 1 - Foundations
Chapter 2 - Transformations and Their Orbits
Chapter 3 - Associative Operations
Chapter 4 - Linear Orderings

显示全部
用户评论
有些很有用的算法,有些很有启发的思想,还有一些纯粹C艹的东西。西加加大法,一天八十八
中文译名《编程原本》,足见其地位。
读了一遍了,至少要多读几遍才能有收获,现在读了第一遍后最大的收获是终于有理由去学代数了,什么群啊,环之类的概念了,有了这些初步视觉上的印象,再去看就能与未能理解的这本书关联起来了,就从抽象到具体了吧
过程相当痛苦,而且至今还有一些知识点没有很好的理解。 不敢说全懂,但是还是很认真地做了大部分的习题的,对引理和工程也有所思考。有时,觉得书写错了。错了。。错了。。。真的错了。最后发现还是自己错了。所以,若有读者认书错了。。。再多想一下下吧~! 需重读,再写笔记,时间的话就。。。
收藏