編程原本

出版時間:2012-1-10  出版社:機械工業(yè)出版社華章公司  作者:Alexander Stepanov,Paul McJones  頁數(shù):296  譯者:裘宗燕  
Tag標簽:無  

前言

  前言:  本書將演繹方法應用于程序設計,討論程序與保證它們能正確工作的抽象數(shù)學理論之間的聯(lián)系.書中把反映這些理論的規(guī)程(speci.cation),基于這些理論寫出的算法,以及描述算法性質的引理和定理一起呈現(xiàn)給讀者.這些算法在一種實際程序設計語言里的實現(xiàn)是本書的中心。雖然規(guī)程主要是供人閱讀,但它們也應該(或者說必須)嚴格地與非形式化的、供機器使用的代碼相結合,必須在通用的同時又是抽象而且精確的。  與在其他科學和工程領域里的情況一樣,適合作為程序設計的基礎的同樣是演繹方法。演繹方法能幫助我們將復雜系統(tǒng)分解為一些具有特定數(shù)學行為的組件,而這種分解又是設計高效、可靠、安全和經(jīng)濟的軟件的前提?! ”緯窍敕瞰I給那些希望更深入地理解程序設計的人們,無論他們是專職軟件開發(fā)人員,還是把程序設計看作其專業(yè)活動中一個重要組成部分的科學家或工程師。  本書編寫的基本想法是讓讀者從頭到尾完整閱讀。讀者只有通過閱讀代碼、證明引理、完成練習,才能真正理解書中的各方面材料。此外我們還建議了一些項目,其中有些是完全開放的。本書的內容很緊湊,認真的讀者最終會看到書中各部分之間的聯(lián)系,以及我們選擇這些材料的理由。發(fā)現(xiàn)本書在體系結構方面的原理應該是讀者的一個目標。  我們假定讀者已經(jīng)具有完成各種基本代數(shù)操作的能力。還假定讀者熟悉邏輯和集合論的基本術語,如普通本科生在離散數(shù)學課程中學習的內容。附錄A總結了書中使用的各種記法。如果在一些特定的算法里需要某些抽象代數(shù)的概念,書中會給出相應的定義。我們還假定讀者熟悉程序設計,理解計算機體系結構,理解最基本的算法和數(shù)據(jù)結構?! ∥覀冞x用C++,是因為它組合了強有力的抽象設施和基礎機器的正確表示。這里只用了該語言的一個小子集,需求被寫成程序里的結構化注釋。我們希望不熟悉C++的讀者也能閱讀本書。附錄B描述了書中使用的C++子集。在書中的任何地方,在需要區(qū)分數(shù)學記法和C++的地方,根據(jù)所用的字體、排版和上下文就能確定用的是哪種意義(是數(shù)學的還是C++的)。雖然書中的許多概念和程序與STL(C++標準模板庫)里的東西對應,但這里的一些設計決策是與STL不同的。書中還忽略了實際程序庫(如STL)必須考慮和處理的許多問題,如名字空間、可見性、inline指令等等。  第1章描述值、對象、類型、過程和概念。第2~5章描述各種代數(shù)結構(如半群、全序集)上的算法。第6~11章討論抽象內存上的算法。第12章討論包含對象成員的對象。跋給出了我們對本書中闡釋的工作途徑的反思。

內容概要

  本書提供了有關編程的一種與眾不同的理解。其主旨是,實際的編程也應像其他科學和工程領域一樣基于堅實的數(shù)學基礎。本書展示了在實際編程語言(如C++)中實現(xiàn)的算法如何在最一般的數(shù)學背景中操作。例如,如何定義快速求冪算法,使之能使用任何可交換運算。使用抽象算法將能得到更高效、可靠、安全和經(jīng)濟的軟件。
  這不是一本很容易讀的書,它也不是能提升你的編程技能的秘訣和技巧匯編。本書的價值是更根本性的,其終極目標是提升你對編程的洞察力。要想從中大獲裨益,你需要從頭到尾認真學習:閱讀代碼,證明引理,完成練習。到結束之時,你將看到如何把這里討論的演繹方法應用到你的程序中,保證你做出的軟件部件能一起工作,并表現(xiàn)出它們所應該表現(xiàn)的行為。
  書中給出的算法和需求針對某些被操作的類型。有關這些描述的代碼(也可以通過Web得到)采用C++的一個小子集書寫,這樣做是為了讓所有有經(jīng)驗的程序員都能理解。這個小子集可以看做一種特殊語言,是由Sean
