求真百科歡迎當事人提供第一手真實資料,洗刷冤屈,終結網路霸凌。

编程的本质查看源代码讨论查看历史

跳转至: 导航搜索
编程的本质

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

图书信息

书 名: 编程的本质

作 者:斯特潘诺夫(AlexanderStepanov)

出版社: 机械工业出版社

出版时间: 2010年3月1日

ISBN: 9787111300274

开本: 16开

定价: 49.00元

内容简介

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

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

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

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

作者简介

Alexander Stepanov于1967~1972年间在莫斯科国立大学学习数学,从1972年开始在苏联,1977年移民美国后在美国从事编程工作。他编写过操作系统、编程工具、编译器和各种库。他在程序设计基础方面的工作先后得到GE、Polytechnic、AT&T、惠普、Silicon Graphics的支持,2002年后是Adobe的支持。1995年因C++标准模板库的设计获Dr.Dobb的程序设计杰出贡献奖。

Paul McJones于1967~1971年间在加州大学伯克利分校学习工程数学。从1967年开始介入程序设计,涉足的领域包括操作系统、程序设计环境、事务处理系统以及企业和客户应用系统等。他先后在加州大学、IBM、Xerox、Tandem、DEC工作,2003年至今在Adobe公司。1982年他与合作者一起因其论文“The Recovery Manager of the System R Database Manager”获得ACM程序设计系统和语言论文奖。

图书目录

Preface ix

About the Authors xiii

1 Foundation 1

1.1 Categories of Ideas: Entity, Species, Genus 1

1.2 Values 2

1.3 Objects 4

1.4 rocedures6

1.5 Regular Types 6

1.6 Regular Procedures 8

1.7 Concepts 10

1.8 Conclusions14

2 TransformationsandTheirOrbits1 5

2.1 Transformations 15

2.2 Orbits 18

2.3 Collision Point 21

2.4 Measuring Orbit Sizes 27

2.5 Actions 28

2.6 Conclusions 29

3 Associative Operations 31

3.1 Associativity 31

3.2 Computing Powers 33

3.3 Program Transformations 35

3.4 Special-Case Procedures 39

3.5 Parameterizing Algorithms 42

3.6 Linear Recurrences 43

3.7 Accumulation Procedures 46

3.8 Conclusions 47

4 Linear Orderings 49

4.1 Classification of Relations 49

4.2 Total and Weak Orderings 51

4.3 Order Selection 52

4.4 Natural Total Ordering 61

4.5 Clusters of Derived Procedures 62

4.6 Extending Order-Selection Procedures 63

4.7 Conclusions 63

5 Ordered Algebraic Structures 65

5.1 Basic Algebraic Structures 65

5.2 Ordered Algebraic Structures 70

5.3 Remainder 71

5.4 Greatest Common Divisor 76

5.5 Generalizinggcd 79

5.6 Steingcd 81

5.7 Quotient 81

5.8 Quotient and Remainder for Negative Quantities 83

5.9 Concepts and Their Models 85

5.10 Computer Integer Types 87

5.11 Conclusions 88

6 Iterators 89

6.1 Readability 89

6.2 Iterators 90

6.3 Ranges 92

6.4 Readable Ranges 95

6.5IncreasingRanges 103

6.6 Forward Iterators 106

6.7 Indexed Iterators 110

6.8 Bidirectional Iterators 111

6.9 Random-Access Iterators 113

6.1 0Conclusions 114

7 Coordinate Structures 115

7.1 ifurcate Coordinates 115

7.2 Bidirectional Bifurcate Coordinates 119

7.3 Coordinate Structures 124

7.4 Isomorphism, Equivalence, and Ordering 124

7.5 Conclusions 131

8 Coordinates with Mutable Successors 133

8.1 Linked Iterators 133

8.2 Link Rearrangements 134

8.3 Applications of Link Rearrangements 140

8.4 Linked Bifurcate Coordinates 143

8.5 Conclusions148

9 Copying 149

9.1 Writability 149

9.2 Position-Based Copying 151

9.3 Predicate-Based Copying 157

9.4 Swapping Ranges 164

9.5 Conclusions 168

10 Rearrangements 169

10.1 Permutations 169

10.2 Rearrangements 172

10.3 Reverse Algorithms 174

10.4 Rotate Algorithms 178

10.5 Algorithm Selection 186

10.6 Conclusions 189

11 Partitionand Merging 191

11.1 Partition 191

11.2 Balanced Reduction 198

11.3 Merging 202

11.4 Conclusions 208

12 Composite Objects 209

12.1 Simple Composite Objects 209

12.2 Dynamic Sequences 216

12.3 Underlying Type 222

12.4 Conclusions 225

Afterword 227

Appendix A Mathematical Notation 231

Appendix B Programming Language 233

B.1 Language Definition 233

B.2 Macros and Trait Structures 240

Bibliography 243

Index 247

推荐

《编程的本质(英文版)》:经典原版书库

媒体推荐

“要是问一位机械、建筑或电子工程师,如果不依靠坚实的数学基础,他们能走多远。他们会告诉你‘走不了多远’。而所谓的软件工程师在实践其技能时,却常常对他们所做工作的数学基础知之甚少,甚至一无所知。同时我们也很奇怪为什么软件由于不能按时发布并充斥错误而声名狼藉,而其他工程师却能按时完成其桥梁、汽车、各种电子装置等,而且有很少的缺陷。本书就是想纠正这种不平衡现象。我在Adobe的高级开发团队的成员们,但凡参加了基于同样材料的课程,都觉得付出的时间获益匪浅。初看可能觉得这种高度技术性的文字只是为计算机科学家写的,其实所有从事实际工作的软件工程师都应该来读。”

——Martin Newell,Adobe 院士

“本书包含一些我所见过的最美的代码。”

——Bjarne Stroustrup,C++ 设计者

“我很高兴看到Alex课程的内容。作为Silicon Graphics的CTO时,我曾大力支持这一课程的开发和教授,现在这本书已经能被所有程序员阅读了。”

——Forest Baskett,合伙人,New Enterprise Associates

“Paul的耐心和在体系结构方面的经验帮助把Alex的数学方法组织成为一套高度结构化的大厦——功德无量!”

——Robert W. Taylor,Xerox PARC CSL和DEC系统研究中心创始人[1]

参考文献

  1. 编程的本质豆瓣读书网