天天看點

《偉大的計算原理》一第1章 Great Principles of Computing 作為科學的計算

   本節書摘來自華章出版社《偉大的計算原理》一書中的第1章,第1.1節,作者[美]彼得 j. 丹甯(peter j. denning)克雷格 h. 馬特爾(craig h. martell),更多章節内容可以通路雲栖社群“華章計算機”公衆号檢視。

<b>第1章</b>

<b>great principles</b>

of computing

<b>作為科學的計算</b>

計算機科學研究計算機周邊的各種現象。

——newell,simon和perlis

計算機之于計算機科學,正如望遠鏡之于天文學。

——edsger w. dijkstra

計算與科學密不可分:計算不僅僅是一種資料分析的工具,更是一種用于思考和發現的方法。

這種觀點的形成并得到廣泛認同經曆了曲折的過程。計算是一門相對年輕的學科,其作為一個學術研究領域确立于20世紀30年代,确立的主要标志是由kurt g?del(1934)、alonzo church(1936)、emil post(1936)、alan turing(1936)等人所發表的一組重要論文。這些研究者敏銳地意識到了自動計算的重要性,為“計算”這個概念奠定了必要的數學基礎,并探讨了實作自動計算的不同模型。但人們很快就發現,這些看似不同的計算模型實際上是等價的,即由一種模型所描述的計算過程總能夠被其他模型所描述。而更為值得關注的是,這些不同的計算模型都指向了一個共同的結論:某些具有現實意義的問題(例如一個算法是否能夠終止)并不能通過計算的方式進行求解。

在這些研究者所處的時代,“計算”和“計算機”這兩個術語已經得到了廣泛的使用。那時,計算指的是求解數學函數的機械步驟,計算機則指的是執行計算的人。作為對這些研究者所開創的嶄新領域的緻敬,第一代數字計算機的設計者通常會将其所構造的系統命名為一個帶有字尾字元串“ac”的名字,其含義為自動計算機(automatic

computer)或類似的變體。這些名字的典型代表包括eniac、univac、edvac、edsac等。

在第二次世界大戰的初期,美、英兩國的軍方開始對自動計算機産生興趣,他們想使用自動計算機進行彈道計算和密碼破譯。為此,他們資助了若幹項目進行電子計算機的設計與實作。在二戰結束前,隻有一個項目順利完成。這是一個設在英國布萊切利公園的絕密項目。這個項目使用由阿蘭·圖靈設計的方法成功破譯了德軍使用的enigma密碼系統。

在20世紀50年代初,很多參與這些項目的研究人員開始創辦計算機公司。20世紀50年代末,大學也開始進行計算機領域的研究項目。從此以後,計算機領域的學術研究和工業實踐開始持續地增長,直到我們目前所看到的一個現代化的龐然大物。這個龐然大物包含了海量的網際網路連接配接和數不清的資料中心,據說消耗了全世界所生産的3%的電能。

《偉大的計算原理》一第1章 Great Principles of Computing 作為科學的計算

圖1.1 查理斯·巴貝奇(charles

babbage,1791—1871,左圖)發明了差分機,一種機械式的算術運算機器。後來,他提出了分析機的設計方案:該方案如果能夠實作,則有望成為一種通用計算機。ada lovelace(1815—1852,右圖)幫助charles babbage完成了分析機的設計。lovelace的視野不僅僅局限在數字計算上,而是擴充到了譜曲、繪畫,甚至邏輯推理等領域。在1843年,她編寫了一段能夠使用分析機計算伯努利數列的程式。她也是以被稱為世界上“第一個計算機程式員”(來源:wikipedia creative commons)

