編程原本

編程原本

《編程原本》是機械工業出版社在2012年出版的一本書籍。《編程原本》提供了有關編程的一種與眾不同的理解。其主旨是,實際的編程也應像其他科學和工程領域一樣基於堅實的數學基礎。本書展示了在實際程式語言(如C++)中實現的算法如何在最一般的數學背景中操作。例如,如何定義快速求冪算法,使之能使用任何可交換運算。使用抽象算法將能得到更高效、可靠、安全和經濟的軟體。

內容簡介

這不是一本很容易讀的書,它也不是能提升你的編程技能的秘訣和技巧彙編。本書的價值是更根本性的,其終極目標是提升你對編程的洞察力。要想從中大獲裨益,你需要從頭到尾認真學習:閱讀代碼,證明引理,完成練習。到結束之時,你將看到如何把這裡討論的演繹方法套用到你的程式中,保證你做出的軟體部件能一起工作,並表現出它們所應該表現的行為。

書中給出的算法和需求針對某些被操作的類型。有關這些描述的代碼(也可以通過Web得到)採用C++的一個小子集書寫,這樣做是為了讓所有有經驗的程式設計師都能理解。這個小子集可以看做一種特殊語言,是由Sean Parent和Bjarne Stroustrup一起設計的。

無論你是一位軟體開發者,還是其他以編程作為一項重要活動的專業人員,或者是一名在校的學生,你都會逐漸理解本書的經驗豐富的作者多年來一直在教授和闡釋的道理:數學對於編程是絕好的東西,理論對於實際是絕好的東西。

編輯推薦

追溯數學原理,探求編程的本質

STL之父Alexander Stepanov力作

C++之父Bjarne Stroustrup鼎力推薦

北大數學學院教授裘宗燕老師傾情獻譯

作者簡介

Alexander Stepanov 於1967~1972年間在國立莫斯科大學學習數學,從1972年開始在蘇聯,1977年移民後繼續在美國從事編程工作。他編寫過作業系統、編程工具、編譯器和各種程式庫。他在程式設計基礎方面的工作先後得到GE、Polytechnic、AT&T、惠普、SGI和Adobe的支持。1995年因C++標準模板庫的設計獲Dr. Dobb, Journal的程式設計傑出貢獻獎。

前言

前言:

本書將演繹方法套用於程式設計,討論程式與保證它們能正確工作的抽象數學理論之間的聯繫.書中把反映這些理論的規程(speci.cation),基於這些理論寫出的算法,以及描述算法性質的引理和定理一起呈現給讀者.這些算法在一種實際程式設計語言裡的實現是本書的中心。雖然規程主要是供人閱讀,但它們也應該(或者說必須)嚴格地與非形式化的、供機器使用的代碼相結合,必須在通用的同時又是抽象而且精確的。

與在其他科學和工程領域裡的情況一樣,適合作為程式設計的基礎的同樣是演繹方法。演繹方法能幫助我們將複雜系統分解為一些具有特定數學行為的組件,而這種分解又是設計高效、可靠、安全和經濟的軟體的前提。

本書是想奉獻給那些希望更深入地理解程式設計的人們,無論他們是專職軟體開發人員,還是把程式設計看作其專業活動中一個重要組成部分的科學家或工程師。

本書編寫的基本想法是讓讀者從頭到尾完整閱讀。讀者只有通過閱讀代碼、證明引理、完成練習,才能真正理解書中的各方面材料。此外我們還建議了一些項目,其中有些是完全開放的。本書的內容很緊湊,認真的讀者最終會看到書中各部分之間的聯繫,以及我們選擇這些材料的理由。發現本書在體系結構方面的原理應該是讀者的一個目標。

我們假定讀者已經具有完成各種基本代數操作的能力。還假定讀者熟悉邏輯和集合論的基本術語,如普通本科生在離散數學課程中學習的內容。附錄A總結了書中使用的各種記法。如果在一些特定的算法里需要某些抽象代數的概念,書中會給出相應的定義。我們還假定讀者熟悉程式設計,理解計算機體系結構,理解最基本的算法和數據結構。

我們選用C++,是因為它組合了強有力的抽象設施和基礎機器的正確表示。這裡只用了該語言的一個小子集,需求被寫成程式里的結構化注釋。我們希望不熟悉C++的讀者也能閱讀本書。附錄B描述了書中使用的C++子集。在書中的任何地方,在需要區分數學記法和C++的地方,根據所用的字型、排版和上下文就能確定用的是哪種意義(是數學的還是C++的)。雖然書中的許多概念和程式與STL(C++標準模板庫)里的東西對應,但這裡的一些設計決策是與STL不同的。書中還忽略了實際程式庫(如STL)必須考慮和處理的許多問題,如名字空間、可見性、inline指令等等。

第1章描述值、對象、類型、過程和概念。第2~5章描述各種代數結構(如半群、全序集)上的算法。第6~11章討論抽象記憶體上的算法。第12章討論包含對象成員的對象。跋給出了我們對本書中闡釋的工作途徑的反思。

相關詞條

熱門詞條

聯絡我們