十年前的代码,有多少在今天还能够运行
majer @ 2020.08.25 , 03:55 下午似乎现在各国的青少年都已经不知道3.5寸软盘为何物了,就像不清楚以前的手机电池是可拆卸的。
在1983年的反映冷战的电影《战争游戏》里,还是高中生的黑客大卫·莱特曼(David Lightman)闯入学校的服务器,给他的女友打出了考试最高分;随后,他又入侵了军事网络,从而避免了全球性热核战争的爆发。
好吧,那些最古老的程序有多少还能被运行?又有那些曾经重要的程序彻底丧失了支持它们的软硬件环境,化作时代的眼泪。
Nicolas Rougier想要回答这一问题。
Rougier是INRIA(位于波尔多的法国国家数字科学与技术研究院)的计算神经科学家和程序员。他与法国国家科学研究中心(CNRS)的理论生物物理学家Konrad Hinsen于2019年共同构思了一个全球挑战项目,请科学家们寻找并重新执行旧日代码,以重现他们发表了十年或十年以上的计算机论文里的结果。原定6月在波尔多举行的一次研讨会,交流项目成果。但COVID-19彻底推翻了所有的时间表。 (研讨会重新安排到2021年6月。)
Rougier说,尽管计算机在科学中起着关键且越来越大的作用,但科学论文里很少包含底层代码。即使包含了,其他人也可能很难执行,甚至过几年,连原始开发者也可能无法运行。
Hinsen说,“十年可重复性挑战”旨在“找出十年来使用的编写和发布代码的技术中有哪些足以流传至今”。
“十年对于软件领域来说可是非常非常非常长的时间,”在伊利诺伊大学香槟分校研究计算可重复性的Victoria Stodden说,在建立该基准时,这一挑战有效地鼓励研究人员探究“在软件世界中几乎等同于无穷大”的时间周期内,代码可重复性的局限。
目前共有35人报名参赛。他们重新运行了43篇论文里的代码。为其中的28篇撰写了报告。ReScience C从今年初开始发表他们的作品。使用的编程语言范围从C和R到Mathematica和Pascal。
某些曾经非常重要的语言,如VB已经彻底被新语言取代。现在已经很难找到合适的运行环境。同时,一些语言经过历次迭代,可能函数名和参数类型都发生了变化。所以,颇为令人意外的一个发现是,古老的语言,如果现在还有相应的社区,则在今天反而更有可能运行成功。因为它们的函数和接口之类,早已停止更新,所以形式上和10年前一样。反倒是生机勃勃的语言,因为迭代频繁,和10年前相比,各种API早已面目全非。
十年可重复性挑战 https://rescience.github.io/ten-years/
PREV : [日本]年轻人在失去性趣
NEXT : 量子力学迄今最具现实冲击力的悖论