《編程的本質》是2010年機械工業出版社出版的圖書,作者是斯特潘諾夫。
基本介紹
- 書名:編程的本質
- 作者:斯特潘諾夫
- ISBN:9787111300274
- 定價:49.00元
- 出版社:機械工業出版社
- 出版時間:2010年3月1日
- 開本:16開
內容簡介,作者簡介,圖書目錄,
內容簡介
《編程的本質》提供了有關編程的一種與眾不同的理解。其主旨是,實際的編程也應像其他科學和工程領域一樣基於堅實的數學基礎。本書展示了在實際程式語言(如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