新書推薦:
《
摆脱强迫的人生(修订版)
》
售價:HK$
88.5
《
知宋·宋代之司法
》
售價:HK$
99.7
《
空间与政治
》
售價:HK$
87.4
《
少年读三国(全套12册)
》
售價:HK$
490.6
《
不完美之美:日本茶陶的审美变
》
售價:HK$
87.4
《
现代化的迷途
》
售價:HK$
98.6
《
钛经济
》
售價:HK$
77.3
《
甲骨文丛书·无垠之海:世界大洋人类史(全2册)
》
售價:HK$
322.6
編輯推薦:
追溯数学原理,探求编程的本质
STL之父Alexander Stepanov力作
C++之父Bjarne Stroustrup鼎力推荐
北大数学学院教授裘宗燕老师倾情献译
內容簡介:
本书提供了有关编程的一种与众不同的理解。其主旨是,实际的编程也应像其他科学和工程领域一样基于坚实的数学基础。本书展示了在实际编程语言(如C++)中实现的算法如何在最一般的数学背景中操作。例如,如何定义快速求幂算法,使之能使用任何可交换运算。使用抽象算法将能得到更高效、可靠、安全和经济的软件。
这不是一本很容易读的书,它也不是能提升你的编程技能的秘诀和技巧汇编。本书的价值是更根本性的,其终极目标是提升你对编程的洞察力。要想从中大获裨益,你需要从头到尾认真学习:阅读代码,证明引理,完成练习。到结束之时,你将看到如何把这里讨论的演绎方法应用到你的程序中,保证你做出的软件部件能一起工作,并表现出它们所应该表现的行为。
书中给出的算法和需求针对某些被操作的类型。有关这些描述的代码(也可以通过Web得到)采用C++的一个小子集书写,这样做是为了让所有有经验的程序员都能理解。这个小子集可以看做一种特殊语言,是由Sean
Parent和Bjarne Stroustrup一起设计的。
无论你是一位软件开发者,还是其他以编程作为一项重要活动的专业人员,或者是一名在校的学生,你都会逐渐理解本书的经验丰富的作者多年来一直在教授和阐释的道理:数学对于编程是绝好的东西,理论对于实际是绝好的东西。
關於作者:
Alexander Stepanov
于1967~1972年间在国立莫斯科大学学习数学,从1972年开始在苏联,1977年移民后继续在美国从事编程工作。他编写过操作系统、编程工具、编译器和各种程序库。他在程序设计基础方面的工作先后得到GE、Polytechnic、ATT、惠普、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程序设计系统和语言论文奖。
裘宗燕,北京大学数学学院信息科学系教授。长期从事计算机软件理论,形式化方法,程序设计和程序设计语言等方面的教学和研究工作。译著包括《程序设计实践》、《从规范出发的程序设计》、《C++语言的设计和演化》、《C++程序设计语言》、《计算机程序的构造和解释》、《程序设计语言——实践之路》等,著作有《从问题到程序——程序设计与C语言引论》等。
目錄 :
译者序
前言
关于作者
第1章基础
1.1理念范畴:实体,类别,类属
1.2值
1.3对象
1.4过程
1.5规范类型
1.6规范过程
1.7概念
1.8总结
第2章 变换及其轨道
2.1变换
2.2轨道
2.3碰撞点
2.4轨道规模的度量
2.5动作
2.6总结
第3章 可结合运算
3.1可结合性
3.2计算乘幂
3.3程序变换
3.4处理特殊情况的过程
3.5参数化算法
3.6线性递归
3.7累积过程
3.8总结
第4章 线性序
4.1关系的分类
4.2全序和弱序
4.3按序选取
4.4自然全序
4.5派生过程组
4.6按序选取过程的扩展
4.7总结
第5章 有序代数结
5.1基本代数结构
5.2有序代数结构
5.3求余
5.4最大公因子
5.5广义gcd
5.6Steingcd
5.7商
5.8负量的商和余数
5.9概念及其模型
5.10计算机整数类型
5.11结论
第6章 迭代器
6.1可读性
6.2迭代器
6.3范围
6.4可读范围
6.5递增的范围
6.6前向迭代器
6.7索引迭代器
6.8双向迭代器
6.9随机访问迭代器
6.10总结
第7章坐标结构
7.1二叉坐标
7.2双向二叉坐标
7.3坐标结构
7.4同构,等价和有序
7.5总结
第8章
后继可变的坐标
8.1链接迭代器
8.2链接重整
8.3链接重整的应用
8.4链接的二叉坐标
8.5结论
第9章拷贝
9.1可写性
9.2基于位置的拷贝
9.3基于谓词的拷贝
9.4范围的交换
9.5总结
第10章 重整
10.1置换
10.2重整
10.3 反转算法
10.4 轮换算法
10.5 算法选择
10.6 总结
第11章 划分和归并
11.1划分
11.2平衡的归约
11.3归并
11.4总结
第12章 复合对象
12.1简单复合对象
12.2动态序列
12.3基础类型
12.4总结
跋
附录A 数学表示
附录B 程序设计语言
参考文献
索引
內容試閱 :
第1章 基础
本章从相关思想的一个简洁分类开始介绍一些术语: 值、对象、
类型、过程和概念,它们表示了与计算机有关的许多不同的理念范畴.这里还要详细讨论本书的中心观点:规范性.对一个过程,规范性意味着它对相等的参数总返回相等的结果.对一个类型,规范性意味着它应该有相等运算符,以及保证相等关系的拷贝构造函数和赋值.规范性使我们能应用等值推理使用等值替换去变换和优化程序.
1.1理念范畴:实体,类别,类属为了解释什么是对象、类型,以及其他基本的计算机概念,概述一下与这些概念对应的理念范畴是很有帮助的.
抽象实体abstract
entity指永存的不变的事物,而具体实体concretee~ity指具体的个别的事物,其出现和存在与时间和空间有关.一个属性attribute、是具体实体与抽象实体之间的一种对应关系,它描述了该具体实体的某种性质、度量或者品质.标识identity是我们感知实在世界的一种基本概念,它确定一个事物在随着时间变化中的不变性.一个具体实体的属性可以改变,但这种改变不会影响其标识.一个具体实体的一个快照snapshot就是在某个特定时间点上这一事物的所有属性的完整集合.具体实体不仅包括所有物理上存在的实体,还包括法律的、经济的或者政治的实体.蓝色和l3是抽象实体的例子.苏格拉底和美利坚合众国是具体实体的例子.苏格拉底的眼睛的颜色和美国的州的个数是属性的例子.
……