为了重新运行十几年前的代码,他不得不在mac电脑上安装DOS和Win 3.11

不过他还是在网上找到了当年的代码并在网页版的苹果II模拟器上跑了一遍。)来帮助电脑加载代码。多年前的代码得以重见天日。然而现在,虽然磁带还在,它的阅读器却已经绝版了,的代码只能被封在磁带中了。Courtès在重新运行2006年用C语言写的对比不同数据安装策略的代码时遇到了麻烦。为软件源代码进行存档。如今,再次面对当年的代码,他通过将代码分解成模块进行测试避开了这些问题。...

尽管 () 在科学中的重要性日益增加,但研究论文很少提供作者的底层代码。即便提供了,也很难让同事顺利运行,甚至有人发现发文后想重复自己用过的代码会遇到问题。毕竟110款精致ps金色渐变,计算机操作环境正在飞速发展,编程语言也在不断更新。如何让多年前的古董代码再次流畅运行,成为许多程序员和研究人员头疼的问题。

十年重复性挑战

为了克服这一困难Mac软件源代码Mac软件源代码,法国国家信息与自动化研究所 (INRIA) 的计算神经科学家和程序员与法国国家科学研究中心 (for, CNRS) 的理论生物物理学家在 2019 年共同构想了一个解决方案:十年项目。挑战项目鼓励科学家从他们至少十年前发表的文章中复制代码。参与者还将在 2021 年 6 月的研讨会上讨论他们的收获。成功案例将发表在杂志上。是和 2015 年创立的期刊,记录研究人员对已发表论文代码的重复情况,以衡量研究的可重复性。

他说,挑战在于“找到有效的技术来编写和发布可以在 10 年后工作的代码”。该项目的启动恰逢著名的2退出历史阶段——2020年1月1日。2曾经是科学界流行的高级编程语言,系统支持了20多年。(3 于 2008 年发布,仍在开发中,但两个版本差异很大,一个编写的代码可能无法在另一个中正常运行。)毕竟,“十年在 软件@ >世界很长,很长一段时间,”伊利诺伊大学厄巴纳-香槟分校研究计算可重复性说,这项挑战有效地激励研究人员通过设定 10 年的标准来突破代码可重复性的界限。时间限制。

尽管还有很长的路要走,但仍有 35 人接受了挑战。他们共提交了 43 篇等待检测重复的论文,其中 28 篇产生了重复报告。杂志从今年开始出版他们的作品。参与者使用了包括 C、R 和 C 在内的多种编程语言,一位参与者甚至重新运行了一个用 SBML ( ) 编码的分子模型。

具有挑战性的

挑战的创建者也参与了这个项目,他反复运行了挑战中最古老的代码:一个他 1 岁时在苹果电脑上写的放大图片的程序。该代码随后发表在已停刊的法国微型杂志上。32 年后,不记得代码及其晦涩难懂的 BASIC 指令是如何工作的。不过,他还是在网上找到了当年的代码,并在网页版Apple II模拟器上运行。

然而,困难在于让它在真正的 Apple II 计算机上顺利运行。硬件不是问题,办公室有一台 Apple II 电脑。但由于 Apple II 计算机诞生时没有 USB 线和互联网,现代计算机无法连接老式磁盘驱动器,它们必须使用定制硬件 ( ) 和老式软盘 ( ) 来帮助计算机加载代码. 就像考古挖掘一样,虽然过程曲折,但还是带回了30多年前的密码。

然而,另一位发起人就没有那么幸运了。在 1990 年代,我习惯于将代码存储在磁带上。但现在,虽然磁带还在,但它的阅读器已经绝版,代码只能封在磁带里。

与时俱进的经营环境

除了硬件,陈旧的电脑操作环境也给参会人员带来了不小的麻烦。意大利计算物理学家 Maggi 在 1996 年使用语言对一种称为约瑟夫结的超导装置进行建模,并使用微软的 Basic 语言来处理结果。多年来,该语言没有太大变化,但 Basic 已绝版,无法在现有系统上运行(现在它已被 Basic.NET 取代,似乎只是名称相关)。为了运行代码,他不得不在十多年前的mac电脑上安装系统的模拟器,然后安装微软发布的6.22和3.11 1994年左右在模拟器上,以及他在网上找到的Basic安装盘。

源mac 是什么意思_mac恢复 源卷宗为只读_Mac软件源代码

1990年代初的Win3.11操作系统界面

Maggi 承认在模拟器上安装这些专有的 软件@>s 是合法的RGBmachine(采用色彩校正引擎、自动算最佳的色彩曲线),但使用和修改是有限的。然而,在他最早的研究期间,他拥有使用这些工具的有效许可证,这让他“至少在道德上”觉得有权使用 软件@>。

