世界頂尖電腦科學家,帶你看懂科技趨勢
未來人才一定要懂的電腦入門,普林斯頓開課了!
-------------------------------------------
★探討電腦硬體、軟體及網路如何運作的第一本書
★新課綱科技資訊、師生共讀的最好參考書本書是谷歌最知名的發明家對我們現在所處的世界最清晰、最簡單的解釋——電腦如何運作,以及為什麼會這樣。地球上每個人都需要讀。
——艾力克.施密特,Google前CEO
不論你從事什麼工作、教育背景,甚至年齡層,在這個數位世界,我們的生活已受到電腦、網路無孔不入的影響。電腦無處不在,有些明顯可見,例如筆記型電腦、平板電腦、智慧型手機…但大多數是我們看不到的,例如在家電、車子、醫療器材、運輸系統、電力網及武器裡頭。
電腦也靜悄悄地收集、分享、甚至洩漏我們的個人資料,政府及企業可能使用電腦來監視我們的所作所為,社交網路及廣告商對我們的了解遠多過我們自己,犯罪者太容易取得我們的資料。我們真的了解電腦的力量嗎?
縱然人人都該了解電腦,但普羅大眾恐怕所知不多。
從1999年開始,出身貝爾實驗室、參與UNIX開發的布萊恩‧柯尼罕在普林斯頓大學開設了一門「我們世界中的電腦」課程(COS 109:Computers in Our World),這門課是向非電腦專業的學生介紹電腦基本常識的,多年來大獲好評。除了講解電腦理論知識,還有相應的實作課——學生可以試著用流行的程式設計語言寫幾行代碼,一起討論蘋果、谷歌和微軟的技術如何滲透日常生活的每個角落。本書就是以這門課程的講義為主要內容重新編寫而成。
★你可以學到重要的基礎知識:
●硬體:電腦裡頭有什麼,如何運作,是如何建造出來的?它如何儲存及處理資訊?
●軟體:我們能夠用電腦來運算什麼,運算速度有多快?編程是什麼,我們如何告訴電腦去做什麼?
●通訊:網際網路與全球資訊網如何運作,其中涉及了什麼風險,尤其是隱私及資安?
●資料:人工智慧、機器學習等分析及利用龐大資料的領域突飛猛進,我們如何限制在不知情之下提供資料?
★AI、5G、區塊鏈……日新月異的科技趨勢,你也能看得懂、跟得上:
●無處不在的應用程式(app)
執行某種特殊應用目的所撰寫的程式或軟體系統,例如用Word 製作文件,用Excel 管理個人財務,用iPhoto 編輯相片。
●搜尋引擎是怎麼辦到的?
使用網路爬蟲(web crawler)掃描網頁,把切要內容儲存於儲存及整理於伺服器,以便能夠快速回應後續的查詢。
●雲端運算的「雲端」在哪裡?
沒有特定的實體位置的網際網路被比喻為「雲」,雲端運算是個人及公司把資料儲存於亞馬遜、谷歌、微軟等公司的伺服器裡,由伺服器執行運算。
●深度學習(deep learning)的廣泛應用
深度學習使用相似人腦神經網路的運算模型,電腦視覺找出特徵上特別成功,例如人臉及指紋辨識、解讀地形等。
若你跟多數人一樣,其實不甚了解這數位世界的根本與牽涉層面,那麼,你應該閱讀本書,讓普林斯頓大學最熱門的電腦科學與數位世界入門課程教授帶領你進入這世界,你將不再是「電腦盲」或「數位盲」。
◎本書特色1.普林斯頓最熱門的電腦課,人人都能讀懂
出身貝爾實驗室的C語言先驅、堪稱業界大神的布萊恩‧柯尼罕帶領非資訊相關系所學生入門,採相對平易的比喻方式說明,循序漸進引導,容易消化吸收,
2.資訊時代必修的電腦基礎知識大補帖
日新月異的資訊科技改變了你我的生活,也改變了學習、工作、投資方向,電腦知識至關重要,進入門檻卻高。本書針對非專業背景者而寫,無論是一般大眾、職場工作者或應考者,都可作為趕上科技趨勢、補修資訊知識的最佳入門書。
3.架構完整、資訊最新,適合教學或自學
內容涵蓋計算機概論必學的基礎與應用,更補充許多數位新科技,如加密貨幣、區塊鏈、深度學習、資訊安全問題……,包括學校授課、讀書會或自學都好用。
作者簡介:
布萊恩‧柯尼罕Brian W. Kernighan
加拿大籍世界頂尖電腦科學家,普林斯頓大學電腦科學系教授,曾服務於貝爾實驗室,參與UNIX系統的早期開發,UNIX這個名稱也是他首先提出的。柯尼罕也是數學程式語言AMPL以及編程及資料操作語言AWK的共同創造者,他和C程式語言創造者丹尼斯.里奇(Dennis MacAlistair Ritchie)合著了第一本有關於C程式語言的著作《C程式設計語言》(The C Programming Language),也協助開發過許多程式語言及軟體工具。
柯尼罕擁有多倫多大學工程物理學學士學位,以及普林斯頓大學電機工程博士學位,並從2000年任教該校電腦科學系暨大學部系主任至今,他每年秋季為非電腦科學主修學生開設的「我們的世界裡的電腦」(Computers in Our World)課程被譽為普林斯頓大學最熱門的電腦與數位世界入門課。因為對電腦軟體及程式語言的卓著貢獻,他在2002年獲選為美國國家工程學院(National Academy of Engineering)院士,2019年獲選為美國人文與科學學院(American Academy of Arts and Sciences)院士。
譯者簡介:
李芳齡
譯作超過百本,包括近期的《領導者的數位轉型》、《AI行銷學》、《以少創多》、《貝佐斯寫給股東的信》、《關於工作的9大謊言》、《小規模是趨勢》、《複利效應》、《專案管理革命》、《金錢心理學》、《心態致勝》、《機器、平台、群眾》、《區塊鏈革命》。
各界推薦
名人推薦:
◎專業推薦
艾力克.施密特(Google前CEO)
葛如鈞(國立臺灣大學網路與多媒體研究所兼任助理教授)
哈利.路易士(哈佛大學電腦科學教授、前哈佛學院院長)
約翰.麥考米克(狄金森學院電腦科學教授)
布萊恩.瑞斯派斯(柏根縣立高中電腦科學教師)
史帝夫.曼斯菲爾德—戴文(《網路安全》期刊編輯)
「本書是谷歌最知名的發明家對我們現在所處的世界最清晰、最簡單的解釋——電腦如何運作,以及為什麼會這樣。地球上每個人都需要讀。」
——艾力克.施密特(Google前CEO)
「如果說上個世代必讀的書是大英百科全書,那麼這個世代必讀的書也許就是這本普林斯頓電腦入門課。當我們懂了電腦,那麼全宇宙的知識都在我們的手掌中。」
——葛如鈞(國立臺灣大學 網路與多媒體研究所 兼任助理教授)
「本書揭開電腦與網路的神秘面紗,人人都能從中學到東西。柯尼罕以友善、易讀易懂的文風,把機器內部的運作和數位世界的平日新聞與發展連結起來。」
――哈利.路易士(哈佛大學電腦科學教授、前哈佛學院院長)
「柯尼罕作為一名電腦科學家,具有明星級的信譽,但本書展現的是對現代世界中的科技境況的人道主義關切……。本書非常接地氣地解釋電腦運算的根本知識,以及電腦科技與我們的生活如何互動,這些知識將很長期地切要。」
――史帝夫.曼斯菲爾德—戴文(《網路安全》期刊編輯)
「本書為普羅大眾提供電腦與電子通訊的綜覽,平順流暢地探討一個又一個主題,不論什麼背景的讀者都會覺得易讀易懂。」
――布萊恩.瑞斯派斯(柏根縣立高中電腦科學教師)
名人推薦:◎專業推薦
艾力克.施密特(Google前CEO)
葛如鈞(國立臺灣大學網路與多媒體研究所兼任助理教授)
哈利.路易士(哈佛大學電腦科學教授、前哈佛學院院長)
約翰.麥考米克(狄金森學院電腦科學教授)
布萊恩.瑞斯派斯(柏根縣立高中電腦科學教師)
史帝夫.曼斯菲爾德—戴文(《網路安全》期刊編輯)
「本書是谷歌最知名的發明家對我們現在所處的世界最清晰、最簡單的解釋——電腦如何運作,以及為什麼會這樣。地球上每個人都需要讀。」
——艾力克.施密特(Google前CEO)
「如果說上個世代必讀的書是大英百科...
章節試閱
【摘錄1】第一章 電腦是什麼?
1.1邏輯結構
1.1.1處理器
若我們可以說電腦有大腦的話,那麼,處理器就是電腦的大腦。處理器執行算術,移動資料,控制其他元件的運作,處理器能夠執行的基本運算項目有限,但它執行得飛快,每秒數十億筆。它能夠根據前面的運算結果來決定接下來執行什麼運算,因此,它相當程度地不依賴其人類使用者。第三章將對這元件有更多的討論,因為它太重要了。
若你去一實體店或在線上購買一台電腦,你將會看到產品介紹中提及絕大多數的這些元件,且通常伴隨著神秘的首字母縮略字和同樣神秘的數字,例如一個處理器被描述為「2.2 GHz dual-core Intel Core i7」,我的一台電腦的處理器就是被如此描述的,但這究竟是什麼?這台處理器是英特爾製造的,「Core i7」是英特爾的一個處理器系列產品的名稱,這台處理器是雙核心(dual-core)處理器――把兩個處理器(兩個核心)封裝在一個積體電路上,在此例中,小寫的「core(核心)」變成「processor(處理器)」的同義詞。一個核心就是一個處理器,但中央處理器可能有幾個核心,能夠一起運作或獨立運作,使運算執行得更快,就多數用途而言,不論有多少核心,只需把這種組合想成是「處理器」就夠了。
至於「2.2 GHz」,那就是更有趣的部分了。處理器的速度是以它每秒能執行的運算或指令或指令集來衡量的(至少是大致以此來衡量),處理器使用一個內部時鐘――就像心跳或時鐘的滴答聲――來計步其基本運算。衡量處理器速度的一個指標是每秒的滴答次數,每秒的跳動或滴答次數被稱為一赫茲(hetz,簡寫Hz),以德國工程師海因里奇.赫茲(Heinrich Hertz)為命名,他在1888年發現如何產生電磁波,這直接引領出無線電及其他無線系統的誕生。電台以百萬赫(megahertz,簡寫為MHz,譯註:從以前到現在,台灣的電台都使用「兆赫」一詞,這是肇因於中文辭海中寫「百萬為兆」而衍生出來的誤譯詞,實際上,兆赫是THz)來稱呼它們的廣播頻率,例如102.3 MHz。現在的電腦通常以吉赫(gigahertz,十億赫茲,簡寫為GHz)的速度運轉,我的電腦的處理器速度是相當普通的水準――2.2GHz意指它每秒滴答2,200,000,000次。人的心跳大約是1Hz,或是每天約100,000次,每年約3,000萬次,所以,我的電腦處理器的每個核心每秒跳動的次數是我的心臟在70年間跳動的次數。
這是我們首次遇上字首為mega、giga之類的數值,這在電腦運算領域是非常普遍的用字,「mega」是一百萬,或106;「giga」是十億,或109,發音為重音的「g」,如同「gig」中的發音。我們很快就會遇上更多的數值單位,本書最後附上的詞彙表中有完整的單位表。
1.1.2主記憶體
主記憶體儲存那些被處理器及電腦的其他部件活躍使用的資訊,它的內容可以被處理器更改。主記憶體不僅儲存處理器目前正在處理的資料,也儲存告訴處理器對那些資料做什麼處理的指令,以下這點很重要:藉由的記憶體中載入不同的指令,我們可以讓處理器執行不同的運算。這使得內儲程式電腦(stored-program computer)變成一種通用器材,同一台電腦可以跑文書處理及試算表,上網,收發電子郵件,在臉書上和朋友聯繫,執行我的稅務,播放音樂,全都只需在記憶體中置入適當的指令就行了。內儲程式的概念的重要性,再怎麼強調都不為過。
電腦正在執行工作時,主記憶體提供一個儲存資訊的地方,它儲存目前正在活動中的程式指令,例如Word、Photoshop、或瀏覽器,它儲存它們的資料――被編輯的文件,螢幕上的相片,正在播放的音樂,也儲存在幕後運作而讓你同時跑多個應用程式的作業系統――視窗,macOS、或其他作業系統――的指令。第六章將探討應用程式及作業系統。
主記憶體被稱為隨機存取記憶體或RAM,因為處理器可以快速存取儲存在它裡頭任何地方的資訊,而且,不論儲存於它裡頭的任何地方,存取的速度都一樣快;稍微過於簡化地說,以隨機順序進入記憶體的任何位址存取資訊,都不會有超速罰款。雖然,VCR錄影帶早就成為老古董了,你可能還記得它們,當你想看一部電影的結尾時,你必須從最開頭的地方快速進帶(其實應該說是慢慢地進帶!),這稱為循序存取(sequential access)。
大多數的RAM是依電性記憶體(volatile memory,或譯「易失性記憶體」),亦即若關閉電源,它的內容就消失了,你將突然間失去當下執行中的所有資訊,所以,你應該經常儲存你正在執行中的工作,尤其是在使用桌上型電腦時,絆到電源線而導致關閉電源,可能發生慘劇。
你的電腦有固定量的主記憶體,其容量的衡量單位是位元組,一個位元組的記憶體量大到足以容納一個字符如W或@,或是一個小數字如42,或一個較大數值的一部分。第二章將說明在記憶體及電腦的其他部件中如何表述資訊,因為這是電腦運算的基本課題之一。現下,你可以把記憶體想成一個由許多相同的小盒子組成的一個大集成體,小盒子的數量上達幾十億個,每個小盒子能容納一小量的資訊。
什麼是容量?我現在使用的筆記型電腦有80億個位元組,或8個吉位元組(gigabyte,簡寫為GB)的主記憶體,這容量可能太小了,因為愈多的記憶體通常能轉化為更快的電腦運算,對於所有想同時使用主記憶體的程式來說,容量永遠嫌不足,而且,把一個不活動的程式的某些部分移出,騰出空間給別的程式,這需要花些時間。若你想要讓你的電腦運轉得更快,最佳策略可能是購買更多的RAM――前提是,你的電腦的記憶體可以升級的話,有些電腦的記憶體是不能升級的。
1.1.3輔助儲存器
主記憶體有龐大、但有效的容量可儲存資訊,當電源關閉時,它的內容就消失,反觀輔助儲存器縱使在關閉電源時,仍然會保留資訊。輔助儲存器主要有兩種:較老式的磁碟,被稱為硬碟(hard disk或hard drive),較新式的被稱為固態硬碟(solid state drive,SSD)。這兩種硬碟儲存的資訊量遠多於主記憶體,而且,它不是非依電性記憶體(non-volatile memory):縱使關閉電源,這兩種硬碟裡的資訊仍然保留著。資料、指令、及種種其他東西長期儲存於輔助儲存器裡,只會暫時地被帶進主記憶體裡。
磁碟藉由設定旋轉金屬表面上細小區域磁性物質的磁化方向來儲存資訊,資料儲存於同心磁軌上,用一個感應器(譯註:這感應器通常稱為「讀寫頭」)在各磁軌間移動,讀寫資料。一台較老的電腦在執行工作時發出的呼呼聲,就是磁碟在運作的聲音,把供應器移動到表面的正確位置。磁碟表面高速旋轉,每分鐘旋轉至少5,400次,<圖表1-3>是一個標準的筆記型電腦磁碟照片,你可以在照片中看到磁碟表面及感應器,這個磁盤的直徑是2.5英吋(6.35公分)。
磁碟儲存器的每一個位元組大約比RAM便宜100倍,但處理資訊的速度較慢,磁碟存取表面任何一個特定磁軌得花約10毫秒,因此,每秒約讀寫100 MB的資料。
十年前,幾乎所有筆記型電腦都有磁碟;現在,幾乎所有筆記型電腦都有固態硬碟(SSD),使用的是快閃記憶體(flash memory),而非旋轉式機器。快閃記憶體是非依電性記憶體,因為在這種記憶體中,資訊是以電荷(electric charge)形式儲存於電路系統,縱使斷電了,電荷仍然維持於個別的電路元件裡。這些儲存電荷(stored charges)可被讀取,看看它們的數值是什麼,它們可以被擦除,再寫入新數值。快閃記憶體更快、更輕、更可靠,掉下來時不會破損,需要的電力少於傳統的磁碟儲存器,因此也被使用於手機、相機之類的器材上。目前,SSD的每個位元組價格仍然較高,但價格持續下滑中,其優點非常顯著,因此,SSD已經相當普遍地取代了筆記型電腦中的機械式磁碟。
通常,一顆筆記型電腦的SSD容量為250GB到500GB。可插入通用序列匯流排(Universal Serial Bus,簡稱USB)槽的外接硬碟的容量是多個兆位元組(terabyte,TB),它們仍然是基於旋轉式機械裝置。「Tera」是一兆,或1012,這是一個你將經常看到的單位。
一個兆位元組(TB),或一個吉位元組(GB)有多大呢?一個位元組可容納最常見的英文文本中的一個字母,一本約250頁的《傲慢與偏見》(Pride and Prejudice)紙本書有大約680,000個字,因此1 GB可以容納近1,500本。我比較可能使用1 GB容量的儲存器來儲存一本《傲慢與偏見》,以及一些音樂,MP3格式的音樂大約每分鐘1 MB,因此,我最喜愛的音樂CD之一《Jane Austen’s Songbook》的一個MP3版本大約是60 MB,1 GB容量的儲存器還有空間可以儲存另外15小時的音樂。英國廣播公司(BBC)在1995年製作的、由珍妮佛.艾莉(Jennifer Ehle)及柯林.佛斯(Colin Firth)主演的《傲慢與偏見》電視影集的雙碟DVD不到10 GB,因此,我若有1 TB容量的儲存器,我可以儲存這部影集,外加100部類似的電影。
【摘錄2】第十一章 資料與資訊
11.5雲端運算
回想第六章中敘述的電腦運算使用模式,你有一台或好幾台個人電腦,你讓個別應用程式執行不同的工作,例如用Word製作文件,用Quicken或Excel做你的個人財務,用iPhoto管理你的相片。這些程式雖可能連結網際網路以取得一些服務,但它們在你的電腦上運轉,你可以不時地去下載一個修補了漏洞的新版本應用程式,偶爾可能得購買一個升級版以取得新功能。
這個模式的本質是,程式和資料都在你自己的電腦上。若你在一台電腦上修改了一個檔案,然後在另一台電腦上需要這檔案,你必須自己做轉移。若你在辦公室或外出旅行途中需要一個儲存於你家中一台電腦上的檔案,那就麻煩了。若你需要在一台視窗個人電腦和一台麥金塔電腦(Mac)上都有Excel或PowerPoint,你必須為兩台電腦各買一個程式。上面說的這些情況,還沒把你的手機包含在內哦。
另一種不同的模式是愈來愈普及:使用瀏覽器或手機去存取及操作儲存於網際網路伺服器上的資訊。Gmail或Outlook之類的郵件服務是最普遍的例子,你可以從任何一台電腦或手機存取你的電子郵件,可以上傳一封在本機上撰寫的郵件訊息,或是下載郵件訊息至本機檔案系統,但多數時候,你把資訊留在提供服務的伺服器上。你不需要做什麼軟體更新,但不時會有新功能出現。你通常是在臉書上跟朋友保持聯繫或觀看他們的照片,但交談及照片儲存在臉書,不是儲存在你自己的電腦上,這些服務是免費的,唯一可見的「成本」是當你閱讀你的郵件或查看你的朋友在做什麼時,你可能會看到廣告。
這種模式通常被稱為「雲端運算」(cloud computing),因為網際網路被比喻為「雲」(參見<圖表11-7>),沒有特定的實體位置,資訊被儲存於「雲端」的某處。電子郵件和社交網路是最常見的雲端服務,但還有很多其他的雲端服務,例如多寶箱(Dropbox)、推特、領英、YouTube、線上行事曆等等。資料不是儲存於本機,而是儲存於雲端,亦即雲端服務供應商的伺服器上:你的電子郵件及行事曆儲存於谷歌的伺服器,你的相片儲存於多寶箱(Dropbox)或臉書的伺服器,你的履歷表儲存於領英的伺服器等等。
雲端運算的問世,得力於多個因素的匯聚。個人電腦變得愈來愈強大的同時,瀏覽器也是,瀏覽器現在能夠有效率地執行顯示要求很高的大程式,儘管使用的程式語言是直譯式的JavaScript。對多數人而言,現在的頻寬及用戶端與伺服器端之間的延遲(等候時間)遠優於十年前,這使得資料的傳送與接收更快,甚至在你輸入搜尋詞時,當即反應你的鍵擊,在你還未輸入完之前,就列出一些建議的搜尋詞。結果是,以往需要一個單獨的程式去處理的絕大多數使用者介面操作,用瀏覽器就能搞定,在此同時,使用一台伺服器去承載大量資料,執行任何複雜運算。這種組織方式也在手機上運作得很好:不需要再下載一款行動應用程式。
以瀏覽器為基礎(browser-based)的系統的反應速度可以媲美以個別電腦為基礎(desktop-based)的系統,並且讓你可以從任何地方存取資料。以來自谷歌的雲端「office」工具為例,它提供文書處理器、試算表、以及簡報程式,讓多使用者可以同時存取使用及更新。(譯註:以瀏覽器為基礎的系統又稱為web-based,或稱「brower-server model」,簡稱B/S模式,指的是透過瀏覽器去使用網路上的軟體來執行各種工作;以個別電腦為基礎的系統又稱為client-based,或稱為「client-server model」,簡稱C/S模式,指的是必須在每台電腦上安裝各種軟體來執行各種工作。)
一個受到關心的議題是,這些雲端工具會不會最終運轉得夠好而完全取代以個別電腦為基礎的版本。你大概可以想像得到,微軟非常關心這個,因為Office軟體佔該公司營收的相當比重,而Office主要在視窗作業系統上執行,微軟的其餘營收大多來自視窗作業系統。以瀏覽器為基礎的文書處理及試算表不需要來自微軟的任何軟體,因此將威脅到微軟的Offic及視窗作業系統這兩大核心業務。目前,谷歌文件(Google Docs)及其他類似的系統還不具備Word、Excel、及PowerPoint的所有功能,但科技進步史中充滿這樣的例子――明顯較差的系統問市,搶走認為此系統已經夠好的新使用者,漸漸侵蝕在位者的市場佔有率,並且持續改進本身的功能。微軟顯然很清楚這問題,實際上,為因應此問題,該公司已經推出雲端版本的Office 365。
以網路為基礎(web-based,亦即以瀏覽器為基礎)的服務其實對微軟及其他供應商具有吸引力,因為易於採用訂閱收費模式,用戶必須持續付費以取得服務。但是,消費者可能偏好一次性購買軟體,必要時再付費升級。我目前仍然在我的較舊的麥金塔電腦上使用2008年版本的Microsoft Office,它運作得很好(在此應該稱讚微軟),而且,它仍然偶爾獲得安全性更新,因此,我並不急於升級。
雲端運算仰賴用戶端的快速處理及大量記憶體,以及伺服器端的高頻寬。用戶端的程式是用JavaScript語言撰寫的,通常錯綜複雜。JavaScript程式重度要求瀏覽器更新及快速顯示圖形資料,敏捷反應使用者的動作(例如拖曳)及伺服器的動作(例如更新的內容),這已經是夠難了,難上加難的是,瀏覽器版本與JavaScript版本之間的不相容性,需要雲端服務供應商找出傳送程式給用戶端的最佳方法。不過,伴隨電腦運算速度愈來愈快,以及更加遵從標準,這些都在進步中。
雲端運算可以在「於何處執行運算」和「處理過程中把資訊寄存於何處」這兩者之間作出取捨,例如,使JavaScript程式與特定瀏覽器脫鉤的方法之一是,在程式本身裡頭包含測試,譬如:「若瀏覽器是Firefox 75版,就執行這個;若瀏覽器是Safari 12版,就執行那個;若為其他瀏覽器版本,執行別的。」這樣的程式比較大,意味的是,需要更多頻寬來把JavaScript程式傳送至用戶端,而且,程式中增加的測試可能使瀏覽器運轉得較慢。另一種方法是,伺服器可以詢問用戶使用的是哪種瀏覽器,然後傳送針對這款瀏覽器撰寫的程式,這程式可能更簡潔,執行得更快,不過,對於原本就小的程式,差異可能不大。
網頁內容可以用不壓縮形式傳送,這樣,用戶端及伺服器端需要的處理工作較少,但需要較多的頻寬來傳輸;或者,用壓縮形式來傳送網頁內容,傳輸時需要的頻寬較少,但兩端需要增加處理工作。有時候,只有一端做壓縮處理,大型JavaScript程式經常被壓縮,移除所有不必要的空白,讓變數及函式使用一或兩個字母的名稱,壓縮後的程式是人類看不懂的,但用戶端電腦不在意。
儘管有技術性挑戰,若你總是能連上網際網路的話,雲端運算的優點很多。它們供應的軟體總是最新的,資訊儲存於專業管理的、有大容量的伺服器上,客戶資料隨時都有備份,幾乎沒有遺失的可能。一份文件只有一種版本,不會發生同一份文件在不同的電腦上可能有不一致版本的情形,而且,很容易即時共享文件及通力合作。雲端服務的價格很便宜,個人消費者往往可以免費取得,但企業客戶可能得付費。
另一方面,雲端服務也衍生出困難的隱私與資安疑問。誰擁有儲存於雲端的資料?誰能存取,在什麼境況下可以存取?若資訊意外外洩,是否需要承擔責任?如何處理離世者在雲端的帳戶?誰能強迫公開資料?例如,在什麼情況下,你的電子郵件服務供應商將自動地或在法律訴訟的脅迫下,把你的通信交給政府機關或法院作為訴訟的呈堂證據?若供應商這麼做,你會得知嗎?在美國,若服務供應公司收到所謂的「國家安全信函」(National Security Letter,譯註:不需經過法官同意、由聯邦政府簽發的行政傳票,以國安為由,要求公司提供有關於其客戶的資訊)後,公司不得告訴客戶他們成為政府蒐集資訊的對象。此問題的答案與與你的居住地的關係有多大?若你是歐盟國家的居民,歐盟對個人資料的隱私有更嚴格規範,但若你的雲端資料儲存在位於美國的伺服器上,並受制於《美國愛國者法》(Patriot Act)之類的法律呢?
若你使用網際網路服務供應商或雲端服務作為你的私人電子郵件帳戶,就跟多數人一樣(例如Gmail、Outlook、Yahoo等等),隱私就只涉及你和它們。通常,這類服務採取的公開立場與說法是,顧客的電子郵件是私人資訊,在無法律要求下,沒有他人會閱讀或揭露它們,但是,它們通常不會談論它們是否會堅定拒絕那些似乎太廣義或隨便地以「國家安全」為理由而發出的傳票。你得仰仗你的服務供應商對抗強大壓力的意願。在911恐怖攻擊事件之前,為了打擊組織犯罪,在911恐怖感覺事件之後,為了對抗恐怖行動,美國政府想要更容易地取得電子郵件,這種取得電子郵件的施壓持續升高,在任何恐怖攻擊事件後,施壓力度特別大。
這裡舉一個例子,2013年時,為客戶提供加密的安全電子郵件服務的小公司拉瓦比特(Lavabit)被下令在公司網路上安裝監視器,讓美國政府可以存取電子郵件。美國政府也下令該公司交出加密的金鑰,並告訴該公司業主拉達爾.雷文森(Ladar Levison),他可以告知他的客戶,政府所做的這些事。雷文森拒絕了,說這不符正當法律程序。最終,他選擇關閉他的公司,而非讓其客戶的電子郵件可被外人存取。最終,有證據顯示,美國政府對拉瓦比特作出這些要求,僅是為了取得一個帳戶的資訊:愛德華.史諾登的電子郵件帳戶。
【摘錄1】第一章 電腦是什麼?
1.1邏輯結構
1.1.1處理器
若我們可以說電腦有大腦的話,那麼,處理器就是電腦的大腦。處理器執行算術,移動資料,控制其他元件的運作,處理器能夠執行的基本運算項目有限,但它執行得飛快,每秒數十億筆。它能夠根據前面的運算結果來決定接下來執行什麼運算,因此,它相當程度地不依賴其人類使用者。第三章將對這元件有更多的討論,因為它太重要了。
若你去一實體店或在線上購買一台電腦,你將會看到產品介紹中提及絕大多數的這些元件,且通常伴隨著神秘的首字母縮略字和同樣神秘的數字,例如一個處...
作者序
自1999年起,幾乎每一個秋季,我都在普林斯頓大學開一門課:「我們的世界裡的電腦(Computers in Our World)」,這課程名稱含糊得令我覺得不好意思,但是,這是我在當年的某天,我必須在不到五分鐘內想出來的一個名稱,一旦決定了,改名就變得很難了改變。不過,教這門課是成為我在非常享受的大學教書工作中最有趣的一件事。
開這門課是基於我的一個觀察。我們的世界裡,電腦及電腦運算無所不在,一些電腦運算非常明顯可見――現在,每個學生都有一台遠比IBM 7094主機型電腦還要強大的筆記型電腦,我於1964年就讀我還是普林斯頓大學研究生所時,一台服務整個校園的IBM 7094主機型電腦得花數百萬美元購買,體積佔據一個大空調房間。現在,每個學生都有一支手機,其電腦運算力遠超過也遠比那古董的IBM 7094還要強大。現在,每個學生都能高速連結網際網路,全球人口中有一大部分也能高速連網,人人都在線上搜尋與購物,使用電子郵件、簡訊、及社交網路來和親友保持聯絡。
但這只是電腦運算這座大冰山浮現出來的一部分一角分,冰山的絕大部分還隱藏於表面之下。我們看不到、通常也不會想到隱藏於家電、車子、飛機、以及無數我們視為理所當然的電子器材――智慧型電視機、恆溫器、門鈴、語音辨識系統、健身追蹤器、耳機、玩具、遊戲等等――內部的電腦。我們也不太會去思考種種基礎設施對電腦運算的倚賴程度,包括電視網、有線電視、空中交通控管管制、電力網、銀行與金融服務等等。
多數人將不會直接涉及這類系統的建造工作,但人人都受到它們的顯著影響,有些人將必須作出與它們有關的重要決策。一個受過教育的人起碼得知道電腦運算的基本原理:電腦能做什麼,以及如何做;電腦完全無法做不到什麼,以及哪些部分只是因為目前還太難以做到;電腦與電腦之間如何溝通交談,以及它們彼此溝通交談時會發生什麼;電腦運算與通訊影響我們周遭世界的許多方式。
電腦運算的無所不在與無孔不入,以我們意想不到的方式影響我們。雖然,我們不時被提醒,監視系統愈來愈多,我們的隱私被侵犯以及我們的身份被盜用的危險與日俱增愈來愈嚴重,但我們可能還不並未確實了解電腦運算及通訊導致的這類脆弱性的程度。
美國國安局外包技術員愛德華.史諾登(Edward Snowden)在2013年6月向一些新聞記者提供5萬份文件,揭露美國國安局經常性地監聽與收集近乎世上所有人的電子通訊(電話、簡訊、與網際網路使用),但主要對象是生活在美國、對自己國家的安全不構成威脅的美國公民。史諾登揭露的文件顯示,其他國家也監聽及窺探它們的人民。或許,最令人驚訝的是,過了起初的義憤填膺之後,一切又回歸平常,政府監聽與窺探的情形愈來愈多,但人民順從或不以為意地接受。
企業也在線上及實體世界追蹤和監視我們,許多公司的事業模式基礎是收集龐大資料,使用這些資料來預測與影響我們的行為。龐大的資料供輸已經促成了語音理解、電腦視覺、及語言翻譯等領域的大進展,但這是以犧牲我們的隱私為代價,使人人們變得更加難以匿名。
各種類型的駭客已經變得很老練於攻擊資料庫,現在幾乎天天都上演企業及政府機構遭到電子入侵的戲碼;大量的顧客及員工資訊遭竊,這些被盜的資訊往往被用於欺詐及身份盜用。個人受到攻擊的情形也相當普遍,在以往,你只要不理會謊稱為奈及利亞皇族發出的電子郵件,就能免於網路線上詐騙;但現在,針對性攻擊遠遠更狡猾,已經成為企業電腦系統遭到入侵的最常見手法之一。
臉書(Facebook)、映思(Instagram)、推特(Twitter)、銳遞(Reddit)等等之類的社交媒體網站已經改變了人們的互動方式,有時候,這是正面的改變――與親友保持聯繫,觀看新聞,種種娛樂等等。這些有時產生正面影響,例如,2020年中,警察殘暴執法的影片被人們病毒式傳播,使「黑人的命也是命」(Black Lives Matter)運動引起大家的關注。
但是,社交媒體也造成了相當多的負面作用。種族主義份子、仇恨團體、陰謀理論者、以及其他瘋狂人士,不論他們的理念或政治立場為何,他們總是能夠輕易地在網際網路上找到彼此,協調合作,擴大他們的影響作用。在呼籲或尋求節制線上內容時,言論自由的主張和技術性挑戰等棘手問題導致難以減少敵意與荒謬言論的散播居高不下。
在透過網際網路而完全緊密相連連結的世界,司法管轄權也是難題。歐盟自2018年開始實行一般資料保護規範(General Data Protection Regulation,簡稱GDPR),讓歐盟國家居民控管他們的個人資料的收集與使用,防止公司在歐盟以外地區傳送或儲存這類資料。但是,GDPR是否有效改善了個人隱私,尚不明確,當然,這些規範只適用歐盟國家,世界其他地區的情況有所不同。
雲端運算的被快速採用,增添了另一層使情況更為複雜性。雲端運算係指個人及公司把他們的資料儲存於亞馬遜、谷歌、及微軟之類公司擁有的伺服器裡,並由那些伺服器執行運算,也就是說,資料不再由其所有權人直接保管,而是由第三方保管,這些第三方的議程、責任、及脆弱性不同於資料所有權人,可能面臨利害衝突的管轄權要求。
種種器材與網際網路連結的「物聯網」(Internet of Things,簡稱IoT)正在快速成長中,手機當然是個明顯的例子,還有車輛、保全攝影機、家用電器與控制系統、醫療器材、以及大量的基礎設施如空中交通控管管制及電力網等等。這種萬物與網際網路連結的趨勢將持續發展,因為與網路連結的益處太動人了令人無法抗拒,但是,這也涉及了重大風險,因為這些器材可不是純粹娛樂我們,一些這類器材控管了生死系統,它們的安全性往往遠比較早而較成熟的系統更為脆弱。
能夠有效防禦這一切的方法並不多,密碼術是其中之一,它提供了保護通訊及資料儲存的隱私性與安全性的手段。不幸的是,強大的密碼術(cryptography)持續遭到攻擊,政府並不喜歡讓個人、公司、或恐怖份子有真正的、百分之百的私密通訊,因此經常呼籲在密碼演算法中留有後門(backdoor),讓政府機構可以在必要時破解加密,當然,前提是以在「有適當防護」及「為了國家安全著想」之下為前提。但是,不論意圖多良善,這都是糟糕的概念壞主意。縱使你相信政府將總是守規矩展現高尚行為,私密資訊絕對不會外洩(儘管史諾登揭露的文件證明,我們不該相信這點),你仍然應該考慮使用起碼程度的密碼術,避免敵人、朋友、及壞傢伙使用你的私密資訊。
普羅大眾――例如上我的課程的學生,或一般受過教育的人,不論他們的背景為何,受過什麼訓練,都必須關切一些問題與議題。
我的課程的學生並不是主修工程、物理、或數學之類科技性質學科的學生,他們可能主修英語、政治、歷史、古典主義、經濟、音樂、藝術等等人文科學及社會科學,上完這課程,他們應該能夠閱讀懂與了解有關於電腦運算的新聞報導文章,從中學到更多,或許還能看出其中可能不正確精確的論述。就更廣泛廣面而言,我希望我的學生及讀者能夠對科技抱持理智的懷疑,知道科技通常是個好東西,但不是萬靈藥靈丹;反過來說,科技有時雖帶來不好的影響,但它不是一個全然的惡魔十惡不赦。
物理學家理查.穆勒(Richard Muller)在其優異著作《給未來總統的物理課》(Physics for Future Presidents)中嘗試解釋領導人必須應付的核子威脅、恐怖份子、能源、全球暖化等等重要課題所涉及的科技背景,非不立志於當總統、但有見識的公民也應該對這些主題有起碼程度的了解。穆勒使用的這種教育方法為我想達到的目的提供了一個很好的比喻:「給未來總統的電腦運算課」。
一個未來的總統應該對電腦運算有什麼了解呢?一個有見識的公民應該對電腦運算有什麼了解呢?你應該對電腦運算有什麼了解呢?我認為,有四個核心技術領域:硬體,軟體,通訊,及資料。
硬體是有形的部分:我們可以看到及觸摸到、放在我們家中及辦公室的電腦,以及我們隨身攜帶的手機裡的電腦。電腦裡頭有什麼,它如何運作,它是如何建造出來的?它如何儲存及處理資訊?什麼是位元(bit)及位元組(byte),我們如何用它們來表現音樂、電影、及其他種種東西?
軟體是告訴電腦去做什麼的指令,它是幾乎完全無形的東西。我們能夠用電腦來運算什麼,運算速度有多快?我們如何告訴電腦去做什麼?為何如此難以使它們做對?為何經常難以使用它們?
通訊指的是電腦、手機、及其他器材為了我們而彼此交談、並且使我們能夠彼此交談的東西:網際網路,全球資訊網,電子郵件,以及社交媒體。這些是如何運作的?這些通訊帶來的益處很顯然顯而易見,但這其中涉及了什麼風險,尤其是我們的隱私及資安?可以如何降低這些風險?
資料是硬體與軟體收集、儲存、及處理、並透過通訊系統發送至世界各地的所有資訊。這其中有些是我們自願(不論是否經過審慎考慮)貢獻的資料――我們上傳的文字、相片、及影片;但大部分是我們在日常生活中不知情之下(更遑論經過我們的同意)被收集與分享的個人資訊。
不論你是不是總統,將來選不選總統,你都應該了解電腦運算,因為它影響你個人。不論你的生活與工作與多麼非科技距離多遠性質,你都將必須和科技與科技人員往來互動。對器材與系統的運作有所了解,是一大益處,縱使是簡單的事件――例如,你認知到,這名銷售員、或這名技術協助員、或這位政治人物並未告訴你全部真相,對你也有益處。
事實上,無知可能對你造成直接傷害。若你不了解病毒、網路釣魚、及其他類似的威脅,你將更容易受到它們的侵害。若你不知道社交網路如何洩露、甚至散播你視為隱私的資訊,你的隱私被洩露的程度可能比你所知道的更為嚴重。若你不了解企業與商家多麼魯莽輕率地利用它們對你的生活的了解來牟取商業利益,你就不會為了蠅頭小利而的捨棄隱私將不會為你帶來什麼益處。若你不知道何以在一家咖啡店或一個一座機場執行你進個人的網路銀行查詢或交易戶頭是件危險的事,你的金錢或身份有可能被盜。若你不知道資料多麼容易被操縱,你將更可能被假新聞、虛假形象、及陰謀理論欺騙。
建議你從頭到尾地循序閱讀本書,但你也可以先跳讀你較感興趣的主題,再回頭閱讀前面部分。例如,你可以先閱讀第八章有關於網路、手機、網際網路、全球資訊網、及隱私問題,這過程中,為幫助了解某些部分的內容,你可能得參閱一些前面章節,但大致上,先閱讀第八章是沒有問題的,你可以讀懂絕大部分內容。你可以略過數量性質的內容,例如第二章中的「二進數」(binary numbers),你也可以忽略幾章裡頭有關程式語言的細節。
本書的註釋列出我喜歡的一些書籍,包括源頭連結,以及有幫助的補充。本書最後提供的詞彙表簡單定義及解釋重要的術語及首字母縮略字。
任何一本探討電腦運算的書籍,都可能很快地變得過時,本書也不例外。本書第一版出版時,我們還未見識到敵意行動者操縱美國及其他國家的民意及影響選舉的嚴重程度。我在這第二版中增加重要的新故事,其中許多和個人隱私及資安有關,因為在過去幾年間,這問題已經變得愈來愈迫切。第二版也增加新專章探討人工智慧、機器學習、以及「大數據」如何使它們變得如此強大、但有時也非常危險。我也在這新版中嘗試釐清含糊的解釋,並刪除或替換過時的材料。儘管如此,當你閱讀本書時,難免仍會有一些錯誤或過時的細節,但我已經盡力清楚指出具有持久價值的內容。
我撰寫此書的目的是使你能夠對一項了不起的科技有一定程度的認識,了解它如何運作、它源自何處、以及它未來的可能走向。或許,閱讀本書的過程中,你也會對這世界產生有益的思考,這是我所期盼的。
自1999年起,幾乎每一個秋季,我都在普林斯頓大學開一門課:「我們的世界裡的電腦(Computers in Our World)」,這課程名稱含糊得令我覺得不好意思,但是,這是我在當年的某天,我必須在不到五分鐘內想出來的一個名稱,一旦決定了,改名就變得很難了改變。不過,教這門課是成為我在非常享受的大學教書工作中最有趣的一件事。
開這門課是基於我的一個觀察。我們的世界裡,電腦及電腦運算無所不在,一些電腦運算非常明顯可見――現在,每個學生都有一台遠比IBM 7094主機型電腦還要強大的筆記型電腦,我於1964年就讀我還是普林斯頓大學研究...
目錄
序
致謝
前言
第一部∥硬體
第一章∣電腦是什麼?
第二章∣位元,位元組,以及資訊的表述法
第三章∣探索處理器
第一部∣總結
第二部∥軟體
第四章∣演算法
第五章∣編程及程式語言
第六章∣軟體系統
第七章∣學習如何編程
第二部∣總結
第三部∥通訊
第八章∣網路
第九章∣網際網路
第十章∣全球資訊網
第三部∣總結
第四部∥資料
第十一章∣資料與資訊
第十二章∣人工智慧與機器學習
第十三章∣隱私與資安
第十四章∣接下來呢?
第四部∣總結
註釋
詞彙表
序
致謝
前言
第一部∥硬體
第一章∣電腦是什麼?
第二章∣位元,位元組,以及資訊的表述法
第三章∣探索處理器
第一部∣總結
第二部∥軟體
第四章∣演算法
第五章∣編程及程式語言
第六章∣軟體系統
第七章∣學習如何編程
第二部∣總結
第三部∥通訊
第八章∣網路
第九章∣網際網路
第十章∣全球資訊網
第三部∣總結
第四部∥資料
第十一章∣資料與資訊
第十二章∣人工智慧與機器學習
第十三章∣隱私與資安
第十四章∣接下來呢?
第四部∣總結
註釋
詞彙表
購物須知
退換貨說明:
會員均享有10天的商品猶豫期(含例假日)。若您欲辦理退換貨,請於取得該商品10日內寄回。
辦理退換貨時,請保持商品全新狀態與完整包裝(商品本身、贈品、贈票、附件、內外包裝、保證書、隨貨文件等)一併寄回。若退回商品無法回復原狀者,可能影響退換貨權利之行使或須負擔部分費用。
訂購本商品前請務必詳閱退換貨原則。