编程原本

Alexander Stepanov

出版时间

2012-01-09

ISBN

9787111367291

评分

★★★★★
书籍介绍

本书提供了有关编程的一种与众不同的理解。其主旨是,实际的编程也应像其他科学和工程领域一样基于坚实的数学基础。本书展示了在实际编程语言(如C++)中实现的算法如何在最一般的数学背景中操作。例如,如何定义快速求幂算法,使之能使用任何可交换运算。使用抽象算法将能得到更高效、可靠、安全和经济的软件。

这不是一本很容易读的书,它也不是能提升你的编程技能的秘诀和技巧汇编。本书的价值是更根本性的,其终极目标是提升你对编程的洞察力。要想从中大获裨益,你需要从头到尾认真学习:阅读代码,证明引理,完成练习。到结束之时,你将看到如何把这里讨论的演绎方法应用到你的程序中,保证你做出的软件部件能一起工作,并表现出它们所应该表现的行为。

书中给出的算法和需求针对某些被操作的类型。有关这些描述的代码(也可以通过Web得到)采用C++的一个小子集书写,这样做是为了让所有有经验的程序员都能理解。这个小子集可以看做一种特殊语言,是由Sean Parent和Bjarne Stroustrup一起设计的。

无论你是一位软件开发者,还是其他以编程作为一项重要活动的专业人员,或者是一名在校的学生,你都会逐渐理解本书的经验丰富的作者多年来一直在教授和阐释的道理:数学对于编程是绝好的东西,理论对于实际是绝好的东西。

AI导读
核心看点
  • 揭示编程的数学本质,建立坚实的理论基础
  • 通过C++子集代码,展示抽象算法的实现
  • 提升对编程的洞察力,超越技巧层面
适合谁读
  • 具备丰富编程经验及一定数学基础的开发者
  • 希望深入理解STL设计思想与原理的程序员
  • 对计算机科学理论及算法设计感兴趣的学生
读前提醒
  • 内容极度抽象,需从头到尾认真学习并做练习
  • 建议结合英文原版对照阅读,以理清逻辑脉络
  • 若无足够经验与数学功底,阅读体验可能极差
读者共识
  • 公认的神作,但难度极高,被戏称为天书
  • 裘宗燕译本质量高,但原文表述依然晦涩
  • 需反复重读,随着经验积累方能真正领悟

本导读基于书籍简介、目录、原文摘录、短评和书评生成,不等同于全文精读。

精彩摘录
  • "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 于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程序设计系统和语言论文奖。
目录
译者序
前言
关于作者
第1章 基础................................ 1
1.1理念范畴:实体,类别,类属.................1

显示全部
用户评论
很久之前看的,仍在受益
太抽象了,不太看得懂
传说中的神书,数学不好,完全看不懂,有木有,有木有。
不是一般的难读啊,大神写的天书,慢慢啃吧
真心不容易懂,一大堆数学的概念和定理。
#好书传阅#helen0156,为什么要看这本书?介绍里有:本书的价值是更根本性的,其终极目标是提升你对编程的洞察力。本书将演绎方法应用于程序设计,讨论程序与保证它们能正确的抽象数学理论之间的联系。
匆匆扫了一遍,感觉新的想法不很多
很多年前从学长手上拿来看的,当时看不懂。以后找个机会好好再学习学习。
4年后,忽然就懂了 // 2014-10-31
下载
收藏