在其青年時期,計算對于已有的科學和工程領域而言,是一種難以被了解的新興事物。對于不同的觀察者而言,第一眼看上去,計算像是一種對數學、電子工程或其他科學領域的技術應用(譯者注:即,計算來源于這些領域,沒有這些領域,計算就如同無源之水)。經過多年的發展以後,計算似乎又為人們提供了無數的深刻見解,打破了人們對計算的早期了解,即計算不可能成為一個獨立的領域,而必将被其來源領域所重新吸納。到1980年,計算領域對于算法、資料結構、數值方法、程式設計語言、作業系統、網絡、資料庫、圖形圖像、人工智能、軟體工程等方面已經具備了相當成熟的了解。計算領域的偉大技術成就——晶片、個人計算機、網際網路——将計算帶入了更加豐富多彩的境界,并促成了更多新興子領域的産生,包括網絡科學、web科學、移動計算、企業計算、協同工作、網絡安全、使用者界面設計、資訊可視化等。由此産生的大規模商業化應用為社交網絡、演化計算、音樂、視訊、數字化攝影、視覺、大規模多使用者線上遊戲、使用者生成内容(user-generated content)以及其他領域帶來了全新的研究挑戰。

為了适應這種持續的變化,計算領域的名稱在曆史上已經發生了數次變化。在20世紀40年代,這個領域被稱為自動計算。在20世紀50年代則被稱為資訊處理。在20世紀60年代,其進入了學術界,那時,美國人将其稱為計算機科學,歐洲人則稱其為資訊學。到20世紀80年代,計算領域已經包含了一組具有複雜相關性的子領域,包括計算機科學、資訊學、計算科學、計算機工程、軟體工程、資訊系統、資訊技術等。到1990年,“計算”這個詞已經成為引用這些領域的标準術語。

《偉大的計算原理》一第1章 Great Principles of Computing 作為科學的計算

圖1.2 阿蘭·圖靈(alan turing,1912—1954)認為計算就是對數學函數的求解。1936年,他設計出一種後來被稱為圖靈機(turing machine)的抽象計算機器。這個機器由一條無限長的紙帶和一個可沿該紙帶左右移動的有限狀态控制器構成。紙帶上包含了無限個左右排列的方格,每個方格裡可以存放來自特定符号集合的一個符号。控制器每次可以向左或向右移動一個方格。在每一次移動前,控制器讀取目前方格記憶體儲的符号,并有可能在目前方格中寫入新的符号,然後向左或向右移動一個方格,進而進入一個新的控制狀态。圖靈展示了如何構造一個統一的計算機器對任何計算過程進行自動執行。圖靈認為,任何具有可計算性的函數都可以被一個具體的圖靈機自動計算。圖靈也發現存在一些不可計算的函數,例如:确定一個具體的圖靈機是否會停機或陷入無限循環(來源:wikipedia creative commons)

計算機科學作為一個正式的學術領域确立于1962年:這一年,美國的普渡和斯坦福兩所大學成立了計算機科學系。在當時,這個領域的上司者不僅需要時刻向人們解釋這個領域到底是做什麼的,還需要不斷抵禦來自保守評論家的苛責。這些評論家認為,排除電子工程和數學的内容,計算機科學并無實質性的新東西。在1967年,allen newell、alan perlis、herbert simon對這種觀點給出了如下回應:計算機科學是一門全方面研究“計算機周邊現象”的科學。但是,許多傳統的科學家則反對“這個領域是一門科學”的觀點。他們認為,真正的科學關注于那些在自然(自然過程)中發生的現象,而計算機僅僅是一種人造物,不屬于自然的範疇。諾貝爾經濟學獎得主simon強烈反對這種對于科學的“自然解釋”。為此,兩年後,simon出版了一本名為《the

sciences of the artif?icial》的書。在這本書中,simon指出:除了“以自然過程為研究對象”這條準則之外,經濟學和計算機科學符合科學的其他所有既有準則,是以,稱其為科學并無不妥。當然,為了差別于傳統的自然科學(natural science),可以将這類科學稱為人工或人造科學(artif?icial science)。

《偉大的計算原理》一第1章 Great Principles of Computing 作為科學的計算

圖1.3 在babbage嘗試構造一個可以實際運作的分析機的努力失敗之後的80年内,沒人再試圖去設計通用的計算機器。在20世紀30年代末,美、英兩國的軍方開始嘗試采用電子機器進行彈道計算和密碼破譯。1944年,美國軍方資助的eniac計算機開始正式運轉。這台計算機坐落在賓夕法尼亞大學。這個項目由john mauchly和j. presper eckert上司。eniac上的第一批程式員包括kay mcnulty、betty jennings、betty snyder、marlyn wescoff、fran bilas、ruth lichterman等人。這張圖展示了jennings(左)和bilas(右)正在操控eniac的主要制面闆。在那個時候,計算機指的是人,而計算就是這些人的專職工作;電子機器則被稱為自動或電子計算機。程式設計的主要活動是在不同的插座之間進行接線(來源:賓夕法尼亞大學)

