編程原本

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

前言

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

內(nèi)容概要

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

作者簡介

  Alexander Stepanov
于1967~1972年間在國立莫斯科大學(xué)學(xué)習(xí)數(shù)學(xué),從1972年開始在蘇聯(lián),1977年移民后繼續(xù)在美國從事編程工作。他編寫過操作系統(tǒng)、編程工具、編譯器和各種程序庫。他在程序設(shè)計基礎(chǔ)方面的工作先后得到GE、Polytechnic、AT&T、惠普、SGI和Adobe的支持。1995年因C++標(biāo)準(zhǔn)模板庫的設(shè)計獲Dr.
Dobb, Journal的程序設(shè)計杰出貢獻(xiàn)獎。
  Paul McJones
于1967~1971年間在加州大學(xué)伯克利分校學(xué)習(xí)工程數(shù)學(xué)。從1967年開始介入程序設(shè)計,涉足的領(lǐng)域包括操作系統(tǒng)、程序設(shè)計環(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è)計系統(tǒng)和語言論文獎。
  裘宗燕,北京大學(xué)數(shù)學(xué)學(xué)院信息科學(xué)系教授。長期從事計算機(jī)軟件理論,形式化方法,程序設(shè)計和程序設(shè)計語言等方面的教學(xué)和研究工作。譯著包括《程序設(shè)計實踐》、《從規(guī)范出發(fā)的程序設(shè)計》、《C++語言的設(shè)計和演化》、《C++程序設(shè)計語言》、《計算機(jī)程序的構(gòu)造和解釋》、《程序設(shè)計語言——實踐之路》等,著作有《從問題到程序——程序設(shè)計與C語言引論》等。

書籍目錄

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

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

章節(jié)摘錄

版權(quán)頁:插圖:

媒體關(guān)注與評論

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

編輯推薦

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

圖書封面

圖書標(biāo)簽Tags

評論、評分、閱讀與下載


    編程原本 PDF格式下載


用戶評論 (總計48條)

 
 

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


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

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

京ICP備13047387號-7