在我的学术生涯中,我读了很多关于各种计算机科学主题的学术论文。其中许多涉及一个实现和对该实现的一些评估,但是我发现很少有人实际发布他们使用的代码。
对我来说,包括实际实施的好处将是巨大的,即:
- 扩大信任度或可复制性(自己进行测试!)
- 澄清歧义(特别是对于由非母语人士撰写的论文)
- 重复使用应用程序代码
那么,为什么这么少的论文实际上包含任何代码呢?
我认为,本文背后的组织可能打算在自己的应用程序中利用该实现,因此不希望发布它,但是如果是这样,为什么还要撰写该论文?
在我的学术生涯中,我读了很多关于各种计算机科学主题的学术论文。其中许多涉及一个实现和对该实现的一些评估,但是我发现很少有人实际发布他们使用的代码。
对我来说,包括实际实施的好处将是巨大的,即:
那么,为什么这么少的论文实际上包含任何代码呢?
我认为,本文背后的组织可能打算在自己的应用程序中利用该实现,因此不希望发布它,但是如果是这样,为什么还要撰写该论文?
Answers:
这是我在研究生院读到的David Donoho和Jonathan Buckheit一篇颇有争议的文章,从小波研究人员的角度确切地涉及了这个话题:
他们的想法更加雄心勃勃,他们提供了代码,以方便的Matlab软件包重现论文中的所有图形。
我非常喜欢他们的想法,但我认为问题很明显。
(1)这是额外的工作(清理代码,使用户界面至少基本化,编写一些文档,在人们不可避免地遇到问题时提供一些支持)
(2)大多数会议/审阅者并不是真的要求/期望
但是我不禁感到,如果期望以可用的格式公开提供任何出版物中使用的代码和数据,CS研究社区将受益。我承认即使涉及的工作量是可以控制的,我自己也没有这样做。我认为在没有外部推动的情况下,很难让自己付出更多的努力。
如果您在工业实验室工作,那么获得批准发布的论文要比获得批准发布的代码容易得多(即使论文包含重写代码所需的所有信息)。怪罪官僚。
从评论迁移和扩展:
我认为这必须因子字段而异。我所熟悉的几乎所有Theory B东西(尤其是Haskell,Agda,有时还与Coq相关)都包含已发布的代码,有时甚至是附录,或者更好地嵌入了本文。首先,来自ICFP的大量论文都是作为扫盲程序编写的,其全部内容由作者发表。反过来,相当数量的结果导致提取了要分发的库。
在其余的论文中,相当一部分从来没有代码开始。其中,可能有两个主要原因。首先是主要内容是证明树,带有关联的健全性证明的键入规则等的论文。其中,机械化元理论的发展鼓励至少一些作者在他们选择的定理证明者中提供代码(请参阅Weirich在POPLmark上的幻灯片:http://www.seas.upenn.edu/~sweirich/talks/cambridge-09。 pdf格式)。其次是那些源自Bird-Merteens东西(banannas&co。)的东西。这些通常无需太多工作即可翻译成功能语言。但是,我怀疑通常都缺乏通用性,并且处理语法和键入的具体问题会不必要地使事情复杂化,并使遵循等式推理变得更加困难。
我想证明我的观点,所以对ICFP 2010的前两天做了一个粗略的计数。在标准论文(即没有经验报告或邀请的演讲)中,有21篇中有12篇提供了某种代码。3个提供了Coq(第4个声称提供了部分证明,但未公开)。三名哈斯克尔。三人提供阿格达。一个提供了Scheme,一个提供了Caml,一个提供了Twelf。(请注意,有些提供的代码用于多个证明助手,或者用于形式化和实现)。在其余的论文中,有一些工作的抽象度足够高,以至于在证明助手中实现本身就是一张新论文,而我怀疑还有更多的工作可以在证明助手中实现。标准技术,但是这样做肯定会花费大量工作。
这可能已经在某个时候问过了,但是我一直对此深有感触,所以我会给我两美分。我已经在SAT社区工作了多年(不再有)。大多数研究人员很少发布他们的代码。该论文与该算法一起发表,但很少见到与该论文一起发表的SAT解算器(MAXSAT求解器)等的实际代码。
现实情况是,仅使用论文中发布的代码,您将永远没有机会重现作者的实验。不仅是因为已发布的代码不完整(当然),还因为甚至已发布的伪代码也很少将半直接转换为实际实现的内容。
其背后的原因很难知道,并且可能因研究人员而异,但多数情况下有两个方面。
首先,研究人员倾向于在单个求解器中连续工作,之后在同一求解器上发表论文,并逐步添加新功能,从而转化为新版本的求解器。有一种不健康的想法,即竞争将使您的求解器扩展和发布论文而没有给予您应有的荣誉(意思是,共同作者),从而使用您的求解器来进一步发展自己的职业。
其次,某些代码(与所有软件一样)确实是匆忙编写的。半熟的脚本。未经测试的功能,等等。通过发布此代码,研究人员将感到自己在为自己感到尴尬并损害其声誉。
我给您提供ACM的最新参考资料:http : //cacm.acm.org/magazines/2011/5/107698-the-importance-of-reviewing-the-code/fulltext
从历史上看,科学论文必须被印在纸上,期刊被运往世界各地。每增加一页页面都会增加大量成本,因此文章受到长度限制,即使是简单的工作代码也通常比非正式描述占用更多空间。
今天,没有充分的理由不在任何引用算法的文章中包含代码。
放弃诸如pdf和postscript之类的面向打印的格式,转而使用更具语义意识的格式(带有MathML的HTML或Mathematica的开源版本),可能也很有用。