科学即开源软件

Hacker News Top 新闻

摘要

本文认为现代科学等同于开源软件,强调在计算研究中可重复性和科学方法的必要性。

暂无内容
查看原文
查看缓存全文

缓存时间: 2026/09/19 03:22

# 科学即开放软件 来源:https://jepedersen.dk/blog/202505_research/ **摘要**我认为现代科学就是开源软件的同义词。本文将解释原因、重要性以及您接下来可以(也应该)采取的行动。 --- > "你为何关注(开源)软件?"——每个人 我投入大量*时间*从事软件工作。曾被无数人问及软件为何重要。人们常说软件并非科学,只是时间消耗,是在追求真正重要成果(在学术界则特指论文)时需匆匆掠过的环节。不发表就出局。 但在我看来,软件至关重要。事实上,我认为开源软件*本身就是*科学——至少是计算科学。本文将阐述理由:为何作为科学家我们必须坚持科学方法,以及为何这意味着要致力于开发开放、可复现的软件。本文的写作并不轻松,它挑战了当前学术界的诸多趋势,但这是*迈向更好科学*的重要一步,能防止我们所有人*陷入疯狂(https://en.wikipedia.org/wiki/Insanity#Insult)*。 ## 什么是科学? 查阅维基百科对"科学"的定义: > 科学是通过可验证的假设和关于宇宙的预测来构建和组织知识的系统性学科。——维基百科(https://en.wikipedia.org/wiki/Science) 现在请随机获取一篇arXiv论文(https://jepedersen.dk/arxiv.html)。它显然包含某种"知识",但这篇论文是否贡献了*可检验*且*系统化*的预测?**你能验证它吗?****你能系统化它吗?** 答案很少是简单的"不能",但这很困难。您通常无法直接获取这些知识。 ### 核心解释——内部模型 > 如果有机体脑中携带外部现实及其自身可能行为的'小规模模型',它就能尝试各种替代方案,……并以更充分、更安全、更胜任的方式应对面临的紧急情况。 肯尼思·詹姆斯·威廉姆斯·克雷克在其*杰出的*著作《解释的本质》(https://en.wikipedia.org/wiki/Kenneth_Craik#CITEREFCraik1943)中提出,我们使用现实的微缩模拟来解释和预测外部世界。 这个观点如今看似显而易见,但它突显了从事科学的终极目标:作为行为主体的你,提升自己的**内部模型**,使其能做出比以往*更精准*的预测。这里的**内部模型**至关重要:如果arXiv论文不能帮助读者预测世界,它就不是科学。这就是计算可复现性的意义所在——软件是我们编码和共享预测模型的媒介。 ## 什么是可复现性? 请注意,根据维基百科的定义,*仅*展示结果是不够的。结果必须是(1)系统化的,并且(2)可检验的。 论文可能因过于深奥或因其他原因而难以接触,但这不意味着其中没有科学洞见——读者或可在第二次或第三次阅读时系统化这些思想。问题在于*您特定个体*无法将该思想据为己有、检验它,并用它来改进自己的世界模型。 在此语境下,可复现性不仅意味着复制结果,更意味着能够将科学思想融入自身内部模型、调整它、并在此基础上构建——或因它降低可预测性而将其舍弃。 如果一个思想不可复现,其发现就无法扩展。因而毫无用处。 通过快速思想实验替换概念可使这点更清晰:将"软件模型"替换为"数学模型"。正如我们不会接受声称"方程预测了X但拒绝展示数学推导"的物理学论文,我们也不应接受隐藏其方法的(计算)科学。 > 多少领域因此停滞,多少人的职业生涯因此中断?只因程序中存在缺陷。——格雷格·威尔逊(https://www.nature.com/articles/467775a) 软件在现代科学中无处不在(https://www.nature.com/articles/s43588-024-00651-2)。从新冠疫情模型到搜索算法再到实验室协议,皆构建于他人开发的软件之上。研究者日理万机,无暇逐一核查所有软件依赖项的正确性、理解实现细节或检查可能导致结果失效的潜在错误。 由此可得:**科学结果依赖于软件**。若软件出错,则科学结论错误。(软件缺陷已导致多起论文撤稿,如*此处( http://blogs.sciencemag.org/pipeline/archives/2007/02/27/wrong_but_still_convincing)*、*此处( https://retractionwatch.com/2022/03/03/nasa-researchers-retract-nature-paper-on-climate-change-and-evapotranspiration/)*、*此处( https://retractionwatch.com/2016/05/19/software-glitch-not-intentional-manipulation-sunk-immunology-paper/)*及*此处多例( https://www.science.org/content/article/how-avoid-stigma-retracted-paper-dont-call-it-retraction)*)。 这无可厚非,因为我们*必须*信任并依赖他人的工作。而要实现这一点,该软件需要具备可靠性。 ## 为何选择开源? 我们发现软件需要满足: 1. **可复现性**,即代码可执行且可修改; 2. **可靠性**,即结果稳定可信。 可修改性对科学至关重要,正如方程之于科学预测。可靠性同样关键,因为我们追求的是知识*系统性*进步,而非偶然奏效、时灵时不灵的片段结果。 这正是开源软件带给我们的优势。我们可以修改代码使其适应需求(试想Hugging Face模型(https://huggingface.co/)),并可基于现有成果持续迭代优化。它已*创造数万亿价值(https://www.hbs.edu/faculty/Pages/item.aspx?num=65230)*,且潜力远未枯竭。 当然,开源并非万灵药。存在知识产权与安全顾虑,漏洞仍会出现,稳定性也可能成问题。但至少这些不完美被*公之于众*。它们可以被修正与改进,恰如我们的科学认知。从这个角度看,可以说开源软件*就是*科学方法——只是呈现形式为模拟。 ## 对未来科学的展望 若接受上述前提,我们不禁要问:真正开放的(计算)科学将是何种模样? **每个成果都能即时复现。**当您读到某篇论文宣称新药能降低30%症状时,只需点击链接,即可在浏览器中观看精确分析过程。数据处理、统计检验和可视化将在秒级内,使用与作者完全相同的环境执行——通过可复现容器得以完美保存。 **科学软件如维基百科般演进。**气候模型并非由单一实验室孤立开发,而是由全球社区共同维护。当肯尼亚的研究者发现大气湍流计算中的缺陷时,修复将即时同步至全球气候模拟系统。模型得以持续改进,而非困守学术孤岛。 **发现速度大幅加快。**我们无需每位研究者都从头构建,而是站在巨人的肩膀上——这些巨人的工作不仅可读,更可运行、可修改。科学进步以前所未有的速率累积叠加。 **科学公信力增强。**当气候模型、经济预测和医疗建议建立在透明、可审计的代码之上时,公众信任度随之提升。科学传播也得以改善,因为模型本身成为对话的一部分——而非仅仅呈现结论。 这并非乌托邦幻想。每个组成部分都已存在——开源社区、可复现环境、协作开发平台。我们只需将其整合为连贯愿景,描绘数字时代科学应有的运作方式。 关键问题并非这未来能否实现,而是:我们多快能建成它? ## 接下来怎么做? 我认为在计算机化的世界中进行*科学实践(https://en.wiktionary.org/wiki/science#Verb)*,开源软件是必要条件。软件是*可执行的数学模型*,我们应给予更高优先级。 我们仍需努力,以下是具体行动建议: - **分享并记录您的代码**——无代码的论文科学性较弱,因其更难构建于已有洞见之上。理想状态下,任何主张都应辅以*可复现的*代码。从第一天起就使用代码,并始终共享它。 - **编写稳定代码,使用NixOS (https://nixos.org/)**——代码应可靠且能永久运行。这意味着保持依赖项和环境恒定。最佳方式是使用*可复现环境*。NixOS正迅速成为该领域最强大、最优质的工具。它将确保您的代码即使百年后仍能*完全一致地运行*。Docker、Conda等工具虽更优,但NixOS提供更全面的保障。 - **基于现有工具构建,而非另起炉灶**——为提升共同的科学知识库,我们需要跨平台工具。这对神经形态计算等小型领域尤为重要,近期《自然》论文已指出开源软件是规模化的关键(https://www.nature.com/articles/s41586-024-08253-8)。请查阅Open Neuromorphic软件指南(https://open-neuromorphic.org/neuromorphic-computing/software/),看看是否有贴近您工作的库。 - **支持从事软件开发的学者**——鉴于代码的极端重要性,学术晋升应重视软件贡献。 科学革命的成功源于其对透明、可复现与持续审视的坚持。开源运动将这些原则体现于软件领域,但仍有诸多工作待完成。 您是否愿意助力让软件更具科学性?

相似文章

开源AI因开放而迅速追赶

Reddit r/LocalLLaMA

文章认为,开源AI正因独立实验室(尤其是中国实验室)的协作努力而追赶闭源AI,并建议像OpenAI和Anthropic这样的大公司可以通过分享知识来提升。