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

· Read in about 1 min · (90 Words)

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

  1. Look Before You Leap

    动手前先看看有没有现成的软件或库,避免重复发明轮子

    多Google,在代码仓储网站(Github,SourceForge,GoogleCode)上面多搜搜。

  2. Develop a Prototype First

    先建立原型。

    先设想好软件要实现什么功能,提供什么接口,并将问题进行细化,这样开展起来才能思路清晰,也方便团队分工。另外,也可以先用伪代码,或者高级语言(Matlab、R、Python、Perl等)快速开发一个简化版的原型,随后再用“低级语言”进行优化。

  3. Make Your Code Understandable to Others (and Yourself)

    增强代码的可读性。主要是说软件文档和代码风格的重要性。即使是自己写的代码,过段时间也可能不知所云了。

    软件文档,大到整个项目的框架的详细介绍(最好用UML图描述),小到每个函数的功能、输入、输出、最后修改时间、Bug,还有变量和方法的命名规则。

    良好代码风格也非常重要,每种语言都有各自约定俗成的代码风格,比如Python的强制缩进,Perl则可用Perltidy格式化代码,Golang自带的gofmt。

  4. Don’t Underestimate the Complexity of Your Task

    不要低估项目的复杂度。主要是说养成良好的工作日志书写习惯。

    为每个项目书写规范的日志,可以让你更容易查错,也方便复用

  5. Understand the Mathematical, Numerical, and Computational Methods Underpinning Your Work

    使用数学和统计模型、坚实的计算方法来夯实你的工作。

    这个不解释,太重要了。

  6. Use Pictures: They Really Are Worth a Thousand Words

    用图表将思想、结果可视化,一张图片胜过千言万语

  7. Version Control Everything

    版本控制的重要性。

    姊妹篇里也提到了:运用版本控制系统,如Subversion、Git和Mercurial。比如我在Github上托管了一些开源项目的代码,如果不便公开,实验室内部也可以自己搭建与Github类似的Gitlab

    湿实验也同样适用,尽量将每个版本都记录下来,方便回滚(Roll back)。因为你的方案有可能越改越差。。。

  8. Test Everything

    测试的重要性。

    这个我是有血的教训的。一定要做单元测试,一步一步往下走! 否则后悔莫及,会浪费掉几天甚至所有的时间。且单元测试一定要完整。

    发布模块的时候也要附带测试代码。

  9. Share Everything

    分享。

    就像发表文章,代码也可以分享。试想如果没有那么多的人分享自己的数据、代码、软件、经验,你将什么都得重头开始,那整个科研、IT行业将无法像如今这样迅猛发展。

    开放是互相交流和学习的机会

  10. Keep Going!

    说说你的建议吧。