計算的範型

1962年之後的30年中,傳統自然科學的研究者經常對“計算機科學”這個名字進行質疑。在計算機科學這個新興領域中,他們可以很輕易地看到工程範型(系統設計與實作)和數學範型(定理證明),但是卻很難看到太多的科學範型。此外,與simon的辯解相反,這些研究者認為科學是一種關于自然世界的方法,而計算機則更像是一種人工制品。

《偉大的計算原理》一第1章 Great Principles of Computing 作為科學的計算

 圖1.4 兩位先驅者john backus(1924—2007,左圖)和grace hopper(1902—1992,右圖)設計出了進階程式設計語言:通過編譯器,進階程式設計語言可以被自動轉換為機器代碼。1957年,backus上司的團隊開發出了fortran語言:一種面向數值計算的進階程式設計語言。1959年,hopper上司的團隊開發出了cobol語言:一種面向商業計算的進階程式設計語言。這兩種語言至今仍然被使用。這些發明使得類似eniac的接線式程式設計徹底失去了生存空間,并且極大地降低了計算領域的入門門檻。自此以後,人們已經發明了數千種的程式設計語言(來源:wikipedia creative commons)

這個領域的創立來自這三種不同的範型(工程範型、數學範型和科學範型)1。一些人認為計算是應用數學的一個分支,另一些人則認為計算是電子工程的一個分支,其他人則認為計算是面向計算的科學的一個分支。在第一個40年中,這個領域主要關注于工程:如何構造可靠的計算機及其網絡以及如何開發複雜的計算機軟體,吸引了幾乎每一個人的注意力。到20世紀80年代,這些工程問題基本上已經得到了有效的解決;同時,在計算機網絡、超級計算機、個人計算機的幫助下,計算開始向各個領域快速滲透。在20世紀80年代,計算機的能力已經變得異常強大,而那些具有遠見卓識的科學家開始意識到計算機可以用來解決科學和工程中的重大挑戰問題,并由此産生了“計算科學”的研究運動。許多國家的科學家共同參與到這一運動中,并最終使得美國國會在1991年通過了名為“高性能計算和通信”(high-performance

computing and communications,hpcc)的行動計劃,該計劃旨在探索采用計算方法解決科學和工程中的重大挑戰。

《偉大的計算原理》一第1章 Great Principles of Computing 作為科學的計算

圖1.5 allen newell(1927—1992,左圖)、alan perlis(1922—1990,中圖)、herb simon(1916—2001,右圖)認為計算是一種關于計算機周邊各種現象的科學。1967年,他們認為,計算機科學是研究計算相關事物的一種必備科學,涉及計算機器、軟體、智能、資訊、系統設計、圖形、解決實際問題的算法等衆多方面。simon則進一步認為,人工科學(即研究人造制品周邊現象的科學)如同傳統科學一樣,也是一種科學(來源:wikipedia creative commons)

目前,人們看起來已經形成了這樣一種共識:計算是一種典型的科學和工程;而且,無論是科學還是工程自身,都不能有效刻畫計算。那麼,如何刻畫計算,計算的範型是

什麼?

從一開始,這個領域的上司者就一直被範型問題所困擾。從發展曆程來看,目前已經出現了試圖統一各種不同視角的三次浪潮。第一次浪潮,由newell、perlis、simon三人(1967)上司,認為計算不同于所有其他科學領域,原因在于計算的研究對象是資訊處理過程。simon将計算稱為人工科學(1969),其背後所基于的一個共識性觀念是,計算不是一種自然過程。這一波浪潮的流行語是:“計算研究計算機周邊的各種現象。”

第二次浪潮關注于程式設計,即如何進行算法設計,進而産生有用的資訊處理過程。在20世紀70年代早期,兩位計算領域的先驅者edsger dijkstra和donald knuth就強烈主張将算法分析作為計算的統一範型。這一波浪潮的流行語是:“計算機科學就是程式設計。”這種觀點近來已經逐漸落沒,因為這個領域的發展已經遠遠超過程式設計的範疇,同時也因為公衆對于“程式員”這一概念的了解變得過于狹隘(僅僅是一個編寫程式源代碼的人)。

