亚洲国产欧美一区二区三区丁香婷,国产精品高潮呻吟久久av免费看 ,欧美无遮挡一区二区三区国产对白,日本一区二区免费不卡中文字幕

你上個(gè)世紀(jì)寫的代碼現(xiàn)在還能用嗎?挑戰(zhàn)者:我需要一臺(tái)讀帶機(jī)

而且,隨著編程語(yǔ)言、計(jì)算環(huán)境的演化,現(xiàn)在還能運(yùn)行的代碼過(guò)段時(shí)間可能就不行了。年代寫的代碼有條不紊地存到了磁帶里,但現(xiàn)在,他已經(jīng)沒(méi)有能讀取磁帶的工具了。違反直覺(jué)的是,很多參賽者發(fā)現(xiàn),用一些比較古老的語(yǔ)言寫的代碼反而是最容易復(fù)現(xiàn)的。...

找不到代碼,硬件過(guò)時(shí),文檔丟失……幾十年前的代碼不容易重現(xiàn)。

你上世紀(jì)寫的代碼現(xiàn)在還work嗎?挑戰(zhàn)者:我需要讀磁帶的機(jī)器

“你敢拿十年前寫的代碼,看看還能不能用?” 在最近的一篇社論中,《》介紹了兩位法國(guó)科學(xué)家發(fā)起的一項(xiàng)挑戰(zhàn)。

這項(xiàng)名為“十年”的挑戰(zhàn)賽由法國(guó)國(guó)家數(shù)字科學(xué)技術(shù)研究所的計(jì)算機(jī)神經(jīng)科學(xué)家和法國(guó)國(guó)家科學(xué)研究中心的理論生物物理學(xué)家發(fā)起,旨在鼓勵(lì)各個(gè)領(lǐng)域的研究人員翻出自己的十年。之前的(或更早的)代碼,看代碼是否還能用,研究是否可以復(fù)現(xiàn)。

你上世紀(jì)寫的代碼現(xiàn)在還work嗎?挑戰(zhàn)者:我需要讀磁帶的機(jī)器

他們認(rèn)為,盡管計(jì)算在科學(xué)研究中的重要性日益增加,但研究人員很少披露他們的底層代碼。即使給出代碼,別人也很難執(zhí)行,甚至作者本人有時(shí)也會(huì)遇到麻煩。而且,隨著編程語(yǔ)言和計(jì)算環(huán)境的演進(jìn),現(xiàn)在可以運(yùn)行的代碼,過(guò)段時(shí)間可能就不行了。

因此,“‘十年代碼再現(xiàn)性挑戰(zhàn)’的目的是確定那些十年后仍然有效的代碼編寫和發(fā)布技術(shù),”他說(shuō)。

本次比賽共吸引了35名參賽者。他們提議復(fù)制 43 篇論文,其中 28 篇產(chǎn)生了可復(fù)制的報(bào)告。論文涵蓋的語(yǔ)言包括C、R等,一位參賽者復(fù)制的不是代碼,而是用SBML( )編寫的分子模型。

當(dāng)然,這條繁衍之路并不像想象的那么簡(jiǎn)單。有些人找不到代碼,有些人找到代碼卻不知道如何運(yùn)行。最后,他們總結(jié)了通過(guò)本次比賽提高代碼復(fù)現(xiàn)性的一些技巧,可以為目前的工作提供參考。

舊代碼不是那么容易工作

你的代碼還在嗎?

要完成這個(gè)挑戰(zhàn),首先你必須找到你的舊代碼,有人在這一步卡住了。

是法國(guó)國(guó)家信息與自動(dòng)化研究所的計(jì)算機(jī)科學(xué)家,他在 1998 年的一篇論文中提到了一個(gè)名為“”的并行編程系統(tǒng)。但在搜索了他和他的合著者的硬盤驅(qū)動(dòng)器和備份后,他找不到該系統(tǒng)的代碼。

幸運(yùn)的是,一個(gè)名為“”的源代碼存檔站點(diǎn)為他提供了備份。

你上世紀(jì)寫的代碼現(xiàn)在還work嗎?挑戰(zhàn)者:我需要讀磁帶的機(jī)器

會(huì)定期爬取其他開(kāi)源代碼站點(diǎn),有點(diǎn)像定期爬取網(wǎng)頁(yè)的 ( )。開(kāi)發(fā)人員還可以請(qǐng)求爬取自己的庫(kù)進(jìn)行歸檔。

一開(kāi)始我并沒(méi)有想過(guò)要自己找代碼,因?yàn)樗_(kāi)發(fā)的時(shí)候還沒(méi)有出現(xiàn)。他猜想一定是有人把他的代碼上傳到了托管平臺(tái),在平臺(tái)關(guān)閉前搶到了。

你的文件還在嗎?

