Alexander Stepanov 于1967~1972年间在国立莫斯科大学学习数学,从1972年开始在苏联,1977年移民后继续在美国从事编程工作。他编写过操作系统、编程工具、编译器和各种程序库。他在程序设计基础方面的工作先后得到GE、Polytechnic、AT&T、惠普、SGI和Adobe的支持。1995年因C++标准模板库的设计获Dr. Dobb, Journal的程序设计杰出贡献奖。
Paul McJones 于1967~1971年间在加州大学伯克利分校学习工程数学。从1967年开始介入程序设计,涉足的领域包括操作系统、程序设计环境、事务处理系统以及企业和客户应用系统等。他先后在加州大学、IBM、Xerox、Tandem、DEC和Adobe工作。1982年他与合作者一起因论文“The Recovery Manager of the System R Database Manager”获得ACM程序设计系统和语言论文奖。
AI导读
核心看点
揭示编程的数学本质,建立坚实的理论基础
通过C++子集代码,展示抽象算法的实现
提升对编程的洞察力,超越技巧层面
读者共识
公认的神作,但难度极高,被戏称为天书
裘宗燕译本质量高,但原文表述依然晦涩
需反复重读,随着经验积累方能真正领悟
精彩摘录
"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."
"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"