《偉大的計算原理》一第1章 Great Principles of Computing 作為科學的計算

圖1.6 donald knuth(1938—今,左圖)和edsger dijkstra(1930—2002,右圖)認為程式設計是計算的核心。1970年左右,他們認為算法的設計與分析過程應該是計算機科學的核心關注點。對他們而言,一個程式設計專家就是一個計算機科學家。不幸的是,這種重要的觀點在20世紀90年代後期不複存在,因為程式設計人員被官方定義為低層次的源代碼編寫者(來源:wikipedia

creative commons)

《偉大的計算原理》一第1章 Great Principles of Computing 作為科學的計算

圖1.7 計算機系統領域的先驅bruce

arden(1927—今,左圖),在cosers項目中形成了“計算不僅僅是程式設計”的觀點。在20世紀70年代末,他上司的團隊将計算領域定義為一個對“什麼可以被自動化”進行研究的領域。在當時,這種觀點非常迎合公衆對于機器人(如右圖中出現在電影《星球大戰》中的兩個機器人)的好感。但這種觀點并沒有生存太長時間,因為在短短幾年之後人們對科學的了解發生了重大的變化(來源:wikipedia creative commons)

第三次浪潮則源于由bruce arden(1983)所上司的項目:computer

science and engineering research study(cosers)。這是一個由美國國家科學基金在20世紀70年代資助的項目。該項目将計算定義為:對工程、科學和各種業務領域中的資訊處理過程的自動化。這一波浪潮的流行語是:“計算就是資訊處理過程的自動化。”雖然該項目的結題報告對很多深奧難懂的研究問題進行了淺顯易懂的解釋,但其核心觀點并沒有在大衆中得到廣泛傳播。

《偉大的計算原理》一第1章 Great Principles of Computing 作為科學的計算

圖1.8 tim berners-lee(1955—今)展示了一種不同于普遍将計算了解為“由一組機器構成的網絡”的視角。1989年,他發明了網際網路(world

wide web):在網際網路上,存儲于機器中的資訊之間互相連結,并且可以随着滑鼠的點選從資訊鍊的一端移動到另一端。他認為這種由資訊連結形成的網絡中蘊含了大量的新型計算行為,使得人們能夠為資訊賦予更多的含義(來源:wikipedia creative commons)

這三次浪潮所具有的一個共同特點是将計算機作為核心關注點。始于20世紀80年代的計算科學運動則不再具有這樣的特點:其認為,計算不僅僅是科學研究的工具,而更是一種進行科學思考和科學發現的嶄新方法。計算科學的擁護者将計算視為幫助他們了解資訊處理過程和算法控制能力的得力夥伴。

這種新視角的一個重要結果是:科學家開始意識到在自然界中也存在資訊處理過程,并且也可以采用由基于計算機的人工資訊處理所發展出來的方法對其進行研究。生物學是其中的一個典型代表:作為對認知科學家douglas hofstadter(1985)觀點的一種呼應,諾貝爾獎獲得者david

baltimore(2001)認為,生物學已經變為一種資訊科學。david bacon(2010)認為實體學也正在發生類似的變化:作為量子計算的支撐理論,量子力學也是一種資訊科學。erol gelenbe(2011)列舉出了一長串的科學領域,其主要研究對象都涉及自然界的資訊處理。計算機科學的方法同樣适用于自然界的資訊處理。這一結論進一步鞏固和強化了herb simon(1969)“計算機科學的确是科學”的觀點。

最近,paul rosenbloom(2012)注意到了另外兩點原因,使得“所有的計算都是人工過程”的觀點變得愈發陳舊。第一,許多科學家開始認同,人也是全球生态系統的一部分,是以,人工制品也如同河狸築造的水壩或螞蟻構造的巢穴一樣自然。第二,人類能夠在任意粒度層次上修改自然過程的能力,極大地模糊了自然和人工的邊界,例如幹細胞克隆器官、有機生長的納米機器以及轉基因農作物等。