“在一個(gè)組織良好的項(xiàng)目中,文檔行數(shù)超過(guò)代碼行數(shù)的情況并不少見(jiàn),”加州大學(xué)伯克利分校的計(jì)算再現(xiàn)性倡導(dǎo)者說(shuō)。“你想盡可能多地保留信息,對(duì)分析的結(jié)構(gòu)有更廣泛的描述,比如數(shù)據(jù)來(lái)自哪里、關(guān)于數(shù)據(jù)的一些元信息、代碼等,是再現(xiàn)的關(guān)鍵。”

是愛(ài)丁堡大學(xué)的一位神經(jīng)科學(xué)家,他想重現(xiàn)一個(gè)用 SBML 編寫的計(jì)算模型。雖然模型在那里,但她找不到她正在使用的參數(shù)值(例如分子濃度),也沒(méi)有很好地記錄數(shù)據(jù)歸一化的關(guān)鍵細(xì)節(jié)。

因此,她的部分研究無(wú)法復(fù)制。“即使對(duì)于同一個(gè)人來(lái)說(shuō),十年前顯而易見(jiàn)的模型的許多細(xì)節(jié)都不再明顯了,這令人驚訝!” 她茫然地說(shuō)。

你有運(yùn)行代碼的硬件嗎?

作為比賽的組織者,也參加了本次挑戰(zhàn)賽。他復(fù)制的代碼是 Apple II 中的圖像放大鏡,是整個(gè)挑戰(zhàn)賽中最古老的代碼。這段代碼寫于 32 年前,當(dāng)時(shí)我 16 歲mac生物學(xué)軟件,并發(fā)表在(已??模┟麨?Micro 的雜志上。

今天,即使有神秘的 BASIC 語(yǔ)言指令,他也記不起代碼是如何工作的?!霸撍溃@是我自己寫的,”若有所思地說(shuō)。

然而,他能夠在網(wǎng)上找到代碼并讓它在 Apple II 模擬器的 Web 版本上運(yùn)行。做到這一點(diǎn)并不難,最難的部分是讓它在真正的 Apple II 上運(yùn)行。

你上世紀(jì)寫的代碼現(xiàn)在還work嗎?挑戰(zhàn)者:我需要讀磁帶的機(jī)器

硬件不是問(wèn)題,因?yàn)樗霓k公室里有一臺(tái) Apple II,一位同事在打掃辦公室時(shí)救了出來(lái)。但是由于這款 Apple II 比 USB 電纜和 更老,并且當(dāng)前的計(jì)算機(jī)無(wú)法連接到其老式磁盤驅(qū)動(dòng)器。因此,在運(yùn)行代碼之前,您需要某種定制硬件和一盒老式磁盤。

他在亞馬遜上找到了一些帶有“新”字樣的磁盤,但它們的日期是 1993 年。在對(duì)他的數(shù)據(jù)進(jìn)行了 3 次寫入以確保位穩(wěn)定后mac生物學(xué)軟件,磁盤已啟動(dòng)并運(yùn)行。

該活動(dòng)的發(fā)起人也遇到了硬件問(wèn)題。他有條不紊地將他在 1990 年代編寫的代碼存儲(chǔ)在磁帶上,但現(xiàn)在他沒(méi)有讀取磁帶的工具。

您的計(jì)算環(huán)境過(guò)時(shí)了嗎?

過(guò)時(shí)的計(jì)算環(huán)境也是壓死參賽者的一根稻草。Maggi 是一位意大利計(jì)算機(jī)物理學(xué)家,他在 1996 年用語(yǔ)言模擬了一個(gè)超導(dǎo)設(shè)備,并使用 Basic 來(lái)處理結(jié)果。二十多年過(guò)去了,并沒(méi)有太大的變化,所以 Maggi 只做了一些小的調(diào)整來(lái)讓代碼順利編譯。沒(méi)想到,Basic 給他提出了一個(gè)問(wèn)題。

“Basic 是一種死語(yǔ)言,早已被 Basic.NET 取代,”Maggi 在報(bào)告中寫道。所以,為了運(yùn)行二十多年前的 Basic 代碼,Maggi 不得不使用在 上找到的安裝盤在我的 mac 計(jì)算機(jī)上重建了一個(gè)使用了十年的虛擬機(jī)。

在安裝之前,Maggi 遇到了一個(gè)問(wèn)題:他不記得自己在 96 年使用的是哪個(gè)版本。多年來(lái),微軟已經(jīng)發(fā)布了該語(yǔ)言的多個(gè)版本,但并不總是向后兼容。

你上世紀(jì)寫的代碼現(xiàn)在還work嗎?挑戰(zhàn)者:我需要讀磁帶的機(jī)器

模擬運(yùn)行 Basic 的 mac 的 1994 年計(jì)算機(jī)。

