我正在做一些初步工作来研究 DVCS(比如 Git、Hg、Bazar)如何在科学编程过程中提供帮助,尤其是对于研究生。我认为我在这方面处于一个很好的位置,因为我已经编程了好几年并且目前正在开始一个自然科学的硕士类(class)。目标是在一两个月内对此进行简短的介绍。
在我看来,除了源代码控制的明显优势外,DVCS 目前为研究生的日常生活提供了以下改进:
这是最大的。从观察 DVCS 实践可以明显看出,廉价分支主要鼓励新功能的实验。科学编程就是关于实验的。可以创建不同的分支来调整参数或算法。这一点尤其重要,因为大多数科学代码在他们的一生中都没有见过一次重构(大多数研究生甚至不知道它是什么),所以能够去不同的分支会给典型的疯狂带来一些方法。快速提交也可能意味着使用提交注释作为实验室笔记本的替代品。计算结果可以标记为特定的提交哈希码,以进行可重复的研究。
由于当今大多数科学代码都在某种集群上运行,因此 DVCS 可以用作某种更高级的 Rsync,许多人已经使用它来将“生产”代码推送到 HPC 集群。这与分支相结合,无需离开即可轻松运行多个版本的代码
需要我多说?有多位作者的论文就像小型开源项目一样运行。当作者都用 LaTex 写作时,论文上的协作应该是一种自然的契合,如果写作是用 Word 之类的东西完成的,则会增加额外的复杂性。这是提交评论可能发挥更大作用的地方。
我的问题是,您认为 DVCS 可以为科学程序员做出什么贡献?我看到社区中有很多关于转向源代码控制的讨论,但大多数仍在研究 Subversion。根据我的粗略笔记,听起来 DVCS 应该是新研究生的完美工作流程范式。我的想法有问题吗?或者科学编码只是落后太多甚至没有听说过 DVCS 工具?
有关的:
最佳答案
培训是一个真正的问题。我认识不少粒子物理学家(具有大型编程项目的大科学),他们对源代码控制的总知识是如何运行 cvs checkout
、 cvs update
和 cvs commit
的原始版本。
是的,CVS。我认识一位软件组负责人,他因为这些人而推迟转向 Subversion。
在下一层技能中,他们还知道 diff
和 stat
命令以及如何指定分支或标签,但可能会避免创建或 merge 分支。
如果您计划引入 DVCS,请计划一个密集的、持续的培训和支持计划。科学家(或至少是物理学家)通常很少受过计算机科学方面的正式培训,并且可能对软件过程只有最模糊的概念。
关于git - DVCS 如何帮助科学编程?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/792249/