2010年初,哈佛經濟學家萊因?哈特(Carmen Reinhart)和肯尼斯?羅格夫(Kenneth Rogoff)發表了一篇涵蓋多個國家經濟數據的分析文章,并得出結論:當一個國家的債務水平超過該國國民生產總值的90%時,這個國家的經濟增長即受到威脅。他們認為,在如此之高的債務水平下,預計增長將為負增長。
這篇分析文章是在2008年經濟危機爆發后不久發表的,因此與當時的政策制定者有很大的關系。當時很多政策制定者都為了刺激國民經濟而鼓勵高額債務支出。與此同時,保守派政客,比如時任歐盟委員的奧利?雷恩(Olli Rehn)以及美國國會議員保羅?瑞安(Paul Ryan),根據哈特和羅格夫的研究結果呼吁采取財政緊縮政策。
3年后,一位來自馬薩諸塞大學的研究生托馬斯?赫恩登(Thomas Herndon)發現,當年哈特和羅格夫計算時所用的Excel電子數據表有錯誤。這個錯誤的影響是巨大的:赫恩登使用正確的電子數據表重新做的分析表明,債務水平超過國民生產總值90%時,平均經濟增長為2.2%,而不是哈特和羅格夫當年所發現的-0.1%。
赫恩登可以輕而易舉地測試當年哈佛經濟學家得出的結論,因為他們當初所使用的軟件——微軟Excel——現如今依然使用方便。但是早期那些可以使用但目前難以繼續使用的軟件所得出的分析結論怎么辦呢?
或許你覺得解決辦法沒什么難度:把相關軟件保存下來供未來的研究人員使用即可。畢竟軟件只是一堆文件,而這些文件又能以數字格式保存在硬盤或磁帶上。對于某些軟件來說,非常重要的源代碼甚至被打印在紙上,以防其存儲的數字媒介失效。
這是保存舊程序的常規方式,即使是對幾十年前的舊軟件也是如此。比如,你可以上網搜索到20世紀60年代將宇航員送上月球的阿波羅導航計算機的完整程序代碼列表。這是2016年從紙上復制轉錄后上傳到GitHub的。
盡管少數核心程序員喜歡研讀老式源代碼,但是大多數人對此并不感興趣,他們只是想使用軟件。但是讓歷史久遠的軟件得以運行十分困難,因為大多數舊代碼都需要老式計算機以及老式操作系統才能運行。
如果你想再玩一次年輕時玩過的計算機游戲,可能也會面臨類似的困境。而舊程序無法運行會帶來更加嚴重的影響,尤其是對科學技術研究領域。
與經濟學家一樣,在日常工作中,物理學家、化學家、生物學家以及工程師等其他很多研究人員都使用軟件來分析切割數據和顯示分析結果。研究人員通過計算機模型來模擬現象,而計算機模型是通過一系列編程語言寫成的,同時使用了多種軟件數據庫和參考數據集。這些研究及其依賴的軟件對于新研究成果的發現和發表都至關重要。
想象你自己是一名研究者,此時你想檢查另一名研究者25年前進行的運算。你能否獲取并使用相關軟件?也許相關軟件的開發公司都已經不在了。即便該軟件現在仍有新的版本,它能接受原始數據格式嗎?計算過程與上一代計算機是否完全等同?例如舍入誤差?可能不是。
研究者對計算機日益依賴,運行老式軟件的困難削弱了研究者對已發表研究結果的檢測能力。因此,舊軟件的問題腐蝕掉了科學的基石——再現性——的前提。
這還會影響到法律訴訟。假設,工程師根據計算得出某建筑物設計得十分堅固,但該建筑物的屋頂還是塌了。這是工程師出了錯,還是使用的計算軟件出了錯?如果多年后相關軟件不能再使用,就很難說清楚了。
因此我和卡耐基?梅隆大學(位于匹茲堡)的同事們一直在研究一種無論現在還是將來都能方便運行的程序存檔方式。大部分的編碼工作由我的同事——計算機科學家本杰明?吉爾伯特(Benjiamin Gilbert)和簡?哈克斯(Jan Harkes)完成。參與合作的還有軟件檔案管理員丹尼爾?瑞安(Daniel Ryan)、圖書管理員格洛里安娜?圣?克萊爾(Gloriana St. Clair)、埃里克?林克(Erike Linke)以及基思?韋伯斯特(Keith Webster),他們都對如何妥善保存這份現代文化有濃厚的興趣。
這個項目更多地涉及檔案保存,并不是主流計算機科學項目,我們獲得的資金來源不是政府計算機科學基金部門,而是艾爾弗?P?斯隆基金會(Alfred P.Sloan Foundation)以及博物館和圖書服務協會(Institute for Museum and Library Services)。在資金支持下,我們展示了如何重建年代已久的運算環境并將其發布到網上,任何計算機用戶只要一點鼠標,就可以即刻復原過去的運算環境。
我們創建的系統叫做Olive,該名字由開放虛擬執行圖像庫(Open Library of Images for Virtualized Execution)的英文首字母組成。Olive通過互聯網提供一種與早期計算機、操作系統和應用運行完全相同的體驗。安裝Olive后,便可以像運行新軟件一樣運行舊軟件。Olive就像一臺針對軟件內容的時光機。
若要理解Olive如何還原早期運算環境,你必須了解幾個軟件抽象層。最底層與目前多數計算機技術所使用的基礎相同:使用1個或多個x86微處理器的標準臺式電腦或筆記本。我們在這臺電腦上運行Linux操作系統,構成Olive的第二個抽象層。
操作系統的上層是我們實驗室開發的軟件VMNetX,意指虛擬機網絡執行(Virtual Machine Network Execution)。虛擬機是在不同類型計算機上通過運行軟件來模擬一類特定計算機的運算環境。VMNetX的特別之處在于它允許將虛擬機存儲在中心服務器上,按照遠程系統要求來運行虛擬機。這種設置的優勢在于運行虛擬機之前,計算機不需要從服務器上下載虛擬機的全部磁盤和內存狀態。再上一層的虛擬機監視程序(也稱為管理層)會按照需要成批恢復虛擬機硬盤及內存中的信息,可保持幾臺虛擬機同時運行。
每個虛擬機分別運行一個硬件模擬器,亦即Olive的再上一抽象層。模擬器展現一臺現已淘汰的老式計算機的虛擬環境,比如配備20世紀90年代摩托羅拉68040 CPU的老式麥金塔Quadra計算機。(如果你存檔的軟件是運行在x86計算機上,那么模擬器層可以省略。)
再往上一層是存檔軟件工作所需的舊操作系統。舊操作系統可以接入虛擬硬盤,由虛擬硬盤模擬真實硬盤存儲,為更高的軟件抽象層提供類似普通文件系統的環境。
舊操作系統再上一層為存檔程序本身。存檔程序可以是最高層,也可再多加一層,由你要存檔程序運行所必須的數據等組成。
Olive的上面幾層依據不同的存檔應用而定,存儲于中央服務器中。Olive系統的下面幾層以Olive客戶端軟件包的形式安裝于使用者的電腦中。啟動一個存檔應用時,Olive客戶端將按需從中央服務器獲取相關上層的部分內容。
━━━━
這就是Olive的組成結構。但是Olive都可以做什么呢?目前,Olive由17種不同的虛擬機組成,可以運行多種操作系統和應用。這些配置選擇是出于好奇心、可行性以及個人喜好。比如,我們團隊的一個成員依然記得自己在20世紀90年代初期在學校玩《俄勒岡小道》游戲的場景。于是我們拿到了這款游戲一個舊的Mac版本并通過Olive重新運行。我們成功運行這款游戲的消息不脛而走,很多人紛紛找到我們詢問是否可以“復活”他們曾經最愛的軟件。
我們復原年代最久的應用是《逃出神秘房間》,這款圖形游戲于20世紀80年代初開始在蘋果II計算機上運行。另一個年代久遠的程序是NCSA Mosaic,上了年紀的人或許還記得就是這款瀏覽器引領他們進入萬維網世界。
Olive提供運行蘋果麥金塔7.5操作系統的1993年Mosaic版本。這套操作系統運行于摩托羅拉68040 CPU模擬器上,而這款處理器是由運行Linux系統的x86計算機中的軟件創造的。盡管是虛擬的,但性能還是不錯的,畢竟現代計算機要比原始的蘋果硬件快得多。
把Olive重建的Mosaic瀏覽器套用在當代網絡中很有啟發性:Mosaic早于JavaScript、HTTP1.1、層疊樣式表(CCS)和HTML5等網絡技術,因此不可能呈現多數現代網站。但是追蹤很早以前建立的網站很有樂趣,它們看起來還不錯。
Olive還有什么功能呢?或許你會好奇英特爾引進奔騰處理器之后,商業上所使用的工具都有哪些。這一點Olive可以幫你,比如讓你體驗1994年開發的微軟Office 4.3(幸好這個軟件開發得比討厭的自動辦公助理軟件Clippy早)。
或許你只是想在一個懷舊的夜晚,玩一下DOS版的《毀滅戰士》游戲,或者了解一下為什么這款第一人稱射擊游戲在20世紀90年代初如此盛行。或許你想整理一下1997年的稅務信息,卻在閣樓里找不到存儲當年特波稅務軟件(Turbo Tax)的硬盤。不用擔心,Olive都有。
在較為嚴肅的軟件方面,Olive涵蓋了Chaste 3.1。這款軟件的名稱是癌癥(Cancer)、心臟(Heart)和軟組織環境(Soft Tissue Environment)的英文首字母組合。這是一款由牛津大學開發的仿真程序包,用于解決生物學和生理學領域需要計算的問題。Chaste 3.1版本出現在2013年3月發表的一篇研究論文中。論文發表后不到兩年,當時新版Linux便不再編譯Chaste 3.1的源代碼了。這是Olive旨在克服科學再現性的標志性挑戰。
為確保Chaste 3.1正常運行,Olive提供了當年的Linux環境。Olive復活的Chaste還包括2013年發表論文中的實例數據。利用這些數據再次運行Chaste,可以生成某些肌肉功能的可視化結果。對于未來想要研究這些可視化結果或改進已發表軟件的生理學家來說,他們可以利用Olive在虛擬機上編輯并運行代碼。
由于軟件許可限制,現在Olive僅供少部分用戶使用。Olive收集的早期軟件目前只能限于參與這個項目的人員使用。相關公司需要授權許可,才能讓Olive面向范圍更廣的用戶。
不只我們一個團隊在尋求還原舊軟件的方法。比如,互聯網檔案館(Internet Archive)就通過運行在用戶瀏覽器中的MS-DOS仿真模擬器來保存成千上萬個舊程序。耶魯大學正在進行的項目EaaSI(Emulation as a Service Infrastructure,指“模擬器即服務基礎設施”)就致力于模擬過去成千上萬的軟件環境。參加“軟件保護網絡”的學者和圖書管理員們一直在協調這項工作以及類似研究。他們還在努力解決以這種方法恢復舊軟件運行所帶來的版權問題。
Olive系統已取得很大進展,但遠未達到完善的程度。除了軟件許可限制問題以外,還存在各種各樣的技術障礙。
其中一大難題就是如何導入新數據以供舊應用進行處理。目前,新數據依靠人工導入,不僅任務繁重而且容易出錯,也限制了可供分析的數據量。即便增加新的數據導入機制,導入的數據量還是受虛擬機的虛擬硬盤容量限制。這可能看起來問題不大,但是你要知道,有些舊式計算機文件系統的數據存儲容量出奇地小。
另外一個難題是圖形處理器(GPU)仿真。長久以來,科學界借助圖形處理器的并行處理能力來提高各種運算的速度。為了把利用圖形處理器的可執行軟件存檔,Olive需要再造這些芯片的虛擬版本。這是個十分棘手的任務。因為圖形處理器的接口(輸入和輸出內容)并無標準。
很顯然,在宣布可執行內容的存檔問題已經解決之前,還有很多工作要做。但Olive已經開了一個好頭,要確保直到未來也能開發、測試和使用過去的軟件,正需要我們創造的這類系統。
-
微軟
+關注
關注
4文章
6594瀏覽量
104052 -
計算機科學
+關注
關注
1文章
144瀏覽量
11359
原文標題:拯救被遺忘的軟件
文章出處:【微信號:IEEE_China,微信公眾號:IEEE電氣電子工程師】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論