然而,问题并没有得到解决。Maggi 不知道要使用哪个版本的 Basic。 发布了该语言的多个版本,这些版本通常与以前的版本不兼容。Maggi 不记得他在 1996 年使用的是哪个版本的编程语言。更糟糕的是,他记录这些细节的笔记本也因地下室泄漏而被毁坏。因此,美极不得不花费大量精力重写当年的代码。

图片来源:美极 |

Mac软件源代码_源mac 是什么意思_mac恢复 源卷宗为只读

巧合的是,INRIA 的研发工程师 Courtès 在重新运行 2006 年用 C 编写的比较不同数据安装策略的代码时遇到了麻烦。程序员青睐的应用编程接口(API),可以连接两个不同的软件@>,方便程序员调用其他软件@>的函数,打通软件@>之间的数据;操作系统等操作环境的变化会导致API的变化。API 更改使他的代码无法使用当前的 软件@> 库进行压缩。他不得不将几个计算机组件改回旧版本。考特斯说,计算机系统的发展就像《爱丽丝梦游仙境》中的兔子洞,里面会发生什么,还不得而知。

解决策略

现在,研究人员可以使用容器和Conda虚拟环境打包计算机计算环境进行备份,以应对未知的运行环境。conda 是一个开源的通用包管理系统和环境管理系统,可以安装多个版本的软件@>包及其依赖软件@>,并在它们之间轻松切换。然而,一些参与者选择了另一种方法:Linux 通用包管理系统 Guix。Guix 的好处在于它具有科学论文可重现性的黄金法则:环境的完全可重现性,以及透明的代码版本控制。

此外,为了提高长期可重复性,将代码归档尤为重要。INRIA 的计算机科学家试图在他们自己和他们的合作者的多个备份硬盘驱动器上找到 1998 年并行编程系统的代码,但找不到。没办法,他只好在他2015年建立的网站上搜索。不要抱太大希望,因为在他发展的时候它并不存在。然而,令人惊奇的是,他居然找到了源代码!事实证明,大量计算机程序的源代码是通过定期从代码共享站点(例如代码共享站点)爬取信息来收集和存储的。将 软件@> 源代码存档为 存档网页。

虽然很多参与者发现过去能流畅运行的代码,现在却频繁报错;但也有大佬可以轻松解决问题。CNRS 的生物物理化学家就是其中之一。1995 年,他在笔记本 软件@> 上工作,以模拟真核染色体的 3D 结构。在运行时,软件@>的代码存在结构缺陷和代码片段顺序混乱的问题。现在,再次面对年度代码,他通过将代码分解为模块进行测试来规避这些问题。他还使用版本控制(指在软件@>的开发过程中对各种程序代码、配置文件、文档等文件变化的管理,是软件@>配置管理的核心思想之一一)

mac恢复 源卷宗为只读_源mac 是什么意思_Mac软件源代码

并且示例可能会为致力于提高其代码的长期可重复性的研究人员提供一些启示。虽然很难保证多年前的旧代码能够再次运行,但在日常编写代码时仍然可以采用有效的策略来增加成功的概率。具体策略如下:

代码:在代码中包含计算和数据处理。不要使用基于 Excel 等点击式界面的流程图。

():使用记事本等软件@>详细解释代码运行过程,定义预期参数和需要的计算环境。

():记录重要的参数,比如递归程序开始时使用的种子值。

测试:创建一组测试函数。使用阳性和阴性对照数据集确保您获得所需的结果。在开发代码的同时进行测试,并及时处理错误。

Mac软件源代码_mac恢复 源卷宗为只读_源mac 是什么意思

构建指南:创建一个主脚本(例如“run.sh”文件),其中 下载 所需的数据集和变量,执行工作流并提供一个明显的代码入口点。

():是一个流行的非永久代码在线存储库。卡通人物笔刷下载,并且可以长时间稳定地存储代码。

跟踪:使用 Git 等版本控制工具记录您的项目历史。注释每个结果对应的版本。

():使用容器工具 (, )、Web 服务器 (Code Ocean, , ) 或虚拟环境管理器 (Conda) 创建即用型运行时环境。

():使用持续集成服务(CI等)自动化项目的持续测试来控制代码质量。

():避免难以安装的第三方代码库。

check():检查代码在不同运行时环境中的可移植性。

无论他们选择哪种方法,十年重现性挑战的参与者仍然很难重新运行他们的代码。然而,它们将对提高论文代码的长期可重复性产生许多影响。正如英国曼彻斯特大学的计算机科学家 Goble 所说,存在一定范围的可重复性,“软件@> 是一个不断更新的生物,它会死去;人们需要修复它或替换它它”。

相关文章

发表评论