科學家的挑戰:十年前寫的代碼現在還能否運行

2019 年,法國國家信息與自動化研究所(INRIA)的 Nicolas Rougier 和國家科學研究中心(CNRS)的 Konrad Hinsen 發起了一個項目:Ten Years Reproducibility Challenge,邀請科學家重新運行十年前或更早時間寫的代碼。有 35 名科學家參與了挑戰,結果陸續發表在《ReScience C》期刊上

科學家的挑戰:十年前寫的代碼現在還能否運行

科學家使用的語言從 C 和 R 到 Mathematica 和 Pascal,還有人重復的不是代碼而是分子模型,編碼在 Systems Biology Markup Language (SBML)中。參與者意識到,曾經他們以為能牢牢記住的東西其實一個月內就會開始遺忘,要讓代碼能重復運行他們需要記錄相關的信息,比如使用的參數值。Rougier 本人再現的代碼需要軟盤和 Apple II 電腦,電腦不是問題,他的辦公室里就有一台。意大利科學家 Sabino Maggi 在 1995 年使用 Fortran 語言建模了超導裝置約瑟夫遜結,用微軟的 VB 處理結果。Fortran 語言幾十年來基本沒變,編譯代碼沒有遇到問題。問題是 VB。VB 早就死亡了,它就被 Visual Basic.NET 取代了,兩者之間的共同之處就是它們的名字。為了運行代碼,他在 Mac 上創建了虛擬環境,加載了  Microsoft DOS 6.22 和 Windows 3.11,以及從網上下載的 VB,他承認安裝私有軟件可能存在合法性問題,表示當年他寫代碼的是時候有合法授權。另一個問題是他不記得 VB 的版本了。反直覺的一個現象是參與者發現舊的語言更容易再現,原因是新語言 API 和庫的變化可能會導致舊代碼不能正常運行,但舊的語言已經停止變化,因此幾十年都能保持一致。剛剛停止支持 Python 2.7 被認為就是不再變化的高級編程語言。

來源:cnBeta