《偉大的計算原理》一第1章 Great Principles of Computing 作為科學的計算

圖1.9 兩位諾貝爾獎獲得者,實體學家ken

wilson(1936—2013,左圖)和生物學家david baltimore(1938—今,右圖)站在了計算科學的前沿:他們認為計算是一種進行科學思考和科學發現的嶄新方法。20世紀80年代中期,wilson指出科學中的一些重大挑戰問題可以通過計算得到解決,并認為應當使用具有高度并行性的超級計算機來進行這些計算。20世紀90年代,baltimore指出,生物學已經變成對細胞和所有生命過程中所蘊涵的資訊處理過程進行研究的一門學科。計算機科學家一開始并不願意參與其中,但卻對計算科學表達了堅定的擁護,進而導緻了計算領域中的一場科學複興運動(來源:wikipedia creative commons)

計算的重要原理

對計算這一概念的了解的逐漸成熟,使得我們能不斷從新的視角去确定計算領域的内涵。直到20世紀90年代,計算領域中絕大多數的科學家對該領域的了解都會落實到其所包含的一組核心技術上,例如算法、資料結構、數字化方法、程式設計語言、作業系統、網絡、資料庫、圖形圖像、人工智能、軟體工程等。這是對計算領域的一種深刻的技術型解釋。本書對計算的了解則更加關注這些技術的能力和局限背後所隐藏的基本原理。

本書所給出的計算基本原理劃分為6類:通信(communication)、計算(computation)、協作(coordination)、記憶(存儲)(recollection)、評估(evaluation)、設計(design)(denning 2003,denning and martell 2004)2(見圖1.10)。這6類基本原理都關注如何通過操縱物質和能量來實作所期望的計算。表1.1對這6類基本原理分别進行了簡要描述,并給出了與之對應的篇章。

表1.1 計算的重要原理

類  别     關注點  示  例     核心章節

通信     資訊在不同位置之間的可靠傳輸   最小長度代碼,錯誤修複代碼,檔案壓縮,加密/解密 3,11

計算     可計算性     問題計算複雜性的分類,不可計算問題的特點  4,5,6

記憶     資訊的表示、存放與讀取 所有的存儲系統具有層級結構。沒有任何一個存儲系統能夠實作對不同存儲資訊的等時通路。局部性原理:所有的計算都會密集通路所依賴資料集中的一個子集 7,11

協作     有效地利用多個自主的計算實體   使得所有參與者具有相同知識的協定,能夠消除不确定性結果的協定,或同步協定。選擇不确定性原理   2,8,9

評估     度量系統是否表現出預期的計算行為  采用排隊網絡模型預測系統的吞吐量和響應時間。設計實驗來測試算法和系統  9,10

設計     通過特定結構的軟體系統實作可靠性  複雜系統可以被分解為一組互動的子產品和虛拟機。子產品之間可以形成層級結構  10

計算的内涵不僅僅是一種基本原理或是在此基礎上形成的一些核心技術。計算的内涵還和各種實踐領域緊密相關(見圖1.11)。除了計算基本原理的知識之外,計算領域的專業人員還需要具備4種核心的實踐能力:程式設計、系統思維、模組化以及計算思維。實踐能力是通過長期的經驗積累而形成一種技巧。實踐者的技巧可以被分為如下幾類:初學者(beginner)、進階初學者(advanced beginner)、初級資質者(competent)、熟練工(prof?icient)、專家(expert)。例如,一個入門級的程式員可能會主要關注文法和編譯問題以及bug的查找問題;一個專家級的程式員則能夠建構大型的軟體系統,解決複雜的系統問題,或對下級程式員進行指導。基本原理和實踐互相交織在一起。人們通過展現出高超技巧的行動将基本原理應用于實踐中,而新的基本原理又會從大量的實踐中逐漸浮現出來。

《偉大的計算原理》一第1章 Great Principles of Computing 作為科學的計算