Parent和Bjarne Stroustrup一起設計的。
  無論你是一位軟件開發(fā)者,還是其他以編程作為一項重要活動的專業(yè)人員,或者是一名在校的學生,你都會逐漸理解本書的經(jīng)驗豐富的作者多年來一直在教授和闡釋的道理:數(shù)學對于編程是絕好的東西,理論對于實際是絕好的東西。

作者簡介

  Alexander Stepanov
于1967~1972年間在國立莫斯科大學學習數(shù)學,從1972年開始在蘇聯(lián),1977年移民后繼續(xù)在美國從事編程工作。他編寫過操作系統(tǒng)、編程工具、編譯器和各種程序庫。他在程序設計基礎方面的工作先后得到GE、Polytechnic、AT&T、惠普、SGI和Adobe的支持。1995年因C++標準模板庫的設計獲Dr.
Dobb, Journal的程序設計杰出貢獻獎。
  Paul McJones
于1967~1971年間在加州大學伯克利分校學習工程數(shù)學。從1967年開始介入程序設計,涉足的領域包括操作系統(tǒng)、程序設計環(huán)境、事務處理系統(tǒng)以及企業(yè)和客戶應用系統(tǒng)等。他先后在加州大學、IBM、Xerox、Tandem、DEC和Adobe工作。1982年他與合作者一起因論文“The
Recovery Manager of the System R Database
Manager”獲得ACM程序設計系統(tǒng)和語言論文獎。
  裘宗燕,北京大學數(shù)學學院信息科學系教授。長期從事計算機軟件理論,形式化方法,程序設計和程序設計語言等方面的教學和研究工作。譯著包括《程序設計實踐》、《從規(guī)范出發(fā)的程序設計》、《C++語言的設計和演化》、《C++程序設計語言》、《計算機程序的構造和解釋》、《程序設計語言——實踐之路》等,著作有《從問題到程序——程序設計與C語言引論》等。

書籍目錄

譯者序
前言
關于作者
第1章基礎
 1.1理念范疇:實體,類別,類屬
 1.2值
 1.3對象
 1.4過程
 1.5規(guī)范類型
 1.6規(guī)范過程
 1.7概念
 1.8總結
第2章 變換及其軌道
 2.1變換
 2.2軌道
 2.3碰撞點
 2.4軌道規(guī)模的度量
 2.5動作
 2.6總結
第3章 可結合運算
 3.1可結合性
 3.2計算乘冪
 3.3程序變換
 3.4處理特殊情況的過程
 3.5參數(shù)化算法
 3.6線性遞歸
 3.7累積過程
 3.8總結
第4章 線性序
 4.1關系的分類
 4.2全序和弱序
 4.3按序選取
 4.4自然全序
 4.5派生過程組
 4.6按序選取過程的擴展
 4.7總結
第5章 有序代數(shù)結
 5.1基本代數(shù)結構
 5.2有序代數(shù)結構
 5.3求余
 5.4最大公因子
 5.5廣義gcd
 5.6Steingcd
 5.7商
 5.8負量的商和余數(shù)
 5.9概念及其模型
 5.10計算機整數(shù)類型
 5.11結論
第6章 迭代器
 6.1可讀性
 6.2迭代器
 6.3范圍
 6.4可讀范圍
 6.5遞增的范圍
 6.6前向迭代器
 6.7索引迭代器
 6.8雙向迭代器
 6.9隨機訪問迭代器
 6.10總結
第7章坐標結構
 7.1二叉坐標
 7.2雙向二叉坐標
 7.3坐標結構
 7.4同構,等價和有序
 7.5總結
