追溯数学原理,探求编程的本质,作为资深程序员,你需要一本编程原本

市面上讨论编程的书籍浩如烟海。说起编程,人们头脑中浮现的多半是语言、代码、hacking、测试、调试,以及与之相关的许多琐碎事务。

编程原本

而有这样一本书,在讨论编程时,他们关注的是数学、结构、规律、规范性、抽象、推导、前后条件、验证等。本书作者的技术水平和成就毋庸置疑,但他们为什么能做出STL 那样的巅峰之作,却值得我们认真思考。如果国内有人说程序的基础是数学,估计会有不少人对其嗤之以鼻:“你懂得什么是程序? 写过多少行代码?”但是,恐怕无人敢小觑本书作者,其见解和论据也无法忽视。基于上述基本考虑,本书中给出了大量精妙而且根基坚实的程序,解决了一个个具体而重要的问题。进一步说,作者还揭示了这些程序的理论基础,并从多个角度建立起它们之间的联系,使之可能成为无数实际程序的基础构件。作者的根本目标,或许就是希望基于这种思维方法和开发技术,为范围广泛的软件系统建立起坚实基础。在这里看不到调侃和讨好读者的流行俗语或插科打诨,只有严肃的叙述、分析和讨论。阅读本书的过程绝不会轻松,但我们可以相信,在这里的付出会使人收获厚丰。

作者取“Elements”作为书名也很值得玩味。我们都知道欧几里得的名著(英译“Elements”),中文译为《几何原本》可能偏离了作者的本意。欧氏应该是想为一种世界观和方法论提供一个范本,其内涵和意义绝不限于今天所说的“几何”领域。实际上,《原本》希望展示的是思维和研究背后的一套基础概念和思想。现在我们面对的是程序,这是一个完全人造的世界,这里的一切也有什么“本原”吗?本书作者基于其经验和认识也想来尝试一下,模仿欧几里得探究一下位于所有编程背后的最根本的东西。作者认为,程序背后的本原就是数学的各种概念、技术和方法,需要演绎、推导和证明等,而绝不是模糊的想法、草率的编码和蛮力的调试。随着计算机被更广泛地应用于各种重要领域,只靠朴素认识去工作将越来越显得脆弱和不可信。

与在其他科学和工程领域里的情况一样,适合作为程序设计基础的同样是演绎方法。演绎方法能帮助我们将复杂的系统分解为一些具有特定数学行为的组件,而这种分解又是设计高效、可靠、安全和经济的软件的前提。本书是想奉献给那些希望更深入地理解程序设计的人们,无论他们是专职软件开发人员,还是把程序设计看作其专业活动中一个重要组成部分的科学家或工程师。

本书编写的基本考虑是读者从头到尾的完整阅读。只有通过阅读代码、证明引理、完成练习,才能真正理解书中的各方面材料。此外我们还建议了一些项目,其中有些是完全开放的。本书的内容很紧凑,认真的读者最终会看到书中各部分之间的联系,以及我们选择这些材料的理由。发现本书在体系结构方面的原理,应该是读者的一个目标。

 

编程原本

  • 追溯数学原理,探求编程的本质,本书是“C++ STL之父”Alexander Stepanov的经典力作,得到了“C++ 之父”Bjarne Stroustrup的鼎力推荐。
  • 《编程原本》由我国知名的程序设计专家、北京大学数学学院教授裘宗燕老师再次修订,弥补了其中的不足。
  • 读者可以从本书中一窥STL的设计思想,真切体会程序设计的迭代式过程,通过研究有用的问题,发现处理这些问题的高效算法。

本书将严格的数学定义、公理化和演绎方法应用于程序设计,讨论程序与保证它们正确工作的抽象数学理论之间的联系。本书把理论的规程、基于这些规程写出的算法,以及描述算法性质的引理和定理一起呈现给读者,以帮助读者将复杂系统分解为一些具有特定行为的组件。

本书适合软件开发人员和需要进行程序设计的科学家及工程师阅读,也可供高等院校计算机及相关专业的师生参考。

目录结构

  • 第1 章基础
  • 第2 章变换及其轨道
  • 第3 章可结合运算
  • 第4 章线性序
  • 第5 章有序代数结构
  • 第6 章迭代器
  • 第7 章坐标结构
  • 第8 章后继可变的坐标
  • 第9 章拷贝
  • 第10 章重整
  • 第11 章划分和归并
  • 第12 章复合对象
  • 附录A 数学表示
  • 附录B 程序设计语言
  • B.1 语言定义
  • B.2 宏和特征结构
  • 参考文献
  • 索引

样章试读:

 

 

 

 

 

 

 

 

 

 

  • 0
    点赞
  • 1
    收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值