編程原本是一款關(guān)于編程學(xué)習(xí)的科教書籍,它對(duì)編程提供了不同的理解,讓學(xué)者可以更好的進(jìn)行學(xué)習(xí)和編程,其主旨是,實(shí)際的編程也應(yīng)像其他科學(xué)和工程領(lǐng)域一樣基于堅(jiān)實(shí)的數(shù)學(xué)基礎(chǔ)。《編程原本》展示了在實(shí)際編程語言(如C++)中實(shí)現(xiàn)的算法如何在最一般的數(shù)學(xué)背景中操作。例如,如何定義快速求冪算法,使之能使用任何可交換運(yùn)算。使用抽象算法將能得到更高效、可靠、安全和經(jīng)濟(jì)的軟件。
這不是一本很容易讀的書,它也不是能提升你的編程技能的秘訣和技巧匯編?!毒幊淘尽返膬r(jià)值是更根本性的,其終極目標(biāo)是提升你對(duì)編程的洞察力。要想從中大獲裨益,你需要從頭到尾認(rèn)真學(xué)習(xí):閱讀代碼,證明引理,完成練習(xí)。到結(jié)束之時(shí),你將看到如何把這里討論的演繹方法應(yīng)用到你的程序中,保證你做出的軟件部件能一起工作,并表現(xiàn)出它們所應(yīng)該表現(xiàn)的行為。
編程原本中給出的算法和需求針對(duì)某些被操作的類型。有關(guān)這些描述的代碼(也可以通過Web得到)采用C++的一個(gè)小子集書寫,這樣做是為了讓所有有經(jīng)驗(yàn)的程序員都能理解。這個(gè)小子集可以看做一種特殊語言,是由Sean Parent和Bjarne Stroustrup一起設(shè)計(jì)的。
無論你是一位軟件開發(fā)者,還是其他以編程作為一項(xiàng)重要活動(dòng)的專業(yè)人員,或者是一名在校的學(xué)生,你都會(huì)逐漸理解《編程原本本》的經(jīng)驗(yàn)豐富的作者多年來一直在教授和闡釋的道理:數(shù)學(xué)對(duì)于編程是絕好的東西,理論對(duì)于實(shí)際是絕好的東西。
編輯推薦《編程原本》編輯推薦:追溯數(shù)學(xué)原理,探求編程的本質(zhì),STL之父Alexander Stepanov力作,C++之父Bjarne Stroustrup鼎力推薦,北大數(shù)學(xué)學(xué)院教授裘宗燕老師傾情獻(xiàn)譯。
編程原本目錄:
譯者序
前言
關(guān)于作者
第1章 基礎(chǔ)................................ 1
1.1理念范疇:實(shí)體,類別,類屬.................1
1.2值.....................................2
1.3對(duì)象....................................4
1.4過程....................................6
1.5規(guī)范類型.................................7
1.6規(guī)范過程.................................8
1.7概念....................................10
1.8總結(jié)....................................14
第2章 變換及其軌道........................ 15
2.1變換....................................15
2.2軌道....................................18
2.3碰撞點(diǎn)...................................21
2.4軌道規(guī)模的度量.............................27
2.5動(dòng)作....................................28
2.6總結(jié)....................................29
第3章 可結(jié)合運(yùn)算.......................... 31
3.1可結(jié)合性.................................31
3.2計(jì)算乘冪.................................32
3.3程序變換.................................35
3.4處理特殊情況的過程..........................40
3.5參數(shù)化算法................................43
3.6線性遞歸.................................44
3.7累積過程.................................47
3.8總結(jié)....................................48
第4章 線性序................................ 49
4.1關(guān)系的分類................................49
4.2全序和弱序................................51
4.3按序選取.................................52
4.4自然全序.................................62
4.5派生過程組................................63
4.6按序選取過程的擴(kuò)展..........................63
4.7總結(jié)....................................64
第5章 有序代數(shù)結(jié)........................... 65
5.1基本代數(shù)結(jié)構(gòu)..............................65
5.2有序代數(shù)結(jié)構(gòu)..............................70
5.3求余....................................72
5.4最大公因子................................76
5.5廣義gcd..................................79
5.6Steingcd.................................81
5.7商.....................................82
5.8負(fù)量的商和余數(shù).............................84
5.9概念及其模型..............................87
5.10計(jì)算機(jī)整數(shù)類型.............................88
5.11結(jié)論....................................89
第6章 迭代器.............................. 91
6.1可讀性...................................91
6.2迭代器...................................92
6.3范圍....................................94
6.4可讀范圍.................................97
6.5遞增的范圍................................106
6.6前向迭代器................................108
6.7索引迭代器................................113
6.8雙向迭代器................................114
6.9隨機(jī)訪問迭代器.............................115
6.10總結(jié)....................................117
第7章坐標(biāo)結(jié)構(gòu).............................. 119
7.1二叉坐標(biāo).................................119
7.2雙向二叉坐標(biāo)..............................123
7.3坐標(biāo)結(jié)構(gòu).................................129
7.4同構(gòu),等價(jià)和有序............................129
7.5總結(jié)....................................137
第8章 后繼可變的坐標(biāo)....................... 139
8.1鏈接迭代器................................139
8.2鏈接重整.................................140
8.3鏈接重整的應(yīng)用.............................147
8.4鏈接的二叉坐標(biāo).............................151
8.5結(jié)論....................................155
第9章拷貝.................................. 157
9.1可寫性...................................157
9.2基于位置的拷貝.............................159
9.3基于謂詞的拷貝.............................166
9.4范圍的交換................................174
9.5總結(jié)....................................178
第10章 重整............................... 179
10.1置換....................................179
10.2重整....................................182
10.3 反轉(zhuǎn)算法.................................184
10.4 輪換算法.................................188
10.5 算法選擇.................................196
10.6 總結(jié)....................................200
第11章 劃分和歸并.......................... 201
11.1劃分....................................201
11.2平衡的歸約................................207
11.3歸并....................................212
11.4總結(jié)....................................218
第12章 復(fù)合對(duì)象........................... 219
12.1簡單復(fù)合對(duì)象..............................219
12.2動(dòng)態(tài)序列.................................227
12.3基礎(chǔ)類型.................................233
12.4總結(jié)....................................236
跋......................................... 237
附錄A 數(shù)學(xué)表示............................ 241
附錄B 程序設(shè)計(jì)語言........................ 243
參考文獻(xiàn)................................... 253
索引....................................... 257
作者簡介:
Alexander Stepanov 于1967~1972年間在國立莫斯科大學(xué)學(xué)習(xí)數(shù)學(xué),從1972年開始在蘇聯(lián),1977年移民后繼續(xù)在美國從事編程工作。他編寫過操作系統(tǒng)、編程工具、編譯器和各種程序庫。他在程序設(shè)計(jì)基礎(chǔ)方面的工作先后得到GE、Polytechnic、AT&T、惠普、SGI和Adobe的支持。1995年因C++標(biāo)準(zhǔn)模板庫的設(shè)計(jì)獲Dr. Dobb, Journal的程序設(shè)計(jì)杰出貢獻(xiàn)獎(jiǎng)。
Paul McJones 于1967~1971年間在加州大學(xué)伯克利分校學(xué)習(xí)工程數(shù)學(xué)。從1967年開始介入程序設(shè)計(jì),涉足的領(lǐng)域包括操作系統(tǒng)、程序設(shè)計(jì)環(huán)境、事務(wù)處理系統(tǒng)以及企業(yè)和客戶應(yīng)用系統(tǒng)等。他先后在加州大學(xué)、IBM、Xerox、Tandem、DEC和Adobe工作。1982年他與合作者一起因論文“The Recovery Manager of the System R Database Manager”獲得ACM程序設(shè)計(jì)系統(tǒng)和語言論文獎(jiǎng)。