第8章
后繼可變的坐標
 8.1鏈接迭代器
 8.2鏈接重整
 8.3鏈接重整的應用
 8.4鏈接的二叉坐標
 8.5結論
第9章拷貝
 9.1可寫性
 9.2基于位置的拷貝
 9.3基于謂詞的拷貝
 9.4范圍的交換
 9.5總結
第10章 重整
 10.1置換
 10.2重整
 10.3 反轉算法
 10.4 輪換算法
 10.5 算法選擇
 10.6 總結
第11章 劃分和歸并
 11.1劃分
 11.2平衡的歸約
 11.3歸并
 11.4總結
第12章 復合對象
 12.1簡單復合對象
 12.2動態(tài)序列
 12.3基礎類型
 12.4總結

附錄A 數(shù)學表示
附錄B 程序設計語言
參考文獻
索引

章節(jié)摘錄

版權頁:插圖:

媒體關注與評論

“要是問一位機械、建筑或電子工程師,如果不依靠堅實的數(shù)學基礎,他們能走多遠。他們會告訴你‘走不了多遠’。而所謂的軟件工程師在實踐其技能時,卻常常對他們所做工作的數(shù)學基礎知之甚少,甚至一無所知。同時我們也很奇怪為什么軟件由于不能按時發(fā)布并充斥錯誤而聲名狼藉,而其他工程師卻能按時完成其橋梁、汽車、各種電子裝置等,而且缺陷很少。本書就是想糾正這種不平衡現(xiàn)象。我在Adobe的高級開發(fā)團隊的成員們,但凡參加了基于同樣材料的課程,都覺得付出的時間獲益匪淺。初看可能覺得這種高度技術性的文字只是為計算機科學家寫的,其實所有從事實際工作的軟件工程師都應該來讀?!薄  ?Martin Newell,Adobe 院士“本書包含一些我所見過的最美的代碼?!薄  ?Bjarne Stroustrup,C++ 設計者“我很高興看到Alex課程的內容。擔任Silicon Graphics的CTO時,我曾大力支持這一課程的開發(fā)和教授,現(xiàn)在這本書已經(jīng)能被所有程序員閱讀了?!薄  ?Forest Baskett,合伙人,New Enterprise Associates“Paul的耐心和在體系結構方面的經(jīng)驗幫助把Alex的數(shù)學方法組織成為一套高度結構化的大廈——功德無量!”  —— Robert W. Taylor,Xerox PARC CSL和DEC系統(tǒng)研究中心創(chuàng)始人

編輯推薦

《編程原本》編輯推薦:追溯數(shù)學原理,探求編程的本質,STL之父Alexander Stepanov力作,C++之父Bjarne Stroustrup鼎力推薦,北大數(shù)學學院教授裘宗燕老師傾情獻譯。

圖書封面

圖書標簽Tags

評論、評分、閱讀與下載


    編程原本 PDF格式下載


