內容簡介
本書共分7章,分別介紹計算與計算思維、充滿智慧與挑戰的計算理論(技術)基礎、計算思維之方法學、計算思維之算法基礎、面向計算之問題求解思想與方法、計算思維之程式基礎、基於計算之問題求解思想與方法、從“計算”到“文化”等。 本書特點:一是知識面比較廣、內容非常豐富;二是儘量體現“實例化、生活化、故事化、圖文並茂”的指導思想,以增強可讀性;三是內容比較新穎。 本書可作為高等院校計算機專業和非計算機專業的入門教材,也可供相關技術人員參考學習。
圖書目錄
第1章 計算與計算思維1
1.1 計算需求與計算技術的演化2
1.1.1 遠古時代的原始計算方法2
1.1.2 機械式計算技術6
1.1.3 機電式計算技術7
1.1.4 電子計算技術8
1.1.5 並行與分散式計算11
1.1.6 雲計算與海計算12
1.1.7 未來的計算13
1.2 科學研究的三大方法——理論、實驗與計算14
1.3 計算(機)科學與計算學科15
1.4 計算思維18
1.4.1 什麼是計算思維?18
1.4.2 狹義計算思維與廣義計算思維19
1.4.3 計算思維之套用21
閱讀材料:計算機發展史大事記24
第2章 充滿智慧與挑戰的計算理論(技術)基礎32
2.1 獨闢蹊徑的數據表示方法32
2.1.1 數據的表示——棄“十”選“二”的神來之筆32
2.1.2 有限的字長與大小不一的數據39
2.1.3 符號的表示——編碼41
2.1.4 鴻溝與代價42
2.2 從邏輯學到邏輯電路——思維可計算嗎47
2.2.1 生活中的“邏輯問題”47
2.2.2 邏輯與思維48
2.2.3 數理邏輯52
2.2.4 邏輯推理與人工智慧55
2.3 “九九歸一”的加法運算58
2.3.1 加法運算及其加法器的設計58
2.3.2 補碼運算——把減法當加法做61
2.4 計算的本質——圖靈機及其計算能力62
2.4.1 圖靈機模型62
2.4.2 圖靈機的工作原理64
2.4.3 圖靈機的計算能力67
2.5 計算機的構造——
馮諾依曼機及其工作原理72
2.5.1 馮諾依曼型計算機的組成和工作原理73
2.5.2 思想與技術的演化75
2.5.3 馮諾依曼型計算機的特點及其局限性78
2.6 計算技術的開拓與發展79
2.7 什麼都能計算嗎——難題及其可計算性82
2.7.1 難題何其多83
2.7.2 可計算性與計算複雜性86
2.7.3 難題大挑戰及其科學意義88
【閱讀材料】計算機系統(PC機)的硬體組成92
第3章 計算思維之方法學99
3.1 問題求解過程99
3.1.1 人類解決客觀世界問題的思維過程99
3.1.2 藉助於計算機的問題求解過程101
3.1.3 兩種問題求解過程的對比104
3.2 數學模型——問題的抽象表示104
3.3 數據存儲結構108
3.3.2 鏈式存儲結構109
3.3.3 索引存儲結構111
3.3.4 散列存儲結構111
3.4 客觀世界到計算機世界的映射方法112
3.4.1 面向過程的結構化設計方法學112
3.4.2 面向對象程式設計方法學116
3.5 時間與空間及其相互轉換122
3.6 抽象124
3.6.1 什麼是抽象(Abstraction)124
3.6.2 計算學科中的抽象128
3.6.3 抽象的層次性128
3.6.4 程式中的抽象131
3.6.5 抽象與模型133
3.6.6 抽象與計算機語言134
3.7 串列與並行137
3.8 局部化與信息隱藏139
3.8.1 局部化139
3.8.2 信息隱藏(Information hiding)140
3.9 精確、近似與模糊141
3.10 折中與中庸之道142
【閱讀材料】計算機軟體及其軟體系統144
第4章 計算思維之算法基礎149
4.1 算法149
4.1.1 什麼是算法149
4.1.2 算法的性質152
4.1.3 算法的種類153
4.1.4 算法的表示(描述)154
4.1.5 算法與程式159
4.1.6 算法的比較與分析161
4.2 算法設計的基本思想與方法164
4.2.1 窮舉法(也稱為枚舉法,Enumeration)164
4.2.2 遞推法(Recurrence)166
4.2.3 遞歸法168
4.2.4 回溯法(Backtracking)*173
4.2.5 分治法(Divide and Conquer)178
4.2.6 仿生法——蟻群算法(Ant colony optimization,ACO)*181
4.2.7 並行算法*184
4.2.8 算法設計與計算思維186
4.3 幾個常用的經典算法186
4.3.1 累加和、連乘積與最大(小)值187
4.3.2 查找188
4.3.3 排序191
4.3.4 邏輯分析與推理201
閱讀材料:MATLAB問題表示與計算207
第5章 面向計算之問題求解思想與方法213
5.1 大海撈針的搜尋引擎213
5.1.1 網頁的自動下載與存儲214
5.1.2 網頁索引與匹配215
5.1.3 網頁排序方法218
5.2 瞞天過海的密碼技術225
5.2.1 有趣的對稱加密技術226
5.2.2 難解的非對稱加密技術229
5.2.3 數字簽名及其套用232
5.3 令人期待的人工智慧235
5.3.1 人工智慧時代正在快步走來235
5.3.2 人工智慧方法論237
5.3.3 人工智慧套用241
5.3.4 展望未來,人工智慧會顛覆一切242
5.4 不可思議的自糾錯技術243
5.4.1 面臨的問題與挑戰243
5.4.2 重複傳輸244
5.4.3 冗餘編碼246
5.4.4 校驗247
5.4.5 錯誤定位250
5.4.6 推廣套用252
5.5 柳暗花明的自然語言處理254
5.5.1 美好願景254
5.5.2 原始的“逐詞替換”254
5.5.3 基於“規則”的方法256
5.5.4 從“規則”到“統計”259
5.5.5 基於統計的機器翻譯260
5.6.1 無損壓縮及其方法262
5.6.2 有損壓縮之“thinking”275
5.6.3 展望未來276
閱讀材料:計算機網路277
第6章 計算思維之程式設計基礎280
6.1 數據的類型與本質280
6.1.1 我們熟悉的數與數據280
6.1.2 計算機世界中的數據282
6.1.3 數據的類型與本質283
6.2 變數的特定含義285
6.2.1 “先定義,後使用”286
6.2.2 變數得有自己“好聽”的名字287
6.2.3 變數是有類型的287
6.2.4 變數的作用域288
6.2.5 變數的生命周期289
6.3 有窮與無窮290
6.3.1 數據的有窮性291
6.3.2 程式的有窮性291
6.4 程式的基本控制結構292
6.4.1 順序結構292
6.4.2 條件選擇結構293
6.4.3 循環結構293
6.5 問題求解的本質過程294
6.6 效率與可讀性295
6.7 程式的構造特性297
6.8 上下文無關文法298
6.9 二義性298
6.10 嚴謹性299
閱讀材料:計算機語言概述300
第7章 基於計算之問題求解的思想和方法304
7.1 重複疊代,尋根問底——方程求根304
7.1.1 二分法(Bisection Method)304
7.1.2 簡單疊代法306
7.1.3 牛頓法308
7.1.4 其他求根方法310
7.2 有限劃分,無限逼近——定積分的計算312
7.2.1 問題求解的基本思路與方法312
7.2.2 求解算法315
7.3 千年求精,萬年求真——求解圓周率π316
7.3.1 關於圓周率的計算316
7.3.2 圓周率的計算史317
7.3.3 圓周率的計算方法319
7.3.4 圓周率的計算永無止境322
7.3.5 研究圓周率的意義322
7.4 大事化小,小事化了——有限元計算324
7.4.1 有限元方法的誕生324
7.4.2 什麼是有限元方法324
7.4.3 有限元方法的基本思想325
7.4.4 有限元法求解問題的步驟326
7.4.5 有限元方法的套用326
7.4.6 有限元方法中的計算思維329
7.5 萬事俱備,不欠東風——數值天氣預報330
7.5.1 天氣預報的發展331
7.5.2 現代數值天氣預報原理333
7.5.3 天氣預報對計算技術永無止境的需求336
7.6.1 蒙特卡羅方法導引337
7.6.2 蒙特卡羅方法的基本思想與過程338
7.6.3 蒙特卡羅方法的套用與分析339
7.7.1 制導方法分類342
7.7.2 “戰斧”式巡航飛彈344
7.8 紅樓遺夢,作者存疑——《紅樓夢》作者是誰345
閱讀材料:Python語言346
第8章 從“計算”到“文化”354
8.1 文化與計算文化354
8.2 計算文化的本質特徵355
8.3 計算文化與傳統文化357
閱讀材料:一路走來的“雲計算”359
附錄A ASCII碼字元集363
附錄B 幾種常用進位制數值對照表365
參考文獻366