圖1.10 每一類基本原理反映了對計算的一種視角,即觀察計算領域知識空間的一扇視窗。(對這6類基本原理的排列順序并不反映它們之間的相對重要性。)同時,這6類基本原理也不是完全不相交的。例如,網際網路既可以從通信系統的角度了解,也可以從協作系統或記憶系統的角度了解。大多數計算技術都涉及對這6類基本原理的不同組合:每一類基本原理在這種組合中具有不同的權重,但每一類基本原理都确實存在。這些基本原理類别表現了人們對計算的某種認知視角。一些人認為計算僅僅就是計算,其他人則認為計算是資料、網絡化的協作或者自動化系統。這種劃分架構能夠在某種程度上擴充人們對計算本質的認識

《偉大的計算原理》一第1章 Great Principles of Computing 作為科學的計算

圖1.11 計算領域的發展建立在基本原理和實踐兩者的共同作用下。核心技術是被實踐者在各種計算領域中廣泛應用的工具。本書主要關注基本原理及其在若幹關鍵領域的使用,而不涉及核心技術及其在實踐中的應用。基本原理或者是一種機理——定律和重複出現的事物,或者是一種設計智慧——通過不斷的積累形成的關于方法可行性的知識,進而使得構造可信、可靠、可用、安全的計算系統成為可能

計算的技術人員及其客戶形成的社群稱為計算領域。現實中存在數量衆多的計算領域。acm(the association

for computing machinery)給出了其成員所關注的至少42種專業領域(denning 2001,2011),而更多的計算領域則被冠名以“計算應用”(computing applications)。下一章将簡要介紹目前受到高度關注的4個計算領域:資訊安全、人工智能、雲計算以及大資料。

大多數計算領域與計算之外的其他領域相關。在一篇關于計算與實體學、生命科學、社會學三個科學領域互相關系的論文中,paul rosenbloom發現了兩種類型的關系:實作(implementation)和影響(influence)(rosenbloom 2004,denning和rosenbloom 2009,rosenbloom 2012)。實作指一個領域中的事物被用于構造另一個領域中的事物。影響指一個領域中的事物影響了另一個領域中事物的行為。這兩種關系可以是單向或雙向的。rosenbloom通過一張表(表1.2)來說明計算與實體學、生命科學、社會學以及自身之間可能存在的豐富關系。其中計算與其自身的關系是因為通過不同計算領域之間的互動,計算會不斷地實作或影響自身。

表1.2 計算與不同領域之間的互動示例

      實體學  社會學  生命科學     計  算

計算被實作  機械、光、電子、量子、化學過程     機械機器人、人類的認知、具有輸入和輸出的遊戲 基因、神經、免疫系統、dna轉錄、演化計算  編譯器、作業系統、模拟器、抽象、過程

計算實作     模組化、模拟、資料庫、資料系統、量子密碼學、3d列印     人工智能、認知模組化、自主系統   人工生命、仿生、系統生物學    體系結構、語言

計算被影響  傳感器、掃描器、計算機視覺、文本識别  學習、程式設計、使用者模組化、授權、語音了解  眼睛、手勢、表達、運動追蹤、生物傳感器      網絡、資訊保護與安全、并行計算

計算影響     運動、制造、操縱、開環控制      螢幕、列印機、圖像、語音生成、網絡科學     生物效應、觸覺、感覺沉浸  分布式系統、網格

雙向影響     機器人、閉環控制    人機互動、遊戲 腦-機接口   

計算在科學中的位置

由于計算對科學存在廣泛的影響,且所有其他科學領域都不直接與資訊相關,是以rosenbloom得出的結論是計算可以被認為是一種全新的科學領域。

計算領域對于資訊處理的獨特性是什麼?資訊在傳統上指的是那些一旦被傳播就會産生知識增加的事實。資訊是一個古老的概念,哲學、數學、商業、人文學科、科學已經對資訊進行了幾個世紀的研究。科學關注于發現事實,通過事實形成模型,使用模型做出預測,并将有效的預測模型轉變為技術。科學家則将所有學習到的東西組織成“科學知識體系”。顯然,資訊在各種科學領域中都具有非常重要的角色。

與其他科學領域與資訊的關系相比,計算領域與資訊的關系展現出兩個顯著不同的特點。首先,計算領域強調對資訊的變換,而不僅僅是對資訊的發現、分類、存儲或通信。算法不僅僅讀取具有特定結構的資訊,還會進一步修改資訊的結構。進一步而言,人類也在不斷地修改資訊的結構(例如在網際網路上),隻不過我們還不知道人類對資訊進行變換的計算模型是什麼。純粹的解析方法并不能幫助我們了解資訊結構發生變化的動态機理。實驗方法對于這一問題也缺乏有效的解決方案。

