开发者生态
morning
科学是开放软件
2026-09-19
1 阅读
约5分钟阅读
jegp
字号:
TL;DR 我声称现代科学是开源软件的代名词。这篇文章解释了原因、为什么它很重要以及您下一步可以(并且应该)做什么。您为什么关心(开源)软件? - 大家 我花了很多时间在软件上。我已经记不清有多少次被问到为什么软件如此重要了。人们说,软件不是科学。这是一种时间浪费,是为了追求真正重要的事情而匆忙过去的事情:结果(如果你在学术界,还有论文)。要么出版,要么灭亡。出色地。我认为软件很重要。事实上,我认为开源软件是科学。或者,至少是计算科学。这篇文章告诉你原因。为什么我们作为科学家必须坚持科学方法,以及为什么这意味着开发开放且可复制的软件。这篇文章写起来并不容易。它挑战了学术界当前的许多趋势,但这是迈向更好科学的重要一步,不会让我们所有人都发疯。什么是科学?如果你在维基百科上查找科学,你会发现以下内容:科学是一门系统学科,以可检验的假设和关于宇宙的预测的形式构建和组织知识。 - 维基百科 现在,去随机获取一篇 arXiv 论文。它显然包含某种“知识”。但是,这篇论文是否提供了可测试且可以系统组织的预测?你能测试一下吗?你能系统化吗?答案从来都不是绝对的,但这很难。您很少能够直接获取这些知识。好的解释——内部模型 如果有机体在其头脑中具有外部现实和自身可能采取的行动的“小规模模型”,那么它就能够尝试各种替代方案,……并以各种方式以更全面、更安全和更有能力的方式对其面临的紧急情况做出反应。肯尼思·詹姆斯·威廉姆斯·克雷克 (Kenneth James Williams Craik) 在他的优秀著作《解释的本质》中指出,我们使用现实的小型模拟来解释和预测外部世界。这一点在今天看来是显而易见的,但它首先强调了追求科学的目标:你作为一个行动实体,将你的内部模型改进到可以做出比以前更好的预测的程度。这里的内部模型至关重要:如果 arXiv 论文不能帮助读者预测世界,那么它就不是科学。这就是计算再现性很重要的原因——软件是我们编码和共享预测模型的方式。什么是再现性?回想一下,根据维基百科,仅展示结果是不够的。结果必须 (1) 系统化,并且 (2) 可测试。给定的论文完全有可能太难理解或由于其他原因而无法被观众理解。这并不意味着没有科学见解可供发现——读者可能会在第二次或第三次阅读时找到将它们系统化的方法。不,这意味着你不能将这个想法视为你自己的想法,测试它,并用它来改进你的世界模型。在这种情况下,再现性不仅仅是结果的重复。它是一种接受科学思想、将其嵌入到你自己的内部模型中、对其进行调整并以此为基础的能力,或者因为它降低了可预测性而放弃它。如果一个想法不可重复,那么研究结果就无法扩展。因此,它们是无用的。如果我们做一个快速的思想实验,用“数学模型”代替“软件模型”,这一点就会变得很清楚。正如我们不会接受一篇物理学论文说我们的方程预测 X 但我们不会展示数学一样,我们也不应该接受隐藏其方法的(计算)科学。为什么是软件科学?由于一个有缺陷的程序,有多少领域被阻碍了,有多少人的职业生涯被打乱了? - Greg Wilson 软件在现代科学中无处不在。从 CoVid 模型到搜索算法再到实验室协议,任何东西都是建立在其他人构建的软件之上的。研究人员都是忙碌的人。他们不会费心检查所有软件依赖项来验证正确性、了解实现细节或检查可能导致结果无效的潜在错误。由此可见,科学结果取决于软件。如果软件错了,那么科学就是错的。 (软件错误已经导致大量撤回,例如这里,这里,这里,以及这里的几个地方)。这很好,因为在某些时候我们必须信任并依赖他人的工作。为此,它(软件)需要可靠。为什么要开源?我们发现软件需要是可重复的,意味着可执行的,以及可修改的,并且可靠的,意味着结果始终值得信赖。可修改性对于科学很重要,就像方程对于科学预测很重要一样。可靠性至关重要,因为我们希望系统地提高我们的知识,而不是偶尔有效的片断和片面结果。这就是开源软件给我们带来的。我们可以更改代码并将其改造为
这篇文章对您有帮助吗?
订阅66必读
每日精选科技资讯,直达你的邮箱