如果將電腦科學與數學分離,那麼這兩者的發展都會有很大困難。於是,我們就試圖通過一些課程,把人類文明早期就有的數學活動與現代才有的計算機活動結合起來。本書正是基於這樣一種課程而編寫的。
能夠與友人dan rose合作,我深感榮幸。他的管理工作令我們團隊能夠把泛型程式設計的原則運用到搜尋引擎的設計上來,而且他願意把我原來那些相當分散的課程內容集結成現在這樣一本連貫的書籍。dan和我都希望讀者能夠喜歡我們這次合作的成果。
——a.a.s.
大家將要閱讀的這本書是根據「algorithmic journeys」課程的筆記而撰寫的,該課程於2023年由alex stepanov在a9.com講授。當alex與我合作把課程材料改編為書籍時,我們發現:其實可以將這些材料整理得更為集中一些,使其聚焦於泛型程式設計及其數學基礎。這個想法促使我們對本書要講解的話題進行了大幅度的調整,刪掉了與集合論及邏輯有關的大段文字,因為那些內容似乎和本書要講的內容無關。同時,我們還對一些細節有所增刪,以便大家能夠更加連貫地閱讀本書,並使那些數學知識較缺乏的讀者也能夠順暢地理解書中的內容。
alex是數學專業出身,但我不是。因此,我很努力地試著去讀懂課程裡的一些材料,並根據自身體會來確定那些需要加以解說的難點。如果你發現本書所用的一些描述方式及術語和專業數學家稍有不同,或是本書在解釋某個問題時多寫了幾個簡單的步驟,那麼這應該歸咎於我才對。
——d.e.r.
第1章 內容提要
1.1 程式設計與數學
1.2 從歷史的角度來講解
1.3 閱讀準備
1.4 各章概述
第2章 演算法初談
2.1 埃及乘法演算法
2.2 改進該演算法
2.3 本章要點
第3章 古希臘的數論
3.1 整數的幾何屬性
3.2 篩選素數
3.3 實現該演算法並優化其**
3.4 完美數
3.5 畢達哥拉斯學派的構想
3.6 畢氏構想中的嚴重缺陷
3.7 本章要點
模板與泛型程式設計
模板是泛型變成的基礎。泛型程式設計 編譯與型別無關的 是一種復用的方式,模板分為模板函式和模板類。模板函式是乙個通用的函式模板,而不是為每一種型別定義乙個新函式,乙個函式模板就像乙個公式,針對不同型別函式生成不同的函式版本。關鍵字 template 以 template 開始,後面跟乙個模板引數列表...
模板與泛型程式設計
泛型程式設計 編寫與型別無關的通用 是 復用的一種手段。模板是泛型程式設計的基礎。函式模板代表了乙個函式家族,該函式模板與型別無關,在使用時被引數化,根據實參型別產生函式的特定型別版本。模板的格式 template 返回值型別 函式名 引數列表 模板分為類模板和函式模板 模板它本身並不是函式,是編譯...
模板與泛型程式設計
一 函式模板 模板定義以關鍵字template開始,後跟乙個模板引數列表,在模板定義中,模板引數列表不能為空。模板型別引數 型別引數前必須使用class或typename關鍵字。非型別模板引數 表示乙個值而不是乙個型別 陣列引用形參 arr兩端的括號必不可少 void print int arr 1...