第二,計算不僅僅是描述性的,而更是生成式的。算法不僅僅描述了解決一個問題的方法,也會使得一台計算機去真正地解決這個問題。計算科學是唯一的對資訊與活動之間的因果關系如此強調的一個領域。其他科學領域對資訊則沒有這樣的視角。計算及其結果對各個科學領域産生了深遠的影響。計算絕不僅僅是實體學、生命科學或社會學的一個子集。計算有資格成為一個獨立的科學領域。

本書的關注點

計算已經得到了長足的發展,覆寫了非常豐富的研究内容,是以不可能在一本書中對計算進行一個完整的綜述。有三本書可以被認為是“計算機科學百科全書”(ralston 2003,abrams 2011,henderson 2008),這三本書的厚度分别是2030頁、770頁和580頁,這些書通過一系列的文章來對計算進行綜述。在本書中,我們不試圖對計算的研究内容給出一個全面的覆寫;相反,我們隻會給出一組具有代表性的關于計算的重要原理。

這些代表性的重要原理被劃分為9章:資訊、機器、程式設計、計算、存儲、并行、排隊、設計以及網絡(第3~11章)。前文所提及的計算的6個領域,每一個領域至少對應一章(見表1.1)。我們期望本書的内容能夠提供一種具有一定廣度和深度的系統性視角,去了解計算所包含的不同内容。

第1章主要介紹計算的發展曆史和基本結構,以及計算與其他領域的關系。第2章主要介紹計算的不同子領域如何從計算的基本原理中汲取知識,資訊安全、人工智能、雲計算以及大資料是典型代表。

第3章關注資訊的本質,在資訊之上計算機所能展現出的能力,以及計算機如何向其使用者提供有意義的資訊。第4章探讨計算機的構造技術,使得編寫的程式能夠控制電子線路去執行人類期望的計算。第5章關注程式設計,針對特定的問題設計相應的計算解決方案的技巧,以及如何将程式轉換為等價的機器代碼。

第6章關注計算自身:一些問題能被快速算法求解,一些問題能被速度較慢的算法求解,而還有一些問題根本無法被計算機求解。第7章關注存儲,即如何實作有效地資訊存儲與讀取。

第8章探讨并行:通過一組互相協作的計算機并行工作,提高問題求解的速度。第9章關注隊列:在伺服器叢集為大規模并發請求提供服務時,一種預測系統吞吐量和響應時間的方法。

第10章關注設計:如何規劃群組織可靠、可用、安全的計算系統。第11章以網際網路為執行個體展示如何利用各種基本原理構造一個可靠的大規模資料通信網絡。

本書的最後附上了參考文獻目錄,其中包含了一些給我們帶來啟發的代表性文獻(不是對曆史文獻的完整性總結)。如果你在本書中發現了一個人名,那麼你會在參考文獻目錄中至少發現一篇以此人為作者的文獻。

總結

計算正在變得愈發成熟,展示出其在科學、工程和數學等方面的優良特性。計算的科學本質對于該領域的發展具有至關重要的作用:很多系統過于複雜以至于隻能借助于試驗方法對其進行研究。計算的覆寫範圍相當廣泛,包括各種自然或人工的資訊處理過程。

本書揭示了所有計算過程所基于的一組基本原理。這些基本原理為衆多計算領域以及實體學、生命科學以及社會學中的衆多子領域提供了理論基礎。

計算不是實體學、生命科學或社會學的一個子集。這些科學領域并不關注資訊處理與變換的本質是什麼。這種關注在所有其他科學領域中都不具有基礎性地位。是以,計算有資格成為一個獨立且重要的科學領域。

緻謝

本章改編自“great principles of computing”(peter j. denning,american scientist 98(sep–oct 2010),369–372)。重新發表在《best

writings on mathematics 2010》(mircea pitici,princeton university press(2011))。本章内容的使用得到了《美國科學家》雜志的授權。

繼續閱讀