《偉大的計算原理》一第1章
本節書摘來華章計算機《偉大的計算原理》一書中的第1章 ,[美]彼得 J. 丹寧(Peter J. Denning)
克雷格 H. 馬特爾(Craig H. Martell)著 羅英偉 高良才 張 偉 熊瑞勤 譯 更多章節內容可以訪問雲棲社區“華章計算機”公眾號查看。
第1章
Great Principles of Computing
作為科學的計算
計算機科學研究計算機周邊的各種現象。
——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.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.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.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的主控製麵板。在那個時候,計算機指的是人,而計算就是這些人的專職工作;電子機器則被稱為自動或電子計算機。程序設計的主要活動是在不同的插座之間進行接線(來源:賓夕法尼亞大學)
最後更新:2017-06-26 11:32:02