內容介紹
家用電器、汽車、飛機、相機、手機、GPS 導航儀,還有遊戲機,雖然你看不見,但這些設備都有計算能力。手機通信網路、有線電視網路、空中交通管制系統、電力系統、銀行和金融服務系統等基礎設施背後無一不是計算機在支撐。如今的世界是數字的,而計算機和計算無處不在。這本書就是要告訴大家數字世界有關計算機的一切。本書沒有高深莫測的專業術語,但它全面解釋了當今計算和通信領域的工作方式,包括硬體、軟體、網際網路、通信和數據安全,並且討論了新技術帶來的社會、政治和法律問題。
無論你有沒有計算機背景,無論你從事什麼職業,只要你認同自己生活在數字時代,這本書就是必讀的!
作者介紹
Brian W. Kernighan
世界頂尖計算機科學家,曾為貝爾實驗室計算科學研究中心高級研究人員,現為普林斯頓大學教授。他是AWK語言和AMPL語言的發明人,還參與過UNIX和許多其他系統的開發,同時出版了The C Programming Language、The Practice of Programming、The Elements of Programming Style等在計算機領域影響深遠的著作。
Kernighan主張所有人都應該了解計算機,在他心目中,此書相當於“寫給未來總統的計算機讀物”,是新一代公民必讀之作。本書中講解的內容甚至會影響我們在微博和社區上的活動,以及使用智慧型手機的方式。
作品目錄
目 錄
開篇語 1
任何足夠先進的技術都與魔術無異。
——阿瑟?C.克拉克,“技術及未來前景”,
《三號行星的報告》,1972年
第一部分 硬體
計算設備的歷史悠久,不過早期的計算設備大多數是專用的,通常用於預測天文事件及其發生方位。例如,關於巨石陣,一個尚未證實的推測就認為它是一座天文觀測站。公元前100年製造的安提基瑟拉機器就是一台天文計算機,其機械結構之精妙令人嘆為觀止。
第1章 計算機里有什麼 11
PC這個名字是個人計算機(Personal Computer)的縮寫,或者說源自於1981年IBM開始賣的那種PC。還有些人可能有蘋果Mac機,上面運行某個版本的Mac OS X作業系統。更專用的設備,比如手機和平板電腦,也是強大的計算機。這些計算機看起來很不一樣,用起來也感覺不一樣,但這僅僅是表象,其實根本沒區別。
1.1 邏輯構造 13
1.2 物理構造 18
1.3 摩爾定律 21
第2章 比特、位元組與信息表示 23
溫度計的紅色液體(通常是染色酒精)或水銀柱是模擬的:液體會隨著溫度變化按比例膨脹或收縮,因此溫度產生較小的變化,液體柱高度也會相應產生較小變化。但大樓外面顯示溫度的廣告牌則是數字的:顯示屏顯示的是數值,溫度介於36.5和37.4之間時,它都顯示為37。
2.1 模擬與數字 23
2.2 模數轉換 25
2.3 比特、位元組與二進制 30
2.4 小結 37
第3章 深入了解CPU 39
今天的筆記本電腦,甚至連手機都已經有多個CPU了。英特爾酷睿雙核處理器在一塊積體電路晶片上集成了兩個CPU(“核心”)。在一塊晶片上集成越來越多的處理器已經成為明顯的趨勢。
3.1 玩具計算機 40
3.2 真正的CPU 45
3.3 快取 47
3.4 其他計算機 49
硬體部分小結 51
第二部分 軟體
2010年4月的美國《消費者報告》(Consumer Reports)稱豐田雷克薩斯GX460車型“不能買:存在安全隱患”,因為其電子穩定控制系統會導致這款SUV在急速轉彎時車尾過分向外甩,從而可能導致翻車事故。一個月之內,豐田公司就升級軟體,修復了這個問題。根本就沒有任何機械問題,僅僅是軟體最初有些問題。
第4章 算法 57
假設我們想找出誰是房間裡個子最高的人。我們可以四下里看看,然後猜一猜會是誰。然而,算法則必須精確地列出每一個步驟,從而讓不會說話的計算機都能遵照執行。最基本的做法就是依次詢問每個人的身高,並記住到目前為止誰最高。於是,我們可能會問“約翰,你多高?瑪麗,你呢?”
4.1 線性算法 58
4.2 二分搜尋 60
4.3 排序 62
4.4 難題與複雜性 66
4.5 小結 68
第5章 編程與程式語言 71
程式必須考慮實際的問題,比如記憶體不足、處理器速度不快、無效或惡意的輸入、網路連線中斷,以及(看不見摸不著,但卻經常會導致其他問題惡化的)人性弱點。因此,如果說算法是理想化的菜譜,那程式就是讓烹飪機器人冒著敵人的炮火為軍隊準備一個月的給養所需的操作說明書。
5.1 彙編語言 72
5.2 高級語言 73
5.3 軟體開發 79
5.4 軟體資產 84
第6章 軟體系統 93
你使用的電腦中會裝有各種各樣的程式,比如瀏覽器、文字處理器、音樂播放器……這些程式有一個專業的叫法,即應用程式(application)。典出何處?或許出自“這個程式是計算機在完成某個任務方面的套用”吧。
6.1 作業系統 94
6.2 作業系統怎么工作 98
6.3 其他作業系統 101
6.4 檔案系統 102
6.5 應用程式 108
6.6 軟體分層 111
第7章 學習編程 115
如果你自己折騰一天連10行代碼都調試不好,那別人要是說能按時交付百萬行級的程式,而且沒有任何bug,你相信嗎?換個角度說,有點編程常識也能讓人明白,其實也不是寫什麼程式都那么難,大不了請人幫你寫唄。
7.1 程式語言的基本概念 116
7.2 第一個JavaScript程式 117
7.3 第二個JavaScript程式 119
7.4 循環 121
7.5 條件 122
7.6 庫和接口 124
7.7 JavaScript怎么工作 125
軟體部分小結 127
第三部分 通信
幾千年前,人們就曾通過善於長跑的人傳遞訊息。公元前490年,費迪皮迪茲從馬拉松戰場奔跑了42公里到達雅典,把打敗波斯人的勝利訊息傳遞給了雅典人。不幸的是,跑到雅典之後,他上氣不接下氣地說完“慶祝吧,我們勝利了”之後就死了(至少傳說里是這么講的)。
第8章 網路 135
電話網作為一個覆蓋全球的大型網路,從一開始只傳送語音,到後來同時傳輸語音和可觀的數據,為人類做出了貢獻。大約有近20年的時間,人們都是通過電話網把家用計算機接入網際網路的。
8.1 電話與數據機 136
8.2 有線和DSL 136
8.3 區域網路和乙太網 138
8.4 無線網路 141
8.5 手機 144
8.6 小結 147
第9章 網際網路 149
簡單算一下就會發現,IPv4地址只有大約43億個,甚至還不夠地球上每人分一個。因此,按照人類使用的通信服務數量的增長勢頭,這些IPv4地址遲早會被耗光。實際情況比這種“危言聳聽”更糟糕,因為IP位址是按塊劃分的,這樣用起來就沒有理論上那么有效率。
9.1 網際網路概述 150
9.2 域名和地址 153
9.3 路由 157
9.4 協定 159
9.5 高層協定 162
9.6 頻寬 172
9.7 壓縮 173
9.8 錯誤檢測和校正 176
9.9 小結 177
第10章 全球資訊網 179
全球資訊網的誕生可以追溯到1989年。當時,在日內瓦附近的歐洲核子研究中心工作的英國物理學家蒂姆?伯納斯?李,為便於通過網際網路共享科學文獻和研究結果而設計了一套系統,以及一個只能用文本模式查看可用資源的客戶端。這套系統在1990年投入使用。說來慚愧,我1992年10月還親眼見過有人使用它,可當時並沒覺得它有那么好,也根本沒想到6個月後誕生的第一個圖形界面瀏覽器會改變世界。瞧我這眼光!
10.1 全球資訊網如何工作 180
10.2 HTML 182
10.3 表單 183
10.4 cookie 184
10.5 動態網頁 186
10.6 網頁之外的動態內容 189
10.7 病毒和蠕蟲 190
10.8 全球資訊網安全 192
10.9 密碼術 201
10.10 小結 208
第11章 數據、信息和隱私 211
隱私常常就是安全的同義詞。至少對每個個體而言,如果自己的生活信息被傳播得隨處可見,那怎么會讓人感覺安全無憂呢?特別是網際網路,它對個人安全已經產生了重大影響。這種影響更多體現在財務風險而非人身安全方面。因為網際網路讓人們從各種來源收集和整理信息變得異常容易,從而為電子入侵大開方便之門。
11.1 搜尋 212
11.2 跟蹤 216
11.3 資料庫、信息與聚合 221
11.4 隱私失控 224
11.5 雲計算 225
11.6 小結 230
第12章 結束語 231
最後,讀者諸君務必牢記一點,無論今天的技術多么千變萬化,人是不變的。無論從哪方面來看,現代的人類與幾千年前的人類並沒有太大區別。
註解 236
辭彙表 242
索引 253
著作權聲明 256