科學家的挑戰:十年前寫的代碼現在還能否運行
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被認為就是不再變化的高級編程語言。