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