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