計算機在做些什么:建模、連接、交互利用
編者按:在計算機領域,每隔30年,就會卷起一場計算運用新浪潮。上世紀50年代,人們為物質世界建模;80年代,人們設法利用計算機增強的彼此的聯系;在新世紀的2010年,計算應用翻開了與物質世界交互利用的新篇章。未來的計算機科學發展將為我們帶來什么?它又需要什么樣的設備、方法和技術的支持?看圖靈獎獲得者Butler Lampson對這些問題的思考。
本文譯自Butler Lampson在紀念圖靈誕辰100周年大會的發言稿
“What Computers Do: Model, Connect, and Engage”
譯者:任艷
1950年左右,計算機最初用來對事物“建模”或者模擬事物。無論對象是核武器還是工資單,方法都是一樣:創建一個和目標對象在某些重要方面相似的電腦系統,然后觀察這個系統,根據對象的行為作出推斷。這樣做的核心概念是抽象:這里有一個理想的系統,常常由方程組來定義,它既像是目標系統,又像電腦模型。建模取得了巨大的成功,現在它已經用來理解,甚至常常用以控制物質和概念上的系統,比如銀河系、蛋白質、目錄清單、飛行中的飛機等系統,而且建模才剛剛開始被利用。
模型可以很簡單,也可以非常復雜,可能很粗糙,也可能要求非常詳細,所以就算非常小,它們也能夠配合可利用的硬件容量。和書信、電話還有面談相比,利用早期計算機來“聯系”人們,要么無法實現,要么費用昂貴。但是在1980年左右,摩爾定律在數字硬件方面的進步讓計算機變得經濟實用,可用于文字處理、電子郵件、移動手機、網絡、搜索、音樂、社交網絡、電子圖書、視頻等領域。很多這樣的通訊都是實時的,但更多涉及到信息存儲,數量常常達到許多PB (petabyte)。
所以建模和連接都有些過時了——它們看似已經沒有發展空間了。但其實并非如此。物質世界和虛擬世界都極為復雜,我們現在有很大的契機做更精確的建模:化學反應、機翼、紙尿褲、經濟以及社交網絡都還遠遠未被充分理解。遠程呈現仍然沒有面對面交談的效果好;口語的實時翻譯還比較粗糙;機器很難明白用戶真正想搜索的是什么……所以建模和連接仍然還有很多創新的機會,特別是在教育領域,因為計算機能為老師們提供功能強大的工具。
然而,我認為,在未來的30年中,最激動人心的計算應用莫過于與物質世界不尋常的交互利用了。換句話說,計算機將會變得更形象具體。如今這一應用還處于萌芽階段:人們遠程操控的外科手術機器人和飛機、自動吸塵器、車輛巡航控制、還有針對交通數據開發的基于手機的傳感器網絡等。幾年后,我們也許開發出自動駕駛的汽車、人工眼睛和耳朵、在家里和人體內放置的健康傳感器、以及高效的自動化私人助理等。我很難記住人們的名字和容貌,所以我個人的夢想(比擁有一輛自動駕駛的汽車更容易)就是有一臺微型照相機,可以別在我的襯衫上輕輕提醒我,“這是約翰∙史密斯,你去年在洛杉磯見過他。”除了治病救命,這些系統還能帶來巨大的經濟效應。自動駕駛的汽車會讓現存的道路系統更高效,同時還把駕駛者解放出來,去做更多有用或者愉快的事情,而且節約了能源。
當一個計算應用可能實現時,什么是決定性的因素呢?通常在于基礎硬件的提高,根據摩爾定律,硬件性能每18個月提升一倍。在20世紀60年代,“所見即所得”的文字處理器還沒有開發出來,因為那時的機器運行速度太慢,價格太高。***臺被公認為現代個人計算機的機器是1973年研發的Xerox Alto,它可以完成不錯的文字處理或者電子表格,但是它太小太慢,不能處理圖片、視頻,或者存儲音樂、圖書。交互利用需要場景、語音識別、世界建模、規劃、大規模的數據處理、以及很多工作,這些技術才剛開始在合理的成本下變得可能。現在還不清楚如何比較人腦和電腦的容量,但大腦的1015次神經鍵(連接)和5 毫秒的循環時間能處理每秒2×1017次神經鍵事件,而一臺2GHz內存、8核、64位處理器的電腦能達到每秒1012 比特的處理速度。根據摩爾定律,這些數據還需要27年的時間才能對等,但是一只老鼠只有1012 次神經鍵,那么也許在12年內我們可以研發一只數字鼠(但是它可比一只真正的老鼠消耗更多的能量)。
當然硬件只是一方面,軟件可以讓電腦做任何事,而算法(讓每次的機器工作周期完成更多有用的工作)和抽象(用以掌控復雜性)又是軟件的智力基礎。要從外部衡量一臺電腦或通訊系統的性能,我們會看它的帶寬(每單位時間完成的工作)、延時(完成一件任務的時間)以及可利用性(及時完成工作的概率)。從內部看,我們衡量復雜性,雖然不太精確。它涉及到組成部分的多少、各部分間連接的多少和復雜程度,還有利用少數的外部連接將組件編為單個部分的完善程度。
我們有許多建立系統的方法,但大多數都可歸到三類:近似(Approximate),增量(Increment),分治(Divide and conquer)——縮寫為AID。
● 得出一個近似值往往是容易踏出的***步,而且也經常能夠滿足需求。更重要的是,很多系統沒有正確的答案,或者時效性和靈活性比正確性更重要:網絡數據包傳輸、搜索引擎、社交網絡、甚至零售網站。比起傳統和主要的計算,這些系統和飛行控制、統計、文字處理以及電子郵件系統有著本質的不同。
● 當情況變化時,比起重新抓取信息,重新計算,通過增量調整狀態是加快系統速度的***方法(缺乏一個更好的算法)。比如,各種形式的緩存:寫時拷貝(Copy on write)、負載平衡(load balancing)、動態擴容(dynamic scale out)、即時編譯(just in time compilation)。在開發中,***是通過增量來改變和測試一個功能系統。設備驅動、(應用程序)、瀏覽器插件以及JavaScript這些組件增量式地擴展了平臺,而且即插即用、熱調接等技術也擴展了硬件。
● 分治是***的單一原則:將一個大問題拆成很多小部分,例如,遞歸、文件或DNS的路徑名稱、記錄前次更新失敗的日志、硬盤的分區、復制等。現代系統分層明確,它們有由操作系統等大組件、數據庫、瀏覽器或視覺系統(如Kinect)構成。
對于交互利用來說,算法和抽象就不夠了。概率也是根本,因為機器對于物質世界的建模必然是不確定的。我們才剛剛開始學習寫程序去處理這種不確定性。他們利用很多方法在隨機的變量中合并連接模型,包括統計學、貝葉斯推斷和機器學習技術。這些變量有的可見,有的隱藏。人們利用可見的數據學習模型的參數,然后推斷隱藏的變量,例如,通過觀察如相機拍攝的圖片數據,來推斷道路上車輛的位置。
關于交互利用的一些應用對安全性至關重要,如駕駛汽車或者做外科手術,相比典型的計算機系統,這些應用需要更安全可靠。有一些方法可以構建可靠的系統:為想要的行為撰寫細致的規范說明;給出或多或少的形式證明他們的代碼確實落實了那些說明;利用復制狀態的機器來保證系統即使在某些組件停止工作的情況下也能運作。如今,這些方法僅僅適用于相對簡單的系統。如何才能擴容?怎樣設計系統才能盡量減少安全性瓶頸,從而提高可靠性?關于這些問題我們還要不斷學習。
對于用戶來說,交互利用可以變得非常重要,而且當他們想要得到這種價值的時候,需要應對許多困難,如人造眼之于盲人。其他的應用就是隨處可見的計算,雖然有用,但價值有限,如一個可以告訴你哪個朋友在附近的系統。這些系統必須要構建得很好,才能讓其有限的價值多過使用它們的爭論。許多這樣的系統都失敗了,因為沒能滿足用戶的需求。
未來幾十年的計算系統將擴大現有已成功的應用領域:為世界建模,聯系人們以及利用新的領域從而讓計算機與物質世界進行不尋常地交互利用。對于用戶而言,這些系統將繼續成為豐富的價值源泉,而這里的用戶幾乎會包括世界上的每個人;對于系統的創建者而言,這些系統無論在智力上還是在實踐上都將成為激動人心的問題源泉。
作者簡介:Butler Lampson,知名計算機科學家,1992年圖靈獎獲得者。現任微軟技術院士(Technical Fellow)。他是Xerox PARC的創始人之一,參與設計了SDS 940分時系統、Alto個人分布式計算系統、Xerox 9700激光打印機、兩階段提交協議、Autonet局域網、網絡安全的SPKI系統、微軟公司臺式計算機軟件、微軟公司的Palladium高保證堆棧存儲器以及多種編程語言。他從事的工作內容包括計算機體系結構、局域網、光柵打印機、頁面描述語言、操作系統、遠程程序通話、編程語言及其語義、大規模編程、容錯計算、事務處理、計算機安全、所見即所得編輯程序以及臺式計算機等。曾獲1984年美國計算機協會軟件系統獎,1996年IEEE計算機先驅獎,2001年獲得馮·諾依曼勛章,2004年國家工程院的德雷珀獎等眾多表彰與榮譽。
【編輯推薦】