程序設(shè)計(jì)語(yǔ)言原理(原書第12版)
定 價(jià):229 元
叢書名:計(jì)算機(jī)科學(xué)叢書
本書從為什么學(xué)習(xí)程序設(shè)計(jì)語(yǔ)言、常用程序設(shè)計(jì)語(yǔ)言的演化史、評(píng)估程序設(shè)計(jì)語(yǔ)言結(jié)構(gòu)的標(biāo)準(zhǔn),以及這些語(yǔ)言基本的實(shí)現(xiàn)方法開始講起,通過不局限于特定語(yǔ)言種類地分析語(yǔ)言結(jié)構(gòu)的設(shè)計(jì)問題,檢測(cè)設(shè)計(jì)選擇,以及比較設(shè)計(jì)可選方案來(lái)講述程序設(shè)計(jì)語(yǔ)言基本原理。
第12版的更新本書第12版的目標(biāo)、總體結(jié)構(gòu)以及方法與之前的11個(gè)版本相同。個(gè)目標(biāo)是介紹現(xiàn)代程序設(shè)計(jì)語(yǔ)言的基本結(jié)構(gòu),并為讀者提供對(duì)現(xiàn)有以及未來(lái)的程序設(shè)計(jì)語(yǔ)言進(jìn)行嚴(yán)格評(píng)估的工具。第二個(gè)目標(biāo)是幫助讀者做好學(xué)習(xí)編譯器設(shè)計(jì)的準(zhǔn)備,為此,本書深入討論了程序設(shè)計(jì)語(yǔ)言的結(jié)構(gòu),展示了描述語(yǔ)法的形式化方法,并介紹了詞法和語(yǔ)法分析的方法。與第11版相比,第12版有若干變化。為了保持本書內(nèi)容不落伍,對(duì)于某些程序設(shè)計(jì)語(yǔ)言(尤其是Lua和Objective-C)的討論,本版本幾乎全部刪除,而有關(guān)較新的程序設(shè)計(jì)語(yǔ)言Swift的內(nèi)容則被分別增加到若干章中。此外,在第6章中新增一節(jié)介紹可選類型。在8.3.4節(jié)中增加了一些介紹Python中的迭代器的內(nèi)容。書中還有多處小改動(dòng),以對(duì)一些討論內(nèi)容進(jìn)行糾正和澄清。愿景本書主要描述程序設(shè)計(jì)語(yǔ)言的基本概念。為此,主要討論各種語(yǔ)言結(jié)構(gòu)的設(shè)計(jì)問題,研究一些常見的語(yǔ)言在結(jié)構(gòu)上的設(shè)計(jì)選擇,并對(duì)備選設(shè)計(jì)方案進(jìn)行嚴(yán)格的比較。對(duì)程序設(shè)計(jì)語(yǔ)言進(jìn)行的任何細(xì)致研究都無(wú)法脫離一些相關(guān)的主題,包括描述程序設(shè)計(jì)語(yǔ)言語(yǔ)法和語(yǔ)義的形式化方法,第3章將介紹這些方法。此外,還必須考慮各種語(yǔ)言結(jié)構(gòu)的實(shí)現(xiàn)技術(shù),第4章將討論詞法和語(yǔ)法分析,第10章將介紹子程序鏈接的實(shí)現(xiàn)。本書還將討論一些其他語(yǔ)言結(jié)構(gòu)的實(shí)現(xiàn)技術(shù)。以下各段將概述第12版內(nèi)容。章節(jié)概述第1章首先介紹程序設(shè)計(jì)語(yǔ)言的基本原理,然后討論用于評(píng)價(jià)程序設(shè)計(jì)語(yǔ)言和語(yǔ)言結(jié)構(gòu)的標(biāo)準(zhǔn),同時(shí),分析影響語(yǔ)言設(shè)計(jì)的主要因素、語(yǔ)言設(shè)計(jì)中的權(quán)衡以及語(yǔ)言實(shí)現(xiàn)的基本方法。第2章概述本書所討論的語(yǔ)言的發(fā)展過程。雖然沒有完整地描述任何一種語(yǔ)言,但是對(duì)每種語(yǔ)言的起源、目的和貢獻(xiàn)都會(huì)進(jìn)行討論。這樣的歷史回顧是很有價(jià)值的,因?yàn)樗鼮槲覀兝斫猱?dāng)代語(yǔ)言設(shè)計(jì)的實(shí)踐和理論基礎(chǔ)提供了必要的背景。這也推動(dòng)了對(duì)語(yǔ)言設(shè)計(jì)與評(píng)價(jià)的進(jìn)一步研究。因?yàn)檫@本書的其余部分都不依賴于第2章,所以這一章可以獨(dú)立于其他章節(jié)單獨(dú)閱讀。第3章先介紹用于描述程序設(shè)計(jì)語(yǔ)言的BNF范式的主要形式化方法。接下來(lái)討論用于描述語(yǔ)言的語(yǔ)法和靜態(tài)語(yǔ)義的屬性文法。然后探討語(yǔ)義描述的難點(diǎn),并對(duì)三種常見的語(yǔ)義方法(操作語(yǔ)義、指稱語(yǔ)義和公理語(yǔ)義)進(jìn)行簡(jiǎn)要介紹。第4章介紹詞法分析和語(yǔ)法分析。這一章主要面向那些不設(shè)置編譯器設(shè)計(jì)課程的計(jì)算機(jī)科學(xué)院系。與第2章類似,這一章獨(dú)立于除第3章之外的所有部分。這意味著這一章也可以獨(dú)立于其他章節(jié)單獨(dú)閱讀。第5~14章詳細(xì)描述程序設(shè)計(jì)語(yǔ)言中主要結(jié)構(gòu)的設(shè)計(jì)問題。對(duì)于每一種語(yǔ)言結(jié)構(gòu),都將講述幾種示例語(yǔ)言的設(shè)計(jì)選擇并對(duì)其進(jìn)行評(píng)估。具體來(lái)說,第5章介紹變量的一些特性,第6章介紹數(shù)據(jù)類型,第7章解釋表達(dá)式和賦值語(yǔ)句,第8章描述控制語(yǔ)句,第9章和第10章討論子程序及其實(shí)現(xiàn),第11章研究數(shù)據(jù)抽象機(jī)制,第12章深入討論支持面向?qū)ο蟪绦蛟O(shè)計(jì)的語(yǔ)言特性(繼承和動(dòng)態(tài)方法綁定),第13章討論并發(fā)程序單元,第14章討論異常處理,并簡(jiǎn)要討論事件處理。第15章和第16章描述兩種重要程序設(shè)計(jì)泛型:函數(shù)式程序設(shè)計(jì)與邏輯程序設(shè)計(jì)。注意,第6章和第8章已經(jīng)討論過函數(shù)式程序設(shè)計(jì)語(yǔ)言的某些數(shù)據(jù)結(jié)構(gòu)和控制構(gòu)造。第15章介紹Scheme,包括它的一些基本函數(shù)、特殊形式、函數(shù)形式,以及一些使用Scheme語(yǔ)言編寫的簡(jiǎn)單函數(shù)示例。此外,還簡(jiǎn)要介紹ML、Haskell和F#,以說明函數(shù)式程序設(shè)計(jì)的一些不同方向。第16章介紹邏輯程序設(shè)計(jì)以及邏輯程序設(shè)計(jì)語(yǔ)言Prolog。致授課教師一般應(yīng)詳細(xì)講解第1章和第3章。對(duì)于第2章,盡管學(xué)生們會(huì)認(rèn)為其內(nèi)容很有趣且閱讀起來(lái)很輕松,但由于缺乏嚴(yán)格的技術(shù)內(nèi)容,我們不建議為其安排比較多的課時(shí)。如前所述,由于后續(xù)各章中的內(nèi)容都不依賴于第2章,因此可以跳過該章。如果單獨(dú)設(shè)置了編譯器設(shè)計(jì)課程,那么也不需要講授第4章。對(duì)于那些具有較為豐富的C 、Java或C#編程經(jīng)驗(yàn)的學(xué)生來(lái)說,第5~9章學(xué)習(xí)起來(lái)應(yīng)該相對(duì)容易,而第10~14章的內(nèi)容更具挑戰(zhàn)性,因此需要更加詳細(xì)地講授。第15章和第16章對(duì)于大多數(shù)低年級(jí)學(xué)生來(lái)說是全新的內(nèi)容。在理想情況下,應(yīng)該為需要學(xué)習(xí)這些內(nèi)容的學(xué)生提供Scheme和Prolog的語(yǔ)言處理器。使用充足的學(xué)習(xí)材料可以讓學(xué)生學(xué)習(xí)程序設(shè)計(jì)簡(jiǎn)單一些。面向本科生開設(shè)的課程可能無(wú)法涵蓋本書后兩章中的所有內(nèi)容,但面向研究生開設(shè)的課程應(yīng)該能夠跳過前面幾章中有關(guān)命令式程序設(shè)計(jì)語(yǔ)言的內(nèi)容,這樣就能有足夠的課時(shí)來(lái)討論后兩章中的內(nèi)容。補(bǔ)充材料讀者可以訪問本書的配套網(wǎng)站www.pearson.com/cs-resources來(lái)獲取一些補(bǔ)充材料,包括:一套講義幻燈片。書中的每一章都有配套的幻燈片。本書中的所有圖片。幾種程序設(shè)計(jì)語(yǔ)言的迷你手冊(cè)(約100頁(yè)的教程)。可供使用的語(yǔ)言處理器本書所討論的某些程序設(shè)計(jì)語(yǔ)言的處理器以及相關(guān)信息可在以下網(wǎng)站找到:C、C 、Fortran和Ada gcc.gnu.orgC#和F# microsoft.comJava java.sun.comHaskell haskell.orgScheme www.plt-scheme.org/software/drschemePerl www.perl.comPython
羅伯特·W. 塞巴斯塔(Robert W. Sebesta) 科羅拉多大學(xué)斯普林斯分校計(jì)算機(jī)科學(xué)系榮休副教授,擁有40多年計(jì)算機(jī)科學(xué)課程教學(xué)經(jīng)驗(yàn),研究興趣包括程序設(shè)計(jì)語(yǔ)言的設(shè)計(jì)和評(píng)估以及Web程序設(shè)計(jì)。
譯者序第12版的變化前言致謝第1章 預(yù)備知識(shí)11.1 掌握程序設(shè)計(jì)語(yǔ)言概念的必要性11.2 程序設(shè)計(jì)領(lǐng)域31.2.1 科學(xué)計(jì)算應(yīng)用31.2.2 商業(yè)應(yīng)用31.2.3 人工智能41.2.4 Web軟件41.3 語(yǔ)言評(píng)價(jià)標(biāo)準(zhǔn)41.3.1 可讀性51.3.2 可寫性91.3.3 可靠性91.3.4 成本101.4 影響語(yǔ)言設(shè)計(jì)的因素111.4.1 計(jì)算機(jī)體系結(jié)構(gòu)111.4.2 程序設(shè)計(jì)方法學(xué)131.5 程序設(shè)計(jì)語(yǔ)言分類141.6 語(yǔ)言設(shè)計(jì)中的權(quán)衡141.7 實(shí)現(xiàn)方法151.7.1 編譯161.7.2 純解釋181.7.3 混合實(shí)現(xiàn)系統(tǒng)191.7.4 預(yù)處理程序191.8 程序設(shè)計(jì)環(huán)境20小結(jié)20復(fù)習(xí)題21習(xí)題21第2章 主要程序設(shè)計(jì)語(yǔ)言發(fā)展簡(jiǎn)史232.1 Zuse研制的Plankalkl語(yǔ)言232.1.1 歷史背景232.1.2 語(yǔ)言概述252.2 偽代碼252.2.1 短碼262.2.2 快碼262.2.3 UNIVAC編譯系統(tǒng)272.2.4 相關(guān)工作272.3 IBM 704和Fortran272.3.1 歷史背景272.3.2 設(shè)計(jì)過程282.3.3 Fortran I概述282.3.4 Fortran II292.3.5 Fortran IV、77、90、95、2003和2008292.3.6 評(píng)價(jià)302.4 函數(shù)式程序設(shè)計(jì)語(yǔ)言:LISP312.4.1 人工智能的開端和列表處理312.4.2 LISP的設(shè)計(jì)過程322.4.3 語(yǔ)言概述322.4.4 評(píng)價(jià)332.4.5 LISP的兩種后繼語(yǔ)言342.4.6 相關(guān)語(yǔ)言342.5 邁向成熟的步:ALGOL 60352.5.1 歷史背景352.5.2 早期設(shè)計(jì)過程352.5.3 ALGOL 58概述362.5.4 ALGOL 58報(bào)告的接受度372.5.5 ALGOL 60的設(shè)計(jì)過程372.5.6 ALGOL 60概述372.5.7 評(píng)價(jià)382.6 商業(yè)處理語(yǔ)言:COBOL392.6.1 歷史背景392.6.2 FLOW-MATIC402.6.3 COBOL的設(shè)計(jì)過程402.6.4 評(píng)價(jià)402.7 分時(shí)處理的開始:Basic422.7.1 設(shè)計(jì)過程432.7.2 語(yǔ)言概述432.7.3 評(píng)價(jià)432.8 滿足所有人的需求:PL/I462.8.1 歷史背景472.8.2 設(shè)計(jì)過程472.8.3 語(yǔ)言概述482.8.4 評(píng)價(jià)482.9 兩種早期的動(dòng)態(tài)語(yǔ)言:APL和SNOBOL492.9.1 APL的起源及特征492.9.2 SNOBOL的起源和特征502.10 數(shù)據(jù)抽象的開端:SIMULA 67502.10.1 設(shè)計(jì)過程502.10.2 語(yǔ)言概述502.11 正交設(shè)計(jì):ALGOL 68502.11.1 設(shè)計(jì)過程512.11.2 語(yǔ)言概述512.11.3 評(píng)價(jià)512.12 ALGOL系列語(yǔ)言的早期繼承者522.12.1 簡(jiǎn)潔的設(shè)計(jì):Pascal522.12.2 一個(gè)輕便的系統(tǒng)語(yǔ)言:C532.13 基于邏輯的程序設(shè)計(jì):Prolog552.13.1 設(shè)計(jì)過程552.13.2 語(yǔ)言概述552.13.3 評(píng)價(jià)562.14 歷史上規(guī)模的語(yǔ)言設(shè)計(jì):Ada562.14.1 歷史背景562.14.2 設(shè)計(jì)過程562.14.3 語(yǔ)言概述572.14.4 評(píng)價(jià)582.14.5 Ada 95和Ada 2005582.15 面向?qū)ο蟪绦蛟O(shè)計(jì):Smalltalk592.15.1 設(shè)計(jì)過程592.15.2 語(yǔ)言概述602.15.3 評(píng)價(jià)602.16 結(jié)合命令式和面向?qū)ο蟮奶匦裕篊 612.16.1 設(shè)計(jì)過程612.16.2 語(yǔ)言概述622.16.3 評(píng)價(jià)622.16.4 Swift:Objective-C的替代品622.16.5 另一個(gè)相關(guān)語(yǔ)言:Delphi632.17 基于命令式的面向?qū)ο笳Z(yǔ)言:Java632.17.1 設(shè)計(jì)過程632.17.2 語(yǔ)言概述642.17.3 評(píng)價(jià)652.18 腳本語(yǔ)言662.18.1 Perl的起源與特點(diǎn)662.18.2 JavaScript的起源與特點(diǎn)672.18.3 PHP的起源與特點(diǎn)692.18.4 Python的起源與特點(diǎn)692.18.5 Ruby的起源與特點(diǎn)702.19 .NET旗幟語(yǔ)言:C#702.19.1 設(shè)計(jì)過程702.19.2 語(yǔ)言概述712.19.3 評(píng)價(jià)712.20 混合標(biāo)記程序設(shè)計(jì)語(yǔ)言722.20.1 XSLT722.20.2 JSP73小結(jié)74文獻(xiàn)注記74復(fù)習(xí)題74習(xí)題76程序設(shè)計(jì)練習(xí)76第3章 語(yǔ)法和語(yǔ)義描述773.1 概述773.2 語(yǔ)法描述的一般問題783.2.1 語(yǔ)言識(shí)別器783.2.2 語(yǔ)言生成器793.3 語(yǔ)法描述的形式化方法793.3.1 Backus-Naur范式與上下文無(wú)關(guān)文法793.3.2 擴(kuò)展的BNF范式883.3.3 文法和識(shí)別器903.4 屬性文法903.4.1 靜態(tài)語(yǔ)義903.4.2 基本概念913.4.3 屬性文法的定義913.4.4 內(nèi)在屬性913.4.5 屬性文法示例913.4.6 計(jì)算屬性值933.4.7 評(píng)價(jià)943.5 描述程序的含義:動(dòng)態(tài)語(yǔ)義943.5.1 操作語(yǔ)義953.5.2 指稱語(yǔ)義973.5.3 公理語(yǔ)義100小結(jié)110文獻(xiàn)注記110復(fù)習(xí)題110習(xí)題111第4章 詞法和語(yǔ)法分析1154.1 概述1154.2 詞法分析1164.3 語(yǔ)法分析問題1224.3.1 語(yǔ)法分析基礎(chǔ)1224.3.2 自頂向下的語(yǔ)法分析器1234.3.3 自底向上的語(yǔ)法分析器1244.3.4 語(yǔ)法分析的復(fù)雜度1244.4 遞歸下降的語(yǔ)法分析1244.4.1 遞歸下降的語(yǔ)法分析過程1244.4.2 LL文法類1294.5 自底向上的語(yǔ)法分析1314.5.1 自底向上的語(yǔ)法分析器的語(yǔ)法分析問題1314.5.2 移進(jìn)-歸約算法1334.5.3 LR語(yǔ)法分析器133小結(jié)137復(fù)習(xí)題138習(xí)題138程序設(shè)計(jì)練習(xí)139第5章 名字、綁定與作用域1405.1 概述1405.2 名字1405.2.1 設(shè)計(jì)問題1405.2.2 名字形式1415.2.3 特殊單詞1415.3 變量1425.3.1 名字1425.3.2 地址1425.3.3 類型1435.3.4 值1435.4 綁定的概念1435.4.1 屬性到變量的綁定1445.4.2 綁定類型1445.4.3 存儲(chǔ)綁定和生存期1475.5 作用域1495.5.1 靜態(tài)作用域1495.5.2 分程序1505.5.3 聲明順序1535.5.4 全局作用域1535.5.5 對(duì)靜態(tài)作用域的評(píng)價(jià)1565.5.6 動(dòng)態(tài)作用域1565.5.7 對(duì)動(dòng)態(tài)作用域的評(píng)價(jià)1575.6 作用域和生存期1575.7 引用環(huán)境1585.8 有名常量159小結(jié)161復(fù)習(xí)題161習(xí)題162程序設(shè)計(jì)練習(xí)165第6章 數(shù)據(jù)類型1676.1 概述1676.2 基本數(shù)據(jù)類型1686.2.1 數(shù)值類型1686.2.2 布爾類型1706.2.3 字符類型1716.3 字符串類型1716.3.1 設(shè)計(jì)問題1716.3.2 字符串及其運(yùn)算1716.3.3 字符串長(zhǎng)度選項(xiàng)1736.3.4 評(píng)價(jià)1736.3.5 字符串類型的實(shí)現(xiàn)1746.4 枚舉類型1756.4.1 設(shè)計(jì)問題1756.4.2 設(shè)計(jì)1756.4.3 評(píng)價(jià)1766.5 數(shù)組類型1776.5.1 設(shè)計(jì)問題1776.5.2 數(shù)組和索引1786.5.3 下標(biāo)綁定和數(shù)組的種類1796.5.4 數(shù)組初始化1806.5.5 數(shù)組運(yùn)算1816.5.6 矩陣數(shù)組和鋸齒形數(shù)組1826.5.7 切片1826.5.8 評(píng)價(jià)1836.5.9 數(shù)組類型的實(shí)現(xiàn)1836.6 關(guān)聯(lián)數(shù)組1856.6.1 結(jié)構(gòu)與運(yùn)算1856.6.2 關(guān)聯(lián)數(shù)組的實(shí)現(xiàn)1866.7 記錄類型1866.7.1 記錄的定義1876.7.2 記錄中字段的引用1876.7.3 評(píng)價(jià)1886.7.4 記錄類型的實(shí)現(xiàn)1886.8 元組類型1896.9 列表類型1906.10 聯(lián)合類型1926.10.1 設(shè)計(jì)問題1926.10.2 判別式與自由聯(lián)合類型1926.10.3 F#的聯(lián)合類型1936.10.4 評(píng)價(jià)1936.10.5 聯(lián)合類型的實(shí)現(xiàn)1946.11 指針和引用類型1946.11.1 設(shè)計(jì)問題1946.11.2 指針運(yùn)算1946.11.3 指針的相關(guān)問題1956.11.4 C和C 中的指針1966.11.5 引用類型1986.11.6 評(píng)價(jià)1996.11.7 指針和引用類型的實(shí)現(xiàn)1996.12 可選類型2036.13 類型檢查2036.14 強(qiáng)類型2046.15 類型等價(jià)2056.16 理論和數(shù)據(jù)類型208小結(jié)209文獻(xiàn)注記210復(fù)習(xí)題210習(xí)題211程序設(shè)計(jì)練習(xí)212第7章 表達(dá)式與賦值語(yǔ)句2147.1 概述2147.2 算術(shù)表達(dá)式2147.2.1 運(yùn)算符求值順序2157.2.2 運(yùn)算分量求值順序2197.3 重載運(yùn)算符2217.4 類型轉(zhuǎn)換2227.4.1 表達(dá)式中的強(qiáng)制轉(zhuǎn)換2227.4.2 顯式類型轉(zhuǎn)換2237.4.3 表達(dá)式錯(cuò)誤2247.5 關(guān)系表達(dá)式和布爾表達(dá)式2247.5.1 關(guān)系表達(dá)式2247.5.2 布爾表達(dá)式2257.6 短路求值2267.7 賦值語(yǔ)句2277.7.1 簡(jiǎn)單賦值2277.7.2 條件賦值2277.7.3 復(fù)合賦值運(yùn)算符2277.7.4 一元賦值運(yùn)算符2287.7.5 賦值表達(dá)式2297.7.6 多重賦值2297.7.7 函數(shù)式程序設(shè)計(jì)語(yǔ)言中的賦值2307.8 混合方式賦值230小結(jié)231復(fù)習(xí)題231習(xí)題232程序設(shè)計(jì)練習(xí)233第8章 語(yǔ)句級(jí)控制結(jié)構(gòu)2348.1 概述2348.2 選擇語(yǔ)句2358.2.1 二路選擇語(yǔ)句2358.2.2 多路選擇語(yǔ)句2388.3 重復(fù)語(yǔ)句2448.3.1 計(jì)數(shù)控制循環(huán)2458.3.2 邏輯控制循環(huán)2488.3.3 用戶定義的循環(huán)控制機(jī)制2498.3.4 基于數(shù)據(jù)結(jié)構(gòu)的迭代2508.4 無(wú)條件分支2538.5 保護(hù)命令2548.6 結(jié)論256小結(jié)256復(fù)習(xí)題257習(xí)題257程序設(shè)計(jì)練習(xí)258第9章 子程序2609.1 概述2609.2 子程序基礎(chǔ)2609.2.1 子程序的一般性質(zhì)2609.2.2 基本定義2609.2.3 參數(shù)2629.2.4 過程與函數(shù)2659.3 子程序的設(shè)計(jì)問題2659.4 局部引用環(huán)境2669.4.1 局部變量2669.4.2 嵌套子程序2679.5 參數(shù)傳遞方法2679.5.1 參數(shù)傳遞的語(yǔ)義模型2689.5.2 參數(shù)傳遞的實(shí)現(xiàn)模型2689.5.3 參數(shù)傳遞方法的實(shí)現(xiàn)2729.5.4 常用語(yǔ)言的參數(shù)傳遞方法2729.5.5 參數(shù)類型檢查2749.5.6 多維數(shù)組參數(shù)2769.5.7 設(shè)計(jì)考量2779.5.8 參數(shù)傳遞實(shí)例2779.6 子程序作為參數(shù)2809.7 子程序間接調(diào)用2819.8 函數(shù)設(shè)計(jì)問題2829.8.1 函數(shù)的副作用2839.8.2 返回值類型2839.8.3 返回值的個(gè)數(shù)2839.9 重載子程序2839.10 泛型子程序2849.10.1 C 泛型函數(shù)2859.10.2 Java 5.0泛型方法2869.10.3 C# 2005泛型方法2879.10.4 F#泛型函數(shù)2889.11 用戶定義的重載運(yùn)算符2889.12 閉包2899.13 協(xié)同程序290小結(jié)292復(fù)習(xí)題293習(xí)題294程序設(shè)計(jì)練習(xí)295第10章 子程序?qū)崿F(xiàn)29710.1 調(diào)用和返回的一般語(yǔ)義29710.2 簡(jiǎn)單子程序的實(shí)現(xiàn)29710.3 具有棧動(dòng)態(tài)局部變量的子程序?qū)崿F(xiàn)29910.3.1 更復(fù)雜的活動(dòng)記錄29910.3.2 不含遞歸的例子30110.3.3 遞歸30210.4 嵌套子程序30410.4.1 基礎(chǔ)30410.4.2 靜態(tài)鏈30510.5 分程序30910.6 動(dòng)態(tài)作用域的實(shí)現(xiàn)31010.6.1 深層訪問31010.6.2 淺層訪問311小結(jié)312復(fù)習(xí)題312習(xí)題313程序設(shè)計(jì)練習(xí)315第11章 抽象數(shù)據(jù)類型與封裝結(jié)構(gòu)31611.1 抽象的概念31611.2 數(shù)據(jù)抽象簡(jiǎn)介31711.2.1 浮點(diǎn)型抽象數(shù)據(jù)類型31711.2.2 用戶自定義抽象數(shù)據(jù)類型31711.2.3 示例31811.3 抽象數(shù)據(jù)類型的設(shè)計(jì)問題31911.4 語(yǔ)言示例31911.4.1 C 中的抽象數(shù)據(jù)類型32011.4.2 Java中的抽象數(shù)據(jù)類型32511.4.3 C#中的抽象數(shù)據(jù)類型32611.4.4 Ruby中的抽象數(shù)據(jù)類型32711.5 參數(shù)化抽象數(shù)據(jù)類型33011.5.1 C 33011.5.2 Java 5.033111.5.3 C# 200533311.6 封裝結(jié)構(gòu)33311.6.1 概述33411.6.2 C中的封裝33411.6.3 C 中的封裝33411.6.4 C#程序集33511.7 命名封裝33611.7.1 C 命名空間33611.7.2 Java包33711.7.3 Ruby模塊338小結(jié)338復(fù)習(xí)題339習(xí)題340程序設(shè)計(jì)練習(xí)340第12章 面向?qū)ο蟪绦蛟O(shè)計(jì)支持34212.1 概述34212.2 面向?qū)ο蟪绦蛟O(shè)計(jì)34212.2.1 引言34212.2.2 繼承34312.2.3 動(dòng)態(tài)綁定34412.3 面向?qū)ο笳Z(yǔ)言的設(shè)計(jì)問題34612.3.1 對(duì)象的排他性34612.3.2 子類是否為子類型34612.3.3 單繼承與多繼承34712.3.4 對(duì)象的分配和釋放34712.3.5 動(dòng)態(tài)綁定與靜態(tài)綁定34812.3.6 嵌套類34812.3.7 對(duì)象的初始化34912.4 支持面向?qū)ο蟪绦蛟O(shè)計(jì)的特定語(yǔ)言34912.4.1 Smalltalk34912.4.2 C 35012.4.3 Java35912.4.4 C#36212.4.5 Ruby36312.5 面向?qū)ο蠼Y(jié)構(gòu)的實(shí)現(xiàn)36612.5.1 存儲(chǔ)示例數(shù)據(jù)36612.5.2 方法調(diào)用與方法的動(dòng)態(tài)綁定36612.6 反射36812.6.1 概述36812.6.2 什么是反射36812.6.3 Java中的反射36912.6.4 C#中的反射371小結(jié)372復(fù)習(xí)題373習(xí)題375程序設(shè)計(jì)練習(xí)375第13章 并發(fā)37613.1 概述37613.1.1 多處理器體系結(jié)構(gòu)37713.1.2 并發(fā)的分類37813.1.3 使用并發(fā)的動(dòng)機(jī)37813.2 子程序級(jí)并發(fā)37913.2.1 基本概念37913.2.2 并發(fā)語(yǔ)言設(shè)計(jì)38213.2.3 設(shè)計(jì)問題38213.3 信號(hào)量38213.3.1 概述38213.3.2 合作同步38313.3.3 競(jìng)爭(zhēng)同步38513.3.4 評(píng)價(jià)38613.4 管程38613.4.1 概述38613.4.2 競(jìng)爭(zhēng)同步38613.4.3 合作同步38613.4.4 評(píng)價(jià)38713.5 消息傳遞38713.5.1 概述38713.5.2 同步消息傳遞的概念38813.6 Ada并發(fā)支持38813.6.1 基本概念38813.6.2 合作同步39113.6.3 競(jìng)爭(zhēng)同步39213.6.4 受保護(hù)對(duì)象39313.6.5 評(píng)價(jià)39413.7 Java線程39413.7.1 線程類39513.7.2 優(yōu)先級(jí)39713.7.3 信號(hào)量39713.7.4 競(jìng)爭(zhēng)同步39713.7.5 合作同步39813.7.6 非阻塞同步40113.7.7 顯式鎖40113.7.8 評(píng)價(jià)40213.8 C#線程40213.8.1 基本線程操作40213.8.2 同步線程40413.8.3 評(píng)價(jià)40513.9 函數(shù)式語(yǔ)言中的并發(fā)40513.9.1 Multi-LISP40513.9.2 并發(fā)ML40613.9.3 F#40613.10 語(yǔ)句級(jí)并發(fā)40713.10.1 高性能Fortran407小結(jié)409文獻(xiàn)注記410復(fù)習(xí)題410習(xí)題411程序設(shè)計(jì)練習(xí)412第14章 異常處理和事件處理41314.1 異常處理概述41314.1.1 基本概念41414.1.2 設(shè)計(jì)問題41514.2 C 異常處理41714.2.1 異常處理程序41714.2.2 異常綁定到處理程序41814.2.3 延續(xù)41814.2.4 其他設(shè)計(jì)選擇41814.2.5 示例41914.2.6 評(píng)價(jià)42014.3 Java異常處理42014.3.1 異常類別42114.3.2 異常處理程序42114.3.3 異常綁定到處理程序42114.3.4 其他設(shè)計(jì)選擇42214.3.5 示例42314.3.6 finally子句42414.3.7 斷言42514.3.8 評(píng)價(jià)42514.4 Python和Ruby的異常處理42614.4.1 Python42614.4.2 Ruby42714.5 事件處理概述42814.6 J