在研究领域中传播思想至关重要。例如,最近的算法变得非常复杂,思想与它们的实现紧密耦合。快速共享和获取这些实现的能力对于许多领域未来的成功至关重要。我想表达的信息很容易概括——为最大限度地发挥未来研究的潜力贡献力量就像分享你的代码一样简单。
为了理解这个问题,考虑一个简单的发明,铅笔。可以用一句话解释铅笔的概念:“铅笔是一种书写工具,通常由保护外壳内的狭窄颜料芯构成。”
假设您想到了对铅笔的渐进式改进——您想让铅笔前半部分的颜料是一种颜色,后半部分的颜料是另一种颜色!如果您是原始铅笔的创造者,这将非常容易实现——只需在铅笔芯生产过程中使用两种不同的颜料即可。
然而,如果您不是原始铅笔的创造者,这现在就成了一项极其复杂的任务。您必须重新解决诸如“如何压实石墨?”之类的基本问题。这些问题原始创造者已经详细研究过。他不太可能让您使用他的铅笔工厂来尝试您的想法,因此您必须从头开始。
这个人为设计的例子与工程研究人员每天遇到的情况惊人地相似。有人开发了一种算法,并花费数年时间完善其实现。现在其他人想将该算法用作他们研究中的一个步骤。通常会遇到以下情况
1) 在网上查找,发现作者没有公开发布该算法的文档。
2) 发邮件给作者,请求他分享他的实现。
3a) 作者同意了!现在您意识到代码的编写没有考虑到未来的用户——没有注释,也没有对 API 进行合理的尝试。
3b) 更常见的情况是,作者不会回复或无法分享代码。无论哪种方式,您都一无所获地继续前进。
4) 决定是否将您的研究转向不同的方向,或者自己实现该算法。
5) 花费数周时间与算法出版物中没有的细微差别作斗争。
在无数次经历上述过程之后,我将问题分为三类
1) 新领域进入者的时间成本。 新的研究人员无法立即上手——他们必须回溯几年,编写或重写以前发布的算法,以便他们可以比较新的结果以及在旧的想法的基础上进行构建。
2) 研究小组派系。 当一个实验室有多个研究人员共同研究一个统一问题的各个部分时,铅笔类比效应会被放大。在同一个代码库上合作几年后,增量改进的产出速度非常快,而外部人员几乎不可能实现。这给新来者带来了更加令人生畏的障碍,最终导致对问题的看法不够多样化。
3) 糟糕的重新实现。 最初的研究人员可能花费了数月或数年时间研究特定算法。新的研究人员只是打算将其用作更大难题中的一小部分。他在一周内创建的实现不可能在效率或正确性上与原始实现相提并论。这导致研究结果的比较不准确,并降低了该领域未来研究的总体质量和速度。
大多数期刊和会议目前不要求提交代码。然而,这种趋势似乎正在改变。《2010年计算机视觉与模式识别会议》在审稿人评分卡中添加了一些字段,询问关于可重复性标准的问题。例如:“代码和数据是否公开可用?”
《科学》杂志也开始将可重复性作为一项严格要求。另一个新概念是在线期刊。例如,《Insight Journal》在鼓励提交代码以配合提交的文章方面做得非常出色。
正如我所概述的,缺乏代码共享对科学研究有几个严重的负面影响。它使新进入者更难做好工作,并减慢了所有人的进步。
答案非常简单。我们可以用开放性来解决这个问题。发布你的代码。就这么简单。
评论已关闭。