本書由兩位知名的計算機(jī)科學(xué)教育家編寫,全面而細(xì)致地介紹了計算機(jī)科學(xué)的各個方面。書中從信息層開始,歷經(jīng)硬件層、程序設(shè)計層、操作系統(tǒng)層、應(yīng)用程序?qū)雍屯ㄐ艑樱钊肫饰隽擞嬎阆到y(tǒng)的每個分層,后討論了計算的限制。此外,正文中穿插了大量的人物傳記、歷史點評、道德問題和新的技術(shù)發(fā)展信息,有助于你進(jìn)一步了解計算機(jī)科學(xué)。每章后面都附帶有大量的練習(xí),可以幫助你即時重溫并掌握這一章所述的內(nèi)容。
前 言Computer Science Illuminated, Fifth Edition
論題選擇為了制定這本CS0教材的論題大綱,我們利用了許多資源,包括課程目錄、教材大綱以及一個電子郵件調(diào)查問卷。設(shè)計這個調(diào)查問卷的目的在于了解我們的同事對這門課應(yīng)該包括哪些內(nèi)容的想法。我要求大家(包括自己)列出下列三種清單:
如果CS0這門課是學(xué)生在大學(xué)階段學(xué)習(xí)的唯一一門計算機(jī)科學(xué)的課程,請列出四種你認(rèn)為他們應(yīng)該掌握的論題。
請列出四種你想要學(xué)生在進(jìn)入CS1這門課之前掌握的論題。
請補(bǔ)充四種你想要學(xué)習(xí)CS1的學(xué)生熟悉的論題。
這些資源的交集反映出的大多數(shù)人的意見,也就構(gòu)成了本書的大綱。在學(xué)習(xí)CS1之前掌握了本書內(nèi)容的學(xué)生將為繼續(xù)學(xué)習(xí)計算機(jī)科學(xué)打下堅實的基礎(chǔ)。盡管我們的意圖是編寫一本CS0教材,但是許多評論家都認(rèn)為本書的覆蓋面非常廣泛,可以作為一種程序設(shè)計語言的計算機(jī)科學(xué)導(dǎo)論的參考書。
結(jié)構(gòu)說明在第1章中,我們介紹了硬件和軟件的歷史,并且用洋蔥的結(jié)構(gòu)來類比計算機(jī)系統(tǒng)的結(jié)構(gòu)。計算機(jī)和它的機(jī)器語言構(gòu)成了洋蔥的芯,軟件層和更復(fù)雜的硬件一層層地裹住了這個芯。首先介紹的是機(jī)器語言,然后是高級語言,包括FORTRAN、Lisp、Pascal、C、C++和Java。在介紹這些語言的同時,還介紹了利用它們進(jìn)行程序設(shè)計的過程,包括自頂向下的設(shè)計和面向?qū)ο蟮脑O(shè)計。我們對抽象數(shù)據(jù)類型所扮演的角色及其實現(xiàn)的理解已經(jīng)成熟了。操作系統(tǒng)及其資源管理技術(shù)(包括更大、更快的二級存儲介質(zhì)上的文件)包圍著這些程序,并對它們進(jìn)行管理。
接下來的一層由更復(fù)雜的通用或?qū)S密浖到y(tǒng)構(gòu)成,它們覆蓋了操作系統(tǒng)。這些功能強(qiáng)大的程序由計算機(jī)科學(xué)中的并行理論支持。最后一層由網(wǎng)絡(luò)和網(wǎng)絡(luò)軟件構(gòu)成,網(wǎng)絡(luò)軟件包括計算機(jī)之間通信必需的所有工具。Internet和萬維網(wǎng)給這一層畫上了最后一筆。
當(dāng)這些層隨著時間的推移逐漸出現(xiàn)時,用戶對計算機(jī)系統(tǒng)的硬件接觸得越來越少。每個層都是它下面的計算機(jī)系統(tǒng)的抽象。隨著每個層的發(fā)展,新層的用戶和內(nèi)部層的用戶聯(lián)合起來,在經(jīng)濟(jì)領(lǐng)域的高科技部門創(chuàng)造了大量的生產(chǎn)力。本書的目的是提供各個層的概述,介紹基本的硬件和軟件技術(shù),使學(xué)生了解和欣賞計算系統(tǒng)的方方面面。
在介紹這種洋蔥式結(jié)構(gòu)時,我們有兩種選擇,一種是從內(nèi)向外逐層介紹,另一種是從外向內(nèi)進(jìn)行介紹。從外向內(nèi)的方法看起來非常吸引人。我們可以從最抽象的層開始介紹,一次剝掉一個層,直到具體的機(jī)器層為止。但是,研究表明,比起抽象的例子,學(xué)生們更容易理解具體的例子,即使他們本身是抽象思想家。因此,我們選擇從具體的機(jī)器層開始,按照層的創(chuàng)建順序進(jìn)行分析,當(dāng)學(xué)生完全理解了一個層之后,再轉(zhuǎn)移到下一個層就比較容易。
第5版中的變化在計劃這次改版時,我們咨詢了CS教育學(xué)院的同事,要求他們給予一些反饋。37人回復(fù)了我們,非常感謝這些有思考、有見解的回應(yīng)。
第15章中添加了“云計算”一節(jié),并更新了域名部分。第16章中加入了HTML5。此外,專門用一章(第17章)討論計算機(jī)安全。老版的第17章是現(xiàn)在的第18章。目前,大多數(shù)的安全問題集中在網(wǎng)絡(luò)時代信息的安全使用上,因此把第17章放在通信層的最后一章。
除了新的章節(jié),現(xiàn)在每章結(jié)尾部分的道德問題有了更為一致的主題,從道德責(zé)任的定義和一個專業(yè)計算機(jī)人士的道德責(zé)任開始,展示了兩個主要的計算協(xié)會ACM和IEEE的道德準(zhǔn)則,也給出了選擇計算機(jī)專業(yè)可能面臨的案例研究。這些材料在計算機(jī)課程中稱為the Tenth Strand,其中對涉及計算的主要社會問題進(jìn)行了討論,包括政治、版權(quán)、工作場所監(jiān)視和游戲成癮方面。
當(dāng)然,我們對整書進(jìn)行了全面調(diào)整,對“你知道嗎”板塊和傳記部分也進(jìn)行了更新。
摘要第1章是我們探索計算機(jī)科學(xué)(計算機(jī)系統(tǒng)“洋蔥”)的基礎(chǔ),描述了本書的組織結(jié)構(gòu)。第2章和第3章則分析了包含在物理硬件中的層。這個層稱為信息層,它反映了如何在計算機(jī)上表示信息。第2章介紹了二進(jìn)制數(shù)制以及它與其他數(shù)制(如人們?nèi)粘S玫氖M(jìn)制系統(tǒng))的關(guān)系。第3章研究了如何獲取多種類型(如數(shù)字、文本、圖像、音頻和視頻)的信息以及如何用二進(jìn)制格式表示它們。
第4章和第5章介紹了硬件層。計算機(jī)硬件包括的設(shè)備有晶體管、門和電路,它們都按照基本原理控制電流。正是這些核心電路使專用的元件(如計算機(jī)的中央處理器——CPU)得以運轉(zhuǎn)。第4章介紹了門和電路。第5章介紹了計算機(jī)的元件,以及在馮·諾伊曼體系結(jié)構(gòu)中這些元件是如何交互的。當(dāng)然,第5章開頭的廣告已經(jīng)更新了,在你閱讀本書時,它可能又過時了。
第6~9章介紹了程序設(shè)計層。第6章使用模擬計算機(jī)Pep/8介紹了機(jī)器語言和匯編語言的概念。該章引入了用偽代碼編寫算法的功能,介紹了循環(huán)與選擇的概念,并在Pep/8中以偽代碼的方式實現(xiàn)。
第7章分析了問題求解過程,同時涉及人類和計算機(jī)的問題求解方法。引導(dǎo)這個論題的是George Polya的人類問題求解策略。該章介紹了自頂向下的方法來設(shè)計簡單算法,并在討論算法時選擇經(jīng)典的搜索和排序算法。因為算法是對數(shù)據(jù)進(jìn)行操作,所以在此研究數(shù)據(jù)的結(jié)構(gòu),以便更有效地處理數(shù)據(jù)。該章也介紹了子算法(子程序)語句。
第8章介紹了抽象數(shù)據(jù)類型或容器,容器是只知道其屬性或行為的復(fù)合結(jié)構(gòu)。該章介紹了列表、有序列表、棧、隊列、二叉檢索樹和圖,擴(kuò)展討論了子算法,包括引用參數(shù)與值參、參數(shù)傳遞。
第9章介紹了高級程序設(shè)計語言的概念。許多杰出的高級語言包含與面向?qū)ο缶幊滔嚓P(guān)的功能,我們先繞過這個設(shè)計過程,討論語言范型以及編譯過程。我們用四種編程語言設(shè)計了一些小例子來說明偽代碼的概念,即Python、VB.NET、Java和C++。
第10章和第11章介紹了操作系統(tǒng)層。第10章討論了操作系統(tǒng)的資源管理任務(wù),介紹了一些用于實現(xiàn)這些任務(wù)的基本算法。第11章介紹了文件系統(tǒng),包括什么是文件系統(tǒng),以及操作系統(tǒng)如何管理它們。
第12~14章介紹了應(yīng)用程序?qū)印_@一層由人們用來解決問題的通用應(yīng)用程序和專用應(yīng)用程序構(gòu)成。我們根據(jù)這些程序的基礎(chǔ),把這一層分到了計算機(jī)科學(xué)的幾個子學(xué)科中。第12章分析了信息系統(tǒng),第13章分析了人工智能,第14章分析了模擬、圖形學(xué)、游戲和其他應(yīng)用。
第15~17章介紹了通信層。第15章說明了計算機(jī)之間通信的理論和應(yīng)用。第16章介紹了萬維網(wǎng)和它對當(dāng)今生活的影響,包括修訂的社交媒體部分。全新的第17章討論計算機(jī)安全,涵蓋了當(dāng)今信息時代與保護(hù)信息安全相關(guān)的各個方面。
第2~17章都是說明計算機(jī)可以做什么以及它是如何做的。第18章進(jìn)行了總結(jié),討論了計算機(jī)硬件和軟件的固有局限性,以及計算機(jī)能夠解決和不能解決的問題。在討論算法的有效性時,采用了大O符號,以便討論算法的分類。此外還介紹了停機(jī)問題,以說明某些不能解決的問題。
本書的第1章和最后一章就像一對書檔,第1章說明了計算系統(tǒng)是什么,第18章告誡我們計算系統(tǒng)不能做什么。它們之間的章節(jié)則深入探討了構(gòu)成計算系統(tǒng)的各個層。
特性本書具有三種特性,用于強(qiáng)調(diào)計算的歷史、廣度以及新技術(shù)帶來的道德義務(wù)。首先,每一章都有一個簡短的名人傳記,介紹對計算做出杰出貢獻(xiàn)的人。這些人包括對數(shù)據(jù)層做出貢獻(xiàn)的George Boole和Ada Lovelace,以及對通信層做出貢獻(xiàn)的Doug Engelbart和Tim Berners-Lee。這些傳記的目的是讓學(xué)生了解計算界的歷史以及那些對計算界做過貢獻(xiàn)和正在做貢獻(xiàn)的人。
我們稱第二個特性為“你知道嗎”,因為沒有更好的詞可以表達(dá)它。這部分顯示在方框中,是過去、現(xiàn)在和未來的一些軼聞趣事,它們來自歷史記錄、當(dāng)今的報紙和作者的見聞。這些小插曲的目的是使學(xué)生開心、鼓舞他們、激發(fā)他們的興趣,當(dāng)然也為了教育他們。
第三個特性是每章中的“道德問題”小節(jié)。這些小節(jié)的目的是說明在利用計算的好處時要承擔(dān)的義務(wù)。隱私權(quán)、黑客、病毒和言論自由都屬于我們的論題。在每章練習(xí)的結(jié)尾處有一個思考題部分,涉及這些道德問題和這一章的內(nèi)容。
致謝對于這一版來說,讀者是最有用的信息和建議來源。衷心感謝受調(diào)查者花時間填寫了我們的網(wǎng)絡(luò)調(diào)查問卷。還要感謝前幾版的審校者,以及這一版的審校者,他們是:
Tim Bower,堪薩斯州立大學(xué);Mikhail Brikman,塞勒姆州立學(xué)院;Jacques Carette,麥克馬斯特大學(xué);Howard Francis,派克維爾學(xué)院;Jim Jones,格雷斯蘭大學(xué);Murray Levy,西洛杉磯學(xué)院;Lew Lowther,約克大學(xué);Jeffrey McConnell,凱尼休斯學(xué)院;Richard Schlesinger,肯尼索州立大學(xué);Richard Spinello,波士頓學(xué)院;Herman Tavani,里韋學(xué)院;Amy Woszczynski,肯尼索州立大學(xué);C. Michael Allen,北卡羅來納大學(xué)夏洛特分校;Lofton Bullard,佛羅里達(dá)亞特蘭大大學(xué);Cerian Jones,阿爾伯塔大學(xué);Calvin Ribbens,弗吉尼亞理工大學(xué); Susan Sells,威奇托州立大學(xué);R. Mark Meyer,凱尼休斯學(xué)院;Tom Wiggen,北達(dá)科他大學(xué); Mary Dee Harris,Chris Edmonson-Yurkanan,Ben Kuipers, Glenn Downin,得克薩斯大學(xué)奧斯汀分校;Dave Stauffer,賓夕法尼亞大學(xué); John McCormick,北艾奧瓦大學(xué);Dan Joyce,維拉諾瓦大學(xué);Mike Goldwasser,圣路易斯大學(xué);Andrew Harrington,洛約拉大學(xué)芝加哥分校;Daniel R. Collins,馬薩諸塞州灣社區(qū)學(xué)院;J. Stanley Warford,佩珀代因大學(xué);Richard C. Detmer,中田納西州立大學(xué);Chip Weems,馬薩諸塞大學(xué)阿默斯特分校;Heather Chandler,西木學(xué)院;Mark Holthouse, 西木高等學(xué)校;Robert Vermilyer,國托馬斯阿奎那斯學(xué)院。
特別感謝凱尼休斯學(xué)院的Jeffrey McConnell,他編寫了第14章中的圖形學(xué)部分;感謝里韋學(xué)院的Herman Tavani,他參與了修改“道德問題”的工作;感謝波士頓學(xué)院的Richard Spinello,他撰寫了博客的道德問題一文。
感謝審稿人與同事對第5版的內(nèi)容給出了意見與建議,他們是:
Bob Blucher,雷恩社區(qū)學(xué)院;Dale Fletter,福爾瑟姆湖學(xué)院;Jerry Westfall博士,利伯蒂大學(xué);Dwayne Towell,艾伯林基督大學(xué);Kara Nance,阿拉斯加大學(xué);Lisa Michaud,梅里馬克學(xué)院;Jeffery Bergamini,門多西諾學(xué)院;Johanna Horowitz,西耶那學(xué)院;Lonnie R. Nelson,漢尼拔拉格朗日學(xué)院;Marie Hartlein,蒙哥馬利縣社區(qū)學(xué)院;Mark Holthouse,西木高等學(xué)校;Mikhail S. Brikman博士,塞勒姆州立大學(xué);Patricia Roth Pierce,南理工州立大學(xué);Quentin J. White,SR,帕洛馬學(xué)院;Rakesh Arya,馬里蘭大學(xué)東海岸分校;Tim Bower,堪薩斯州立大學(xué);William Honig,洛約拉大學(xué)芝加哥分校;Barbara Zimmerman,維拉諾瓦大學(xué);Maria Jump博士,國王學(xué)院;Joe Pistone,巴洛瑪社區(qū)學(xué)院;Derek Merck,佐治亞佩雷米特學(xué)院。
還要感謝Jones&Bartlett Learning的許多人,尤其是Tim Anderson(資深編輯)、Amy Bloom(主編)、Amy Rose(出版總監(jiān))。
我還必須感謝我的網(wǎng)球朋友使我有一個健康的體魄,感謝我的橋牌朋友使我的頭腦十分機(jī)敏,感謝我的家人做我的堅強(qiáng)后盾。
出版者的話
譯者序
前言
第一部分 基礎(chǔ)篇
第1章 全景圖 2
1.1 計算系統(tǒng) 2
1.1.1 計算系統(tǒng)的分層 3
1.1.2 抽象 4
1.2 計算的歷史 5
1.2.1 計算硬件簡史 5
1.2.2 計算軟件簡史 12
1.2.3 預(yù)言 16
1.3 計算工具與計算學(xué)科 16
小結(jié) 18
道德問題:the Tenth Strand 18
練習(xí) 19
思考題 20
第二部分 信息層
第2章 二進(jìn)制數(shù)值與記數(shù)系統(tǒng) 22
2.1 數(shù)字與計算 22
2.2 位置記數(shù)法 23
2.2.1 二進(jìn)制、八進(jìn)制和十六進(jìn)制 26
2.2.2 其他記數(shù)系統(tǒng)中的運算 27
2.2.3 以2的冪為基數(shù)的記數(shù)系統(tǒng) 27
2.2.4 把十進(jìn)制數(shù)轉(zhuǎn)換成其他數(shù)制的數(shù) 29
2.2.5 二進(jìn)制數(shù)值與計算機(jī) 29
小結(jié) 31
道德問題:the Tenth Strand的知識單元 31
練習(xí) 33
思考題 34
第3章 數(shù)據(jù)表示法 35
3.1 數(shù)據(jù)與計算機(jī) 35
3.1.1 模擬數(shù)據(jù)與數(shù)字?jǐn)?shù)據(jù) 36
3.1.2 二進(jìn)制表示法 38
3.2 數(shù)字?jǐn)?shù)據(jù)表示法 39
3.2.1 負(fù)數(shù)表示法 39
3.2.2 實數(shù)表示法 42
3.3 文本表示法 44
3.3.1 ASCII字符集 45
3.3.2 Unicode字符集 45
3.3.3 文本壓縮 46
3.4 音頻數(shù)據(jù)表示法 49
3.4.1 音頻格式 50
3.4.2 MP3音頻格式 50
3.5 圖像與圖形表示法 51
3.5.1 顏色表示法 51
3.5.2 數(shù)字化圖像與圖形 52
3.5.3 圖形的矢量表示法 53
3.6 視頻表示法 53
小結(jié) 55
道德問題:道德準(zhǔn)則 55
練習(xí) 56
思考題 58
第三部分 硬件層
第4章 門和電路 60
4.1 計算機(jī)和電學(xué) 60
4.2 門 62
4.2.1 非門 62
4.2.2 與門 63
4.2.3 或門 63
4.2.4 異或門 64
4.2.5 與非門和或非門 64
4.2.6 門處理回顧 65
4.2.7 具有更多輸入的門 65
4.3 門的構(gòu)造 66
4.4 電路 67
4.4.1 組合電路 68
4.4.2 加法器 70
4.4.3 多路復(fù)用器 71
4.5 存儲器電路 72
4.6 集成電路 73
4.7 CPU芯片 73
小結(jié) 74
道德問題:這些違反道德規(guī)范嗎? 74
練習(xí) 75
思考題 77
第5章 計算部件 78
5.1 獨立的計算機(jī)部件 78
5.2 存儲程序的概念 82
5.2.1 馮·諾伊曼體系結(jié)構(gòu) 82
5.2.2 讀取-執(zhí)行周期 87
5.2.3 RAM和ROM 88
5.2.4 二級存儲設(shè)備 89
5.2.5 觸摸屏 92
5.3 嵌入式系統(tǒng) 93
5.4 并行體系結(jié)構(gòu) 94
5.4.1 并行計算 94
5.4.2 并行硬件分類 95
小結(jié) 96
道德問題:數(shù)字鴻溝 96
練習(xí) 97
思考題 98
第四部分 程序設(shè)計層
第6章 低級程序設(shè)計語言與偽代碼 102
6.1 計算機(jī)操作 102
6.2 機(jī)器語言 103
6.3 一個程序?qū)嵗?108
6.3.1 手工模擬 109
6.3.2 Pep/8模擬程序 109
6.4 匯編語言 111
6.4.1 Pep/8匯編語言 112
6.4.2 匯編器指令 112
6.4.3 Hello程序的匯編語言版本 113
6.4.4 一個新程序 113
6.4.5 具有分支的程序 115
6.4.6 具有循環(huán)的程序 116
6.5 表達(dá)算法 118
6.5.1 偽代碼的功能 118
6.5.2 執(zhí)行偽代碼算法 121
6.5.3 寫偽代碼算法 123
6.5.4 翻譯偽代碼算法 124
6.6 測試 125
小結(jié) 126
道德問題:版權(quán)與軟件盜版 127
練習(xí) 127
思考題 129
第7章 問題求解與算法設(shè)計 130
7.1 如何解決問題 130
7.1.1 提出問題 130
7.1.2 尋找熟悉的情況 132
7.1.3 分治法 132
7.1.4 算法 133
7.1.5 計算機(jī)問題求解過程 133
7.1.6 方法總結(jié) 134
7.1.7 測試算法 135
7.2 有簡單參數(shù)的算法 135
7.2.1 帶有選擇的算法 135
7.2.2 帶有循環(huán)的算法 136
7.3 復(fù)雜變量 139
7.3.1 數(shù)組 139
7.3.2 記錄 140
7.4 搜索算法 141
7.4.1 順序搜索 141
7.4.2 有序數(shù)組中的順序搜索 141
7.4.3 二分檢索 142
7.5 排序 144
7.5.1 選擇排序 144
7.5.2 冒泡排序 145
7.5.3 插入排序 147
7.6 遞歸算法 147
7.6.1 子程序語句 148
7.6.2 遞歸階乘 149
7.6.3 遞歸二分檢索 149
7.6.4 快速排序 150
7.7 幾個重要思想 153
7.7.1 信息隱蔽 153
7.7.2 抽象 154
7.7.3 事物命名 155
7.7.4 測試 155
小結(jié) 155
道德問題:開源軟件 156
練習(xí) 157
思考題 159
第8章 抽象數(shù)據(jù)類型與子程序 160
8.1 抽象數(shù)據(jù)類型 160
8.2 棧 161
8.3 隊列 161
8.4 列表 162
8.5 樹 164
8.5.1 二叉樹 164
8.5.2 二叉檢索樹 165
8.5.3 其他操作 169
8.6 圖 169
8.6.1 創(chuàng)建圖 171
8.6.2 圖算法 171
8.7 子程序 176
8.7.1 參數(shù)傳遞 177
8.7.2 值參與引用參數(shù) 178
小結(jié) 180
道德問題:工作場所監(jiān)視 180
練習(xí) 181
思考題 183
第9章 面向?qū)ο笤O(shè)計與高級程序設(shè)計語言 184
9.1 面向?qū)ο蠓椒?184
9.1.1 面向?qū)ο?185
9.1.2 設(shè)計方法 185
9.1.3 一個計算機(jī)示例 187
9.2 翻譯過程 189
9.2.1 編譯器 190
9.2.2 解釋器 190
9.3 程序設(shè)計語言的范型 192
9.3.1 命令式范型 192
9.3.2 聲明式范型 193
9.4 高級程序設(shè)計語言的功能性 194
9.4.1 布爾表達(dá)式 194
9.4.2 數(shù)據(jù)歸類 196
9.4.3 輸入/輸出結(jié)構(gòu) 199
9.4.4 控制結(jié)構(gòu) 200
9.5 面向?qū)ο笳Z言的功能性 204
9.5.1 封裝 204
9.5.2 類 205
9.5.3 繼承 206
9.5.4 多態(tài) 207
9.6 過程設(shè)計與面向?qū)ο笤O(shè)計的區(qū)別 207
小結(jié) 208
道德問題:惡作劇與詐騙 209
練習(xí) 210
思考題 212
第五部分 操作系統(tǒng)層
第10章 操作系統(tǒng) 214
10.1 操作系統(tǒng)的角色 214
10.1.1 內(nèi)存、進(jìn)程與CPU管理 216
10.1.2 批處理 216
10.1.3 分時 217
10.1.4 其他OS要素 218
10.2 內(nèi)存管理 218
10.2.1 單塊內(nèi)存管理 219
10.2.2 分區(qū)內(nèi)存管理 220
10.2.3 頁式內(nèi)存管理 221
10.3 進(jìn)程管理 223
10.3.1 進(jìn)程狀態(tài) 223
10.3.2 進(jìn)程控制塊 224
10.4 CPU調(diào)度 224
10.4.1 先到先服務(wù) 225
10.4.2 最短作業(yè)優(yōu)先 226
10.4.3 輪詢法 226
小結(jié) 227
道德問題:醫(yī)療隱私——健康保險攜帶與責(zé)任法案 228
練習(xí) 229
思考題 231
第11章 文件系統(tǒng)和目錄 232
11.1 文件系統(tǒng) 232
11.1.1 文本文件和二進(jìn)制文件 233
11.1.2 文件類型 233
11.1.3 文件操作 234
11.1.4 文件訪問 235
11.1.5 文件保護(hù) 236
11.2 目錄 237
11.2.1 目錄樹 237
11.2.2 路徑名 239
11.3 磁盤調(diào)度 241
11.3.1 先到先服務(wù)磁盤調(diào)度法 242
11.3.2 最短尋道時間優(yōu)先磁盤調(diào)度法 242
11.3.3 SCAN磁盤調(diào)度法 242
小結(jié) 243
道德問題:選擇加入和選擇退出 243
練習(xí) 244
思考題 246
第六部分 應(yīng)用程序?qū)?br />
第12章 信息系統(tǒng) 248
12.1 信息管理 248
12.2 電子制表軟件 249
12.2.1 電子數(shù)據(jù)表公式 250
12.2.2 循環(huán)引用 254
12.2.3 電子數(shù)據(jù)表分析 254
12.3 數(shù)據(jù)庫管理系統(tǒng) 255
12.3.1 關(guān)系模型 256
12.3.2 關(guān)系 257
12.3.3 結(jié)構(gòu)化查詢語言 258
12.3.4 數(shù)據(jù)庫設(shè)計 260
12.4 電子商務(wù) 261
小結(jié) 262
道德問題:從競選來看政治與網(wǎng)絡(luò) 262
練習(xí) 263
思考題 265
第13章 人工智能 266
13.1 思維機(jī) 266
13.1.1 圖靈測試 267
13.1.2 AI問題的各個方面 268
13.2 知識表示 268
13.2.1 語義網(wǎng) 268
13.2.2 檢索樹 271
13.3 專家系統(tǒng) 273
13.4 神經(jīng)網(wǎng)絡(luò) 275
13.4.1 生物神經(jīng)網(wǎng)絡(luò) 275
13.4.2 人工神經(jīng)網(wǎng)絡(luò) 276
13.5 自然語言處理 277
13.5.1 語音合成 277
13.5.2 語音識別 278
13.5.3 自然語言理解 279
13.6 機(jī)器人學(xué) 280
13.6.1 感知-規(guī)劃-執(zhí)行范型 280
13.6.2 包孕體系結(jié)構(gòu) 282
13.6.3 物理部件 283
小結(jié) 283
道德問題:從民眾來看政治與網(wǎng)絡(luò) 284
練習(xí) 284
思考題 286
第14章 模擬、圖形學(xué)、游戲和其他應(yīng)用 287
14.1 什么是模擬 287
14.1.1 復(fù)雜系統(tǒng) 287
14.1.2 模型 288
14.1.3 構(gòu)造模型 288
14.2 特殊模型 289
14.2.1 排隊系統(tǒng) 289
14.2.2 氣象模型 292
14.2.3 計算生物學(xué) 295
14.2.4 其他模型 295
14.2.5 必要的計算能力 296
14.3 計算機(jī)圖形學(xué) 296
14.3.1 光的工作原理 297
14.3.2 物體形狀 298
14.3.3 光模擬 298
14.3.4 復(fù)雜對象的建模 299
14.3.5 讓物體動起來 303
14.4 游戲 304
14.4.1 游戲的歷史 304
14.4.2 創(chuàng)建虛擬世界 305
14.4.3 游戲設(shè)計與開發(fā) 305
14.4.4 游戲編程 306
小結(jié) 307
道德問題:游戲成癮 307
練習(xí) 308
思考題 309
第七部分 通信層
第15章 網(wǎng)絡(luò) 312
15.1 連網(wǎng) 312
15.1.1 網(wǎng)絡(luò)的類型 313
15.1.2 Internet連接 315
15.1.3 包交換 317
15.2 開放式系統(tǒng)與協(xié)議 318
15.2.1 開放式系統(tǒng) 318
15.2.2 網(wǎng)絡(luò)協(xié)議 319
15.2.3 TCP/IP 319
15.2.4 高層協(xié)議 320
15.2.5 MIME類型 321
15.2.6 防火墻 321
15.3 網(wǎng)絡(luò)地址 322
15.4 云計算 324
小結(jié) 325
道德問題:社交網(wǎng)絡(luò)的影響 326
練習(xí) 327
思考題 328
第16章 萬維網(wǎng) 329
16.1 Web簡介 329
16.1.1 搜索引擎 331
16.1.2 即時消息 331
16.1.3 博客 331
16.1.4 cookie 332
16.2 HTML 333
16.2.1 基本的HTML格式 335
16.2.2 圖像與鏈接 335
16.2.3 HTML5 337
16.3 交互式網(wǎng)頁 337
16.3.1 Java小程序 337
16.3.2 Java服務(wù)器頁 338
16.4 XML 339
16.5 社交網(wǎng)絡(luò) 341
小結(jié) 342
道德問題:賭博與互聯(lián)網(wǎng) 344
練習(xí) 344
思考題 346
第17章 計算機(jī)安全 347
17.1 各級安全 347
17.2 阻止未授權(quán)訪問 349
17.2.1 密碼 349
17.2.2 驗證碼 351
17.2.3 指紋分析 352
17.3 惡意代碼 352
17.3.1 殺毒軟件 353
17.3.2 安全攻擊 353
17.4 密碼學(xué) 355
17.5 保護(hù)你的在線信息 357
17.5.1 安全與可移動設(shè)備 359
17.5.2 維基解密 359
小結(jié) 360
道德問題:博客 361
練習(xí) 362
思考題 363
第八部分 總結(jié)
第18章 計算的限制 366
18.1 硬件 366
18.1.1 算術(shù)運算的限制 366
18.1.2 部件的限制 370
18.1.3 通信的限制 371
18.2 軟件 372
18.2.1 軟件的復(fù)雜度 372
18.2.2 當(dāng)前提高軟件質(zhì)量的方法 373
18.2.3 臭名昭著的軟件錯誤 376
18.3 問題 377
18.3.1 算法比較 377
18.3.2 圖靈機(jī) 382
18.3.3 停機(jī)問題 384
18.3.4 算法分類 386
小結(jié) 387
道德問題:Therac-25災(zāi)難剖析 387
練習(xí) 388
思考題 389
參考文獻(xiàn) 390
索引 396