高效计算科学研究的十条简单规则

评论1,684

PLOS Computational Biology上发表了《Ten Simple Rules for Effective Computational Research》,可以看成是《Ten Simple Rules for Reproducible Computational Research》可复现的计算科学研究十条简单规则,以及自己的一些经验)的姊妹篇,本文结合我自己的经验对其阐述。

  • Look Before You Leap
    动手前先看看有没有现成的软件或库,避免重复发明轮子。
    多Google,在代码仓储网站(Github,SourceForge,GoogleCode)上面多搜搜。
  • Develop a Prototype First
    先建立原型。
    先设想好软件要实现什么功能,提供什么接口,并将问题进行细化,这样开展起来才能思路清晰,也方便团队分工。另外,也可以先用伪代码,或者高级语言(Matlab、R、Python、Perl等)快速开发一个简化版的原型,随后再用“低级语言”进行优化。
  • Make Your Code Understandable to Others (and Yourself)
    增强代码的可读性。
    主要是说软件文档和代码风格的重要性。
    即使是自己写的代码,过段时间也可能不知所云了。 软件文档,大到整个项目的框架的详细介绍(最好用UML图描述),小到每个函数的功能、输入、输出、最后修改时间、Bug,还有变量和方法的命名规则。
    良好代码风格也非常重要,每种语言都有各自约定俗成的代码风格,比如Python的强制缩进,Perl则可用Perltidy格式化代码,Golang自带的gofmt。
  • Don't Underestimate the Complexity of Your Task
    不要低估项目的复杂度。
    主要是说养成良好的工作日志书写习惯。 为每个项目书写规范的日志,可以让你更容易查错,也方便复用
  • Understand the Mathematical, Numerical, and Computational Methods Underpinning Your Work 使用数学和统计模型、坚实的计算方法来夯实你的工作。
    这个不解释,太重要了。
  • Use Pictures: They Really Are Worth a Thousand Words
    用图表将思想、结果可视化,一张图片胜过千言万语。
  • Version Control Everything
    版本控制的重要性。
    姊妹篇里也提到了:运用版本控制系统,如Subversion、Git和Mercurial。比如我在Github上托管了一些开源项目的代码,如果不便公开,实验室内部也可以自己搭建与
    Github类似的Gitlab
    湿实验也同样适用,尽量将每个版本都记录下来,方便回滚(Roll back)。因为你的方案有可能越改越差。。。
  • Test Everything
    测试的重要性。
    这个我是有血的教训的。一定要做单元测试,一步一步往下走! 否则后悔莫及,会浪费掉几天甚至所有的时间。且单元测试一定要完整。 发布模块的时候也要附带测试代码。
  • Share Everything 分享。
    就像发表文章,代码也可以分享。
    试想如果没有那么多的人分享自己的数据、代码、软件、经验,你将什么都得重头开始,那整个科研、IT行业将无法像如今这样迅猛发展。 开放是互相交流和学习的机会。
  • Keep Going!
    说说你的建议吧。

本文转自 Wei Shen's Blog 《高效计算科学研究的十条简单规则

发表评论

匿名网友