用戶評論 (總計48條)

 
 

  •   編程原本(STL之父Alexander Stepanov力作,裘宗燕老師傾情獻譯,追溯數(shù)學原理,探求編程的本質)
  •   編程當中的數(shù)學原理,算法和數(shù)學,可提高編程洞察力
  •   是本好書,但是不適合初學者,不是講基本的編程語法,而是解決問題的方法
  •   編程大師寫的哦
  •   在西方,邏輯始終作為文明的一條主線,不管其內容是數(shù)量的還是其它。任何科學的描述和整理都要在邏輯這個框架上匯攏和展開。這就是邏輯的魅力。尤其當邏輯這種構造工具與數(shù)學結合起來的時候,就更顯示出無窮的魅力。數(shù)學這種數(shù)量模式與邏輯這種更高層次的模式,一起構造出一個無線豐富卻又簡單有序的紛繁世界。
  •   理論不錯!不過還可以再展開一點,基于數(shù)學專業(yè)看挺好,不知道計算機專業(yè)如何。另外,這本LaTeX的譯稿排版不太好看!?。?/li>
  •   數(shù)學很重要啊
  •   書的紙質很好,內容很深奧,不適合初學者,要有一定的開發(fā)經(jīng)驗的人,是從語言的高度講的。
  •   是本非常好的書,但有點深奧,需要細讀~~
  •   一本值得一讀的書,但是也具有一定的內容深度
  •   充滿著期待,強大的作者強大的譯者,應該不錯!
  •   書寫的很不錯。但是有點難度。一般人看不懂
  •   內容還是很高深,不太容易能接受
  •   物流很快,書的質量很好,內容很詳實啊
  •   還沒看內容,書的裝訂,紙張,排版之類的感覺還不錯
  •   比較難懂的一本書,不過,有挑戰(zhàn)力
  •   內容比較深奧,需要好好體會,總體很不錯
  •   內容很實用,贊一個。
  •   這是一座高山
  •   開闊思路,內容通俗易懂
  •   很薄,價錢比較高,還好內容比較精煉
  •   里面使用很多模板技術, 更是大量數(shù)學相關的模板編程, 難度頗大,反正難的書多了,硬著頭皮可以看的,
  •   書挺貴,不到300頁也要買59元。字比較疏,可以看得比較快
    裘宗燕老師翻譯的每一本書都是經(jīng)典,但愿這一本也不例外。


  •   還沒細看,書可以薄一點的
  •   送貨及時,內容有點深。
  •   晦澀,難啃
  •   內容高深,版面字大行稀,目前看不懂……
  •   努力學,爭取能看懂
  •   練練九陽神功。
  •   這學院派就喜歡把東西講得很復雜,然后說你要是理解了我講的,你自然明白我講的東西的好處。
  •   沒有把作者想表達的概念翻譯出來
  •   拿到手感覺書寫得一般般
  •   字體印的真大。。。 赤果果的把書加大加厚,以提高定價。
  •   還行,就是看不明白。
  •   讀了大概一半左右吧。感覺這本書的定位和市面上其它計算機相關書籍迥然不同。不是一本算法書,也不是一本講設計的書。它將編程語言中的一些基本結構映射到一些基本的數(shù)學概念,然后在這些數(shù)學概念的基礎上,通過演繹得到編程語言中這些基本結構的一些特征。我們可能熟悉特定場合下的這些特征,但可能沒有想過如何將其推廣至一般情形,或者考慮過這些特征的可靠基礎是什么。我的個人理解,這本書建立對program的可靠的基本認識,增加個人的編程修養(yǎng),但是對于每日的工作沒有明顯的影響。或許這本書和 Structure and Interpretation of Computer Programs屬于同一類,雖然它們看上去差別如此之大。
  •   經(jīng)典的一本,但是看不懂,哈哈
  •   只是隨便翻了翻,目前書主要還是留著以后用
  •   書還沒看 看了網(wǎng)上的推薦買的
  •   看不懂,感覺上是一本很牛B的書。看不懂當然牛逼了?不是,是因為里面全是各種數(shù)學的東西…我水平有限,感覺沒有對數(shù)學有較好的基礎,這本書還真是…不過也是代碼摻雜在其中的。在此寫下大的章題目,以供參考:第1章 基礎第2章 變換及其軌道第3章 可結合運算第4章 線性序第5章 有序代數(shù)結構第6章... 閱讀更多
  •   確是原本,返璞歸真。歸結了設計的方方面面
  •   印刷的感覺跟這個系列的書差距很大,看起來不習慣,紙張能不能不要那么白?感覺檔次就下去了
  •   STL之父寫的書,本身無可挑剔,用數(shù)學的思維重新審視編程,練內功的好書。只是排版讓人較為失望,字體太大。
  •   好書 超值
  •   高手推薦書籍,可以閱讀
  •   比較溫和,不容易上火
  •   一些基本原理
  •   一本很厚道的書
  •   編程原本
 

250萬本中文圖書簡介、評論、評分,PDF格式免費下載。 第一圖書網(wǎng) 手機版

京ICP備13047387號-7