同樣受到計(jì)算環(huán)境困擾的還有法國(guó)國(guó)家信息與自動(dòng)化研究所的研究工程師 Courtès。對(duì)于這個(gè)挑戰(zhàn),他復(fù)制了一篇 2006 年用 C 語(yǔ)言編寫的比較數(shù)據(jù)壓縮策略的論文。由于 API 更改,他的代碼無(wú)法與現(xiàn)有的 軟件 庫(kù)編譯。為了解決這個(gè)問(wèn)題,他不得不將六個(gè)計(jì)算組件回滾到非常舊的版本。

今天,研究人員可以使用和 Conda 虛擬環(huán)境來(lái)打包計(jì)算環(huán)境以應(yīng)對(duì)緊急情況。但是一些參賽者選擇了其他方法,例如 Guix(Linux 包管理器)。它保證了環(huán)境可重現(xiàn)到最后一點(diǎn),并且構(gòu)建環(huán)境的代碼版本是透明的。

“可以從源頭檢查和構(gòu)建環(huán)境和整篇論文,”Courtès 說(shuō)。相信 Guix 可能是本次比賽的“目前最好的可重復(fù)研究工具”。

與直覺(jué)相反,許多參賽者發(fā)現(xiàn)用舊語(yǔ)言編寫的代碼最容易重現(xiàn)。新語(yǔ)言快速變化的 API 和對(duì)第三方庫(kù)的依賴使它們難以復(fù)制。從這個(gè)意義上說(shuō),今年剛剛停止支持的2.7是一個(gè)很好的機(jī)會(huì)。它是一種高級(jí)編程語(yǔ)言,不會(huì)再次更新。

如何提高代碼的可重復(fù)性?

在經(jīng)歷了代碼復(fù)現(xiàn)的艱辛之后,相信每一位參賽者在編寫代碼的過(guò)程中都意識(shí)到了代碼中埋藏的一些“隱患”,比如存儲(chǔ)介質(zhì)、選擇的語(yǔ)言、備份平臺(tái)等。

那么,如何提高論文代碼的重現(xiàn)性呢?“”文章的作者在文章中給出了一個(gè):

1. 代碼。基于諸如 Excel 等點(diǎn)擊式界面的工作流是不可重現(xiàn)的。您希望在代碼中保留計(jì)算和數(shù)據(jù)操作;

2. 文件。使用注釋、計(jì)算筆記本、文件等來(lái)解釋你的代碼是如何工作的,定義預(yù)期的參數(shù)和所需的計(jì)算環(huán)境;

3. 記錄。記下關(guān)鍵參數(shù),例如用于啟動(dòng)隨機(jī)數(shù)生成器的“種子”值。此類日志記錄可以幫助您重新運(yùn)行代碼、跟蹤錯(cuò)誤和意外結(jié)果;

學(xué)車寶駕駛模擬學(xué)車軟件 v15.1.26 免費(fèi)版_mac生物學(xué)軟件_學(xué)普聯(lián)考試卷生物2016

4. 測(cè)試。創(chuàng)建一套測(cè)試功能。使用和控制數(shù)據(jù)集以確保您獲得預(yù)期的結(jié)果,并在開(kāi)發(fā)期間運(yùn)行這些測(cè)試以清除出現(xiàn)的錯(cuò)誤;

5. 保存。是一個(gè)流行但不是永久的在線存儲(chǔ)庫(kù)。從長(zhǎng)遠(yuǎn)來(lái)看, 和 等歸檔服務(wù)可能會(huì)更加穩(wěn)定;

6. 跟蹤。使用 Git 之類的版本控制工具來(lái)記錄您的項(xiàng)目歷史記錄,記下用于生成每個(gè)結(jié)果的版本;

7. 包裝。使用容器化工具(、等)、Web 服務(wù)(Code Ocean、、)、虛擬環(huán)境管理器(Conda)等創(chuàng)建即用型計(jì)算環(huán)境;

8. 自動(dòng)化。使用 CI 等持續(xù)集成服務(wù),在不同的計(jì)算環(huán)境中定期自動(dòng)測(cè)試你的代碼;

9. 已簡(jiǎn)化。避免使用利基或難以安裝的第三方代碼庫(kù),這會(huì)使后續(xù)利用變得復(fù)雜;

10. 檢查。通過(guò)在一系列計(jì)算環(huán)境中運(yùn)行代碼來(lái)檢查代碼的可移植性。

此外,曼徹斯特大學(xué)的計(jì)算機(jī)科學(xué)家 Goble 指出,讓自己的代碼開(kāi)源也是一種提高可重復(fù)性的方法,這樣其他人就有機(jī)會(huì)修改你的代碼庫(kù)以使其保持活力。

如果你也有十幾二十年前寫的代碼,你可以把它拿出來(lái)看看是否還能用。

發(fā)表評(píng)論