我正在做一些初步工作,以调查 DVCS(如 Git、Hg、Bazar 之类)如何在科学编程过程中提供帮助,尤其是对研究生而言。我认为我在这方面处于非常有利的位置,因为我已经编程了好几年,目前正在开始一个自然科学的硕士课程。目标是在一两个月内对此进行简短的介绍。
在我看来,除了源代码控制的明显优势外,DVCS 目前还为研究生的日常生活提供了以下改进:
分枝:
这是最大的。从观察 DVCS 实践可以清楚地看出,廉价分支主要鼓励新功能的实验。科学编程就是实验。可以创建不同的分支来调整参数或算法。这一点尤其重要,因为大多数科学代码在他们的一生中都没有看到过一次重构(大多数研究生甚至不知道它是什么),所以去不同分支的能力会给典型的疯狂带来一些方法。快速提交也可能意味着使用提交评论作为实验室笔记本的替代品。计算结果可以标记为特定的提交哈希码,以进行可重复的研究。
推送到服务器:
由于现在大多数科学代码都在某种集群上运行,因此 DVCS 可以用作某种更高级的 Rsync,许多人已经在使用它来将“生产”代码推送到 HPC 集群。这与分支相结合,无需离开即可轻松运行多个版本的代码
论文合作:
需要我多说?拥有多个作者的论文的运行方式与小型开源项目完全一样。当作者都用 LaTex 写作时,论文上的协作应该是自然而然的,如果写作是用 Word 之类的东西完成的,则会带来额外的复杂性。这是提交评论可能发挥更大作用的地方。
我的问题是,您认为 DVCS 可以为科学程序员做出什么贡献?我在社区中看到很多关于转向源代码控制的讨论,但大多数人仍在研究 Subversion。从我粗略的笔记来看,听起来 DVCS 应该是新研究生的完美工作流程范例。我的想法有问题吗?或者科学编码只是落后太多,甚至没有听说过DVCS 工具?
有关的: