普林斯頓計(jì)算機(jī)公開課(原書第2版)
定 價(jià):79 元
- 作者:[美]布萊恩·W.柯尼漢(BrianW.Kernighan)
- 出版時(shí)間:2023/4/1
- ISBN:9787111725121
- 出 版 社:機(jī)械工業(yè)出版社
- 中圖法分類:TP3
- 頁(yè)碼:
- 紙張:膠版紙
- 版次:
- 開本:32開
從1999年開始,作者在普林斯頓大學(xué)開設(shè)了一門名為“我們世界中的計(jì)算機(jī)”的課程(COS 109:Computers in Our World),這門課向非計(jì)算機(jī)專業(yè)的學(xué)生介紹計(jì)算機(jī)的基本常識(shí),多年來大受學(xué)生追捧。本書就是基于這門課程的講義編寫而成的,書中不僅解釋了計(jì)算機(jī)和通信系統(tǒng)的工作原理,還分析了新技術(shù)帶來的隱私和安全問題。第2版的新增章節(jié)討論了Python編程、人工智能、機(jī)器學(xué)習(xí)以及大數(shù)據(jù)等內(nèi)容。本書適合所有希望了解數(shù)字世界的讀者閱讀,通過了解技術(shù)的工作原理、起源和未來發(fā)展趨勢(shì),更好地理解并改變我們身處的世界。
中 文 版 序
計(jì)算機(jī)和通信系統(tǒng),以及由它們所實(shí)現(xiàn)的許多事物遍布我們周圍。其中一些在日常生活中隨處可見,比如筆記本電腦、手機(jī)和互聯(lián)網(wǎng)。今天,在任何公共場(chǎng)所,都會(huì)看到許多人在使用手機(jī)查詢交通路線、購(gòu)物以及和朋友聊天。與此同時(shí),大部分計(jì)算機(jī)世界卻是隱形的,比如電子設(shè)備、汽車、火車、飛機(jī)、電力系統(tǒng)和醫(yī)療設(shè)備中的計(jì)算機(jī)。這種幾乎不可見的基礎(chǔ)設(shè)施對(duì)我們產(chǎn)生了巨大的影響,如果沒有這些在后臺(tái)運(yùn)行的系統(tǒng),我們所處的現(xiàn)代社會(huì)將會(huì)坍塌。大多數(shù)情況下,它們確實(shí)在正確地執(zhí)行任務(wù),一切運(yùn)轉(zhuǎn)正常。但我們會(huì)不時(shí)得到令人不安的警示,這發(fā)生在當(dāng)這些系統(tǒng)出現(xiàn)問題時(shí),或當(dāng)我們聽到各種系統(tǒng)正在悄悄收集、共享,甚至濫用這些數(shù)據(jù)時(shí)。
本書篇幅不大,但對(duì)計(jì)算機(jī)和通信系統(tǒng)如何工作進(jìn)行了詳細(xì)和透徹的解釋。它主要面向希望能更好地了解他們所生活的世界的非技術(shù)人員,但本書也應(yīng)該會(huì)對(duì)那些對(duì)技術(shù)有所了解的人有幫助—這些讀者或者對(duì)本書的內(nèi)容感興趣,或者希望將本書作為向朋友和家人解釋技術(shù)系統(tǒng)的一份指南。本書展示了當(dāng)今的計(jì)算和通信世界是如何運(yùn)作的,從硬件到軟件,再到互聯(lián)網(wǎng)和Web。本書也討論了新技術(shù)帶來的社會(huì)、政治和法律問題(雖然主要是從美國(guó)的角度),由此你可以理解我們所面臨的難題,并理解為了解決它們所必須做出的權(quán)衡。
20多年來,我一直使用本書中的材料為普林斯頓大學(xué)的學(xué)生授課,告訴他們計(jì)算機(jī)技術(shù)是如何影響世界的。未來,他們?cè)趽?dān)任有責(zé)任、有權(quán)威和有影響力的職務(wù)時(shí),將能夠就涉及技術(shù)的復(fù)雜問題做出明智的決定。計(jì)算機(jī)和通信技術(shù)一直在發(fā)展,但那些基本的問題仍然保持不變。
我相信,無論人們的背景如何,位于世界何處,更多地了解這項(xiàng)了不起且應(yīng)用廣泛的技術(shù)是很重要的—這項(xiàng)技術(shù)已經(jīng)并將繼續(xù)對(duì)我們的生活產(chǎn)生深遠(yuǎn)的影響。非常高興戴開宇博士作為譯者的中文版即將與中國(guó)讀者見面,對(duì)于他的卓越工作我深表感謝。我希望你會(huì)享受閱讀本書的過程,并開卷有益。
布萊恩·W.柯尼漢
譯 者 序
收到機(jī)械工業(yè)出版社翻譯本書的邀請(qǐng)時(shí),我欣然接受了這一任務(wù)。很重要的一個(gè)原因是,本書作者布萊恩·W.柯尼漢(Brian W. Kernighan)教授是計(jì)算機(jī)領(lǐng)域的著名學(xué)者和先驅(qū)。關(guān)于布萊恩教授,人們耳熟能詳?shù)囊粋(gè)傳奇是,他與C語(yǔ)言的發(fā)明者丹尼斯·里奇(Dennis Ritchie)合著的The C Programming Language一書被奉為C程序設(shè)計(jì)語(yǔ)言的經(jīng)典之作。之后,許多編程語(yǔ)言教程中的第一個(gè)示例都是打印出一句“Hello,World!”,就像在用編程語(yǔ)言這一計(jì)算機(jī)語(yǔ)言向世界問好,這個(gè)示例就是布萊恩教授首創(chuàng)的。因?yàn)榉g這一機(jī)緣,我又了解到,布萊恩教授在大名鼎鼎的貝爾實(shí)驗(yàn)室工作了30年左右,見證了UNIX這一偉大的操作系統(tǒng)的誕生,并做出了卓越貢獻(xiàn)。他還與人合作完成了著名的圖劃分問題和旅行商問題的算法,也是AWK和AMLP兩門編程語(yǔ)言的設(shè)計(jì)者之一。其中任何一項(xiàng)成就都足以讓人倍感榮耀,但布萊恩教授的成就遠(yuǎn)不止這些。在這之后他任職于普林斯頓大學(xué)計(jì)算機(jī)科學(xué)系,并開設(shè)了一門名為“我們世界中的計(jì)算機(jī)”(Computers in Our World)的課程,介紹計(jì)算機(jī)、通信、互聯(lián)網(wǎng)、數(shù)據(jù)等方面的核心知識(shí)和其中的隱私、安全等問題。這本書便是這門課程使用的教學(xué)材料。
布萊恩教授作為計(jì)算機(jī)專業(yè)領(lǐng)域和寫作方面的世界級(jí)大師,其作品自然值得精讀。能擔(dān)當(dāng)他的著作的譯者,我感到非常榮幸。翻譯的過程也是細(xì)細(xì)品讀的過程。本書一如布萊恩教授的其他著作,行文通俗易懂而又嚴(yán)謹(jǐn),將構(gòu)建數(shù)字世界的關(guān)鍵技術(shù)和思想娓娓道來,并與實(shí)際應(yīng)用以及我們的生活關(guān)聯(lián)起來,尤其關(guān)注這些技術(shù)帶來的倫理問題。全書讀起來輕松愉快,令人受益匪淺。
我在大學(xué)里教授虛擬世界和計(jì)算思維相關(guān)的兩門通識(shí)課程,認(rèn)識(shí)到越來越多的人已離不開數(shù)字世界這一現(xiàn)實(shí)世界的“平行世界”,“人機(jī)共生,虛實(shí)交融”的數(shù)字化生存將不可逆轉(zhuǎn);ヂ(lián)網(wǎng)、人工智能、虛擬現(xiàn)實(shí)、區(qū)塊鏈、元宇宙這些數(shù)字化技術(shù)會(huì)把人們的生活塑造成什么樣子,以及可能把人類命運(yùn)帶向何方,無人可以準(zhǔn)確預(yù)測(cè),哪怕是相關(guān)領(lǐng)域中的專家也眾說紛紜。但我想,數(shù)字世界帶給我們的思考總是有益的。比如,一個(gè)比特可以取值0和1,這些比特之間的簡(jiǎn)單計(jì)算又可以產(chǎn)生新的編碼,由此竟然就可以構(gòu)建出復(fù)雜的數(shù)字世界。這不由得讓我們聯(lián)想到中國(guó)古代哲學(xué)提出的“道生一, 一生二, 二生三, 三生萬物”,以及達(dá)·芬奇所說的“簡(jiǎn)單是終極的復(fù)雜”。聯(lián)系到實(shí)際的計(jì)算形態(tài),現(xiàn)在流行的深度學(xué)習(xí)也是從無數(shù)小的簡(jiǎn)單神經(jīng)元構(gòu)建出來的。這是否也會(huì)對(duì)我們的大腦是如何“涌現(xiàn)”出智能的這一問題給出一些啟示?我們從現(xiàn)實(shí)世界抽象出數(shù)字世界,又從數(shù)字世界中得到啟發(fā)并回過頭來指導(dǎo)現(xiàn)實(shí)世界。由此我們看到,數(shù)字世界有助于“認(rèn)識(shí)你自己”,而隨著人工智能等技術(shù)的發(fā)展,重新思考這一幾千年前提出的哲思變得刻不容緩。所以,技術(shù)會(huì)把人類帶向何方,取決于人們從數(shù)字世界中獲得多少智慧和有益的反思。我想這本書會(huì)帶給我們很多這方面的智識(shí)。
在此書翻譯完成之際,我首先想感謝布萊恩教授,感謝他在書中分享的智慧和見識(shí)。當(dāng)我郵件聯(lián)系布萊恩教授,希望他能為中國(guó)讀者作序時(shí),他很快回復(fù)了郵件。而當(dāng)時(shí)他正和夫人在英國(guó)旅行,也就是本書引言中說原計(jì)劃2020年出發(fā),后來被新冠肺炎疫情打斷的旅行,郵件中甚至分享了許多旅途中的照片。世界級(jí)大師的謙遜和平易近人,本身就傳遞了教育的內(nèi)涵。感謝復(fù)旦大學(xué)外文學(xué)院郭曄老師在書中三首英文詩(shī)歌的翻譯方面給出了熱情而專業(yè)的幫助。同時(shí),由于本人水平有限,翻譯中肯定還有紕漏,歡迎指正,先謝謝大家的善意賜教,這將有利于本書翻譯的改進(jìn),從而讓更多讀者受益。
戴開宇
kydai@fudan.edu.cn
2022年6月
前 言
從1999年起,幾乎每個(gè)秋天我都在普林斯頓大學(xué)教授一門名為“我們世界中的計(jì)算機(jī)”的課程。課程名稱有點(diǎn)含糊,但這是我不得不在5分鐘內(nèi)想出來的,結(jié)果現(xiàn)在想要改名就難了。不過,教這門課倒是給了我極大的樂趣,讓我的工作幾乎完全成了一種享受。
這門課的開設(shè)是基于這樣一種觀察,即計(jì)算機(jī)和計(jì)算已經(jīng)無處不在。有些計(jì)算是顯而易見的:每個(gè)學(xué)生都擁有一臺(tái)筆記本電腦,其性能遠(yuǎn)比一臺(tái)IBM 7094計(jì)算機(jī)強(qiáng)大得多。1964年,當(dāng)我作為一名研究生進(jìn)入普林斯頓大學(xué)時(shí),IBM 7094計(jì)算機(jī)要耗資幾百萬美元,并占據(jù)一個(gè)很大的空調(diào)房間,可以為整個(gè)校園提供服務(wù),F(xiàn)在每個(gè)學(xué)生還擁有一部計(jì)算能力遠(yuǎn)超過那臺(tái)古老計(jì)算機(jī)的手機(jī)。與這個(gè)世界上的大部分人一樣,每位學(xué)生都可以高速上網(wǎng)。每個(gè)人都在線進(jìn)行搜索、購(gòu)物,并通過電子郵件、短信和社交網(wǎng)絡(luò)與親友保持聯(lián)系。
然而這些只是計(jì)算的冰山一角,其中大部分隱藏在表面之下。我們沒有看到,通常也很少會(huì)想到那些潛藏在家電、汽車、飛機(jī)中的計(jì)算機(jī),以及那些司空見慣的數(shù)碼產(chǎn)品中的計(jì)算機(jī),如智能電視、恒溫器、門鈴、語(yǔ)音識(shí)別器、健身追蹤器、耳機(jī)、玩具和游戲機(jī)。我們更不會(huì)想到像電話網(wǎng)絡(luò)、有線電視、空中交通管制、電網(wǎng)、銀行和金融服務(wù)這些基礎(chǔ)設(shè)施對(duì)計(jì)算的依賴程度如此之高。
大多數(shù)人不會(huì)直接參與創(chuàng)建這樣的系統(tǒng),但每個(gè)人都受到它們的巨大影響,有些人還需要做出與這些系統(tǒng)相關(guān)的重要決定。一個(gè)受過良好教育的人至少應(yīng)該知道關(guān)于計(jì)算機(jī)的基本知識(shí):計(jì)算機(jī)能做什么以及如何做到,計(jì)算機(jī)技術(shù)的局限性以及目前來說哪些難以做到,計(jì)算機(jī)之間如何溝通,溝通時(shí)發(fā)生了什么,計(jì)算機(jī)和通信如何影響我們周圍的世界等。
計(jì)算的普及性以意想不到的方式影響著我們。盡管我們時(shí)常被提醒,監(jiān)視系統(tǒng)變得無處不在,隱私可能被侵犯,身份可能被盜竊,但我們可能沒有意識(shí)到它們?cè)诙啻蟪潭壬媳挥?jì)算機(jī)和通信所賦能。
2013年6月,愛德華·斯諾登(Edward Snowden)—美國(guó)國(guó)家安全局(NSA)的一位承包商,向記者提供了5萬份文件,其中揭露了美國(guó)國(guó)家安全局曾定期監(jiān)測(cè)和收集世界上幾乎每一個(gè)人的電子通信,包括電話、短信、電子郵件和互聯(lián)網(wǎng)的使用,尤其是那些居住在美國(guó)并且對(duì)國(guó)家安全沒有任何威脅的美國(guó)公民。也許最令人驚訝的是,在最初引起公憤之后,一切又恢復(fù)了常
態(tài),并且隨著政府的監(jiān)控和監(jiān)視越來越多,公民也無可奈何或漠然接受。
公司也會(huì)追蹤和監(jiān)控我們?cè)诰W(wǎng)上和現(xiàn)實(shí)世界中的行為。許多公司的商業(yè)模式基于廣泛的數(shù)據(jù)收集以及預(yù)測(cè)和影響我們行為的能力。大量數(shù)據(jù)的可用性使語(yǔ)音理解、計(jì)算機(jī)視覺和語(yǔ)言翻譯方面取得了巨大進(jìn)展,但這是以我們的隱私為代價(jià)的,并且使任何人都很難匿名。
形形色色的黑客在攻擊數(shù)據(jù)存儲(chǔ)方面變得越來越老練。幾乎每天都發(fā)生著對(duì)企業(yè)和政府機(jī)構(gòu)的電子入侵,大量客戶和員工的信息被竊取,并通常用于欺詐和身份盜竊。不僅如此,對(duì)個(gè)人的攻擊也很常見。過去,人們可以通過忽略來自所謂的“尼日利亞王子”或他們的親戚的郵件來免受網(wǎng)絡(luò)詐騙,但現(xiàn)在有針對(duì)性的攻擊變得微妙得多,并已經(jīng)成為攻破企業(yè)計(jì)算機(jī)的最常見方式
之一。
Facebook、Instagram、Twitter、Reddit等社交媒體改變了人們相互聯(lián)系的方式—與朋友和家人保持聯(lián)系,看新聞,各種娛樂。這有時(shí)會(huì)帶來積極的影響,例如,在2020年年中,警察暴力的視頻引起了人們對(duì)非洲裔美國(guó)人生活問題的關(guān)注。
但社交媒體也造成了大量的負(fù)面影響。種族主義者、仇恨團(tuán)體、陰謀論者和其他瘋狂的人,無論他們的信仰或政治立場(chǎng)如何,都可以很容易地在互聯(lián)網(wǎng)上找到彼此,協(xié)同合作并放大影響。言論自由相關(guān)的棘手問題,以及內(nèi)容審核方面的技術(shù)挑戰(zhàn),都讓人們很難徹底阻斷仇恨和無稽之談的傳播。
在一個(gè)完全由互聯(lián)網(wǎng)連接起來的世界里,司法管轄權(quán)問題也很難處理。2018年,歐盟實(shí)施了《通用數(shù)據(jù)保護(hù)條例》(GDPR),允許歐盟居民控制個(gè)人數(shù)據(jù)的收集和使用,并阻止公司向歐盟以外發(fā)送或存儲(chǔ)此類數(shù)據(jù)。GDPR在改善個(gè)人隱私方面的效果如何,目前還沒有定論,當(dāng)然,這些規(guī)則只適用于歐盟,世界其他地區(qū)的規(guī)則可能有所不同。
云計(jì)算的快速應(yīng)用增加了另一層復(fù)雜性。通過云計(jì)算,個(gè)人和公司在亞馬遜、谷歌和微軟等公司的服務(wù)器中存儲(chǔ)數(shù)據(jù)并進(jìn)行計(jì)算。數(shù)據(jù)不再由它們的所有者直接持有,而是被第三方直接掌握,這些第三方有著不同的規(guī)程、責(zé)任和漏洞,而且可能面臨著相互沖突的司法規(guī)定。
將各種
中文版序
譯者序
前言
引言 …… 1
第一部分 硬件
第1章 什么是計(jì)算機(jī) …… 16
1.1 邏輯結(jié)構(gòu) …… 20
1.1.1 處理器 …… 21
1.1.2 主存儲(chǔ)器 …… 22
1.1.3 二級(jí)存儲(chǔ)器 …… 24
1.1.4 其他 …… 27
1.2 物理結(jié)構(gòu) …… 28
1.3 摩爾定律 …… 33
1.4 小結(jié) …… 35
第2章 比特、字節(jié)和信息的表示 …… 38
2.1 模擬和數(shù)字 …… 39
2.2 模數(shù)轉(zhuǎn)換 …… 41
2.2.1 圖像的數(shù)字化 …… 41
2.2.2 聲音的數(shù)字化 …… 43
2.2.3 電影的數(shù)字化 …… 47
2.2.4 文本的數(shù)字化 …… 48
2.3 比特、字節(jié)和二進(jìn)制 …… 49
2.3.1 比特 …… 50
2.3.2 2的冪和10的冪 …… 52
2.3.3 二進(jìn)制數(shù)值 …… 52
2.3.4 字節(jié) …… 55
2.4 小結(jié) …… 58
第3章 深入了解處理器 …… 60
3.1 玩具計(jì)算機(jī) …… 61
3.1.1 第一個(gè)玩具程序 …… 62
3.1.2 第二個(gè)玩具程序 …… 64
3.1.3 分支指令 …… 66
3.1.4 內(nèi)存中的表示 …… 70
3.2 真實(shí)的處理器 …… 71
3.3 緩存 …… 75
3.4 其他類型的計(jì)算機(jī) …… 77
3.5 小結(jié) …… 80
硬件部分小結(jié)
第二部分 軟件
第4章 算法 …… 89
4.1 線性算法 …… 91
4.2 二分查找 …… 94
4.3 排序 …… 96
4.4 難題和復(fù)雜性 …… 102
4.5 小結(jié) …… 107
第5章 編程與編程語(yǔ)言 …… 109
5.1 匯編語(yǔ)言 …… 110
5.2 高級(jí)語(yǔ)言 …… 112
5.3 軟件開發(fā) …… 123
5.3.1 庫(kù)、接口和開發(fā)工具包 …… 124
5.3.2 bug …… 126
5.4 知識(shí)產(chǎn)權(quán) …… 130
5.4.1 商業(yè)秘密 …… 131
5.4.2 商標(biāo) …… 131
5.4.3 版權(quán) …… 131
5.4.4 專利 …… 133
5.4.5 許可 …… 135
5.5 標(biāo)準(zhǔn) …… 138
5.6 開源軟件 …… 140
5.7 小結(jié) …… 143
第6章 軟件系統(tǒng) …… 144
6.1 操作系統(tǒng) …… 145
6.2 操作系統(tǒng)是如何工作的 …… 154
6.2.1 系統(tǒng)調(diào)用 …… 155
6.2.2 設(shè)備驅(qū)動(dòng)程序 …… 156
6.3 其他操作系統(tǒng) …… 158
6.4 文件系統(tǒng) …… 159
6.4.1 二級(jí)存儲(chǔ)文件系統(tǒng) …… 161
6.4.2 刪除文件 …… 165
6.4.3 其他文件系統(tǒng) …… 167
6.5 應(yīng)用程序 …… 170
6.6 軟件層次 …… 173
6.7 小結(jié) …… 176
第7章 學(xué)習(xí)編程 …… 178
7.1 編程語(yǔ)言的基本概念 …… 180
7.2 第一個(gè)JavaScript程序 …… 182
7.3 第二個(gè)JavaScript程序 …… 184
7.4 循環(huán)和條件 …… 186
7.5 JavaScript庫(kù)和接口 …… 190
7.6 JavaScript是如何工作的 …… 192
7.7 第一個(gè)Python程序 …… 193
7.8 第二個(gè)Python程序 …… 195
7.9 Python庫(kù)和接口 …… 197
7.10 Python是如何工作的 …… 201
7.11 小結(jié) …… 202
軟件部分小結(jié)
第三部分 通信
第8章 網(wǎng)絡(luò) …… 215
8.1 電話與調(diào)制解調(diào)器 …… 216
8.2 有線電視和DSL …… 217
8.3 局域網(wǎng)和以太網(wǎng) …… 220
8.4 無線網(wǎng)絡(luò) …… 224
8.5 手機(jī) …… 227
8.6 帶寬 …… 232
8.7 壓縮 …… 233
8.8 錯(cuò)誤檢測(cè)與糾正 …… 237
8.9 小結(jié) …… 239
第9章 互聯(lián)網(wǎng) …… 241
9.1 互聯(lián)網(wǎng)概述 …… 243
9.2 域名和地址 …… 247
9.2.1 域名系統(tǒng) …… 249
9.2.2 IP地址 …… 250
9.2.3 根服務(wù)器 …… 252
9.2.4 注冊(cè)你自己的域名 …… 253
9.3 路由 …… 254
9.4 TCP/IP …… 257
9.4.1 互聯(lián)網(wǎng)協(xié)議 …… 259
9.4.2 傳輸控制協(xié)議 …… 260
9.5 高層協(xié)議 …… 263
9.5.1 Telnet和SSH協(xié)議:遠(yuǎn)程登錄 …… 264
9.5.2 SMTP:簡(jiǎn)單郵件傳輸協(xié)議 …… 265
9.5.3 文件共享和點(diǎn)對(duì)點(diǎn)協(xié)議 …… 268
9.6 互聯(lián)網(wǎng)上的版權(quán)問題 …… 270
9.7 物聯(lián)網(wǎng) …… 273
9.8 小結(jié) …… 275
第10章 萬維網(wǎng) …… 279
10.1 萬維網(wǎng)是如何工作的 …… 281
10.2 HTML …… 283
10.3 cookie …… 287
10.4 動(dòng)態(tài)網(wǎng)頁(yè) …… 289
10.5 網(wǎng)頁(yè)之外的動(dòng)態(tài)內(nèi)容 …… 292
10.6 病毒、蠕蟲和木馬 …… 293
10.7 Web安全 …… 297
10.7.1 對(duì)客戶端的攻擊 …… 297
10.7.2 對(duì)服務(wù)器的攻擊 …… 305
10.7.3 對(duì)傳輸中信息的攻擊 …… 308
10.8 自我防御 …… 309
10.9 小結(jié) …… 314
第四部分 數(shù)據(jù)
第11章 數(shù)據(jù)和信息 …… 319
11.1 搜索 …… 321
11.2 跟蹤 …… 327
11.3 社交網(wǎng)絡(luò) …… 338
11.4 數(shù)據(jù)挖掘和聚合 …… 343
11.5 云計(jì)算 …… 347
11.6 小結(jié) …… 354
第12章 人工智能和機(jī)器學(xué)習(xí) …… 356
12.1 歷史背景 ……