閱讀565 返回首頁    go 阿裏雲 go 技術社區[雲棲]


《偉大的計算原理》一計算的範型

本節書摘來華章計算機《偉大的計算原理》一書中的第1章 ,[美]彼得 J. 丹寧(Peter J. Denning)
克雷格 H. 馬特爾(Craig H. Martell)著 羅英偉 高良才 張 偉 熊瑞勤 譯 更多章節內容可以訪問雲棲社區“華章計算機”公眾號查看。

計算的範型

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

image


圖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)的行動計劃,該計劃旨在探索采用計算方法解決科學和工程中的重大挑戰。

image


圖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就強烈主張將算法分析作為計算的統一範型。這一波浪潮的流行語是:“計算機科學就是程序設計。”這種觀點近來已經逐漸落沒,因為這個領域的發展已經遠遠超過程序設計的範疇,同時也因為公眾對於“程序員”這一概念的理解變得過於狹隘(僅僅是一個編寫程序源代碼的人)。

image


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

image


圖1.7 計算機係統領域的先驅Bruce Arden(1927—今,左圖),在COSERS項目中形成了“計算不僅僅是程序設計”的觀點。在20世紀70年代末,他領導的團隊將計算領域定義為一個對“什麼可以被自動化”進行研究的領域。在當時,這種觀點非常迎合公眾對於機器人(如右圖中出現在電影《星球大戰》中的兩個機器人)的好感。但這種觀點並沒有生存太長時間,因為在短短幾年之後人們對科學的理解發生了重大的變化(來源:Wikipedia Creative Commons)
第三次浪潮則源於由Bruce Arden(1983)所領導的項目:Computer Science and Engineering Research Study(COSERS)。這是一個由美國國家科學基金在20世紀70年代資助的項目。該項目將計算定義為:對工程、科學和各種業務領域中的信息處理過程的自動化。這一波浪潮的流行語是:“計算就是信息處理過程的自動化。”雖然該項目的結題報告對很多深奧難懂的研究問題進行了淺顯易懂的解釋,但其核心觀點並沒有在大眾中得到廣泛傳播。

image


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

image


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

最後更新:2017-06-26 11:32:15

  上一篇:go  《偉大的計算原理》一計算的重要原理
  下一篇:go  CV界大神、亞馬遜最高級別華人科學家任小楓加盟阿裏