我正在做一些初步的工作来调查DVCS (如Git,Hg,Bazar)如何帮助科学编程的过程,特别是对研究生来说。我认为我在这方面处于一个相当好的位置,因为我已经编程了好几年,目前正在开始一个自然科学硕士课程。我们的目标是在一两个月内做一次简短的介绍。
据我所见,除了源代码管理的明显优势外,DVCS目前还为研究生的日常生活提供了以下改进:
这是个大案子。从观察DVCS的实践可以清楚地看出,廉价的分支主要鼓励新特性的实验。科学编程是关于实验的。可以创建不同的分支来调整参数或算法。这一点特别重要,因为大多数科学代码在他们的一生中都没有看到任何重构(大多数研究生甚至不知道是什么),所以去不同的分支的能力会给典型的疯狂带来一些方法。快速提交也可能意味着使用提交注释作为实验室笔记本的代理。计算结果可以标记为特定的提交哈希码,以便进行可重复的研究。
由于当今大多数科学代码都是在某种集群上运行的,因此DVCS可以用作某种更高级的Rsync,许多人已经使用它将“生产”代码推送到HPC集群。这与分支结合在一起,可以轻松地运行多个版本的代码,而不会离开。
我还需要再说几句吗?有多个作者的论文就像小的开源项目一样运行。当作者都用LaTex写作时,论文上的协作应该是一种自然的适合,如果以类似Word的方式完成,还会带来额外的复杂性。这就是提交注释可能发挥更大作用的地方。
我的问题是,你认为DVCS能为科学程序员贡献什么?我在社区中看到了很多关于源代码控制的讨论,但大多数人仍然在研究颠覆。从我粗略的笔记听起来,DVCS应该是研究生的完美工作模式。我的想法有缺陷吗?还是科学编码太落后,甚至没有听说过DVCS工具?
相关信息:
发布于 2009-04-27 14:58:52
培训是一个真正令人关切的问题。我认识相当多的粒子物理学家(拥有大型编程项目的大型科学),他们在源代码管理方面的全部知识是如何运行cvs checkout、cvs update和cvs commit的幼稚版本。
是的CVS。我认识一位软件小组的领导,他因为这些人而推迟了颠覆的行动。
在下一层技能中,他们还知道diff和stat命令以及如何指定分支或标记,但可能会避免创建或合并分支。
如果你打算引进一个DVCS,计划一个密集的,正在进行的培训和支持计划。科学家(或者至少是物理学家)通常很少受过计算机科学方面的正规训练,而且对软件过程的概念可能非常模糊。
发布于 2009-04-27 05:56:09
关于你的要点:
但这也意味着,你必须有某种政策,才能让任何特定的工作“聚在一起”,整合到一个存储库中,这并不意味着只有一个“中央”基础:人们可以想象几个大型项目的中央回购。不过,这需要政府(不要低估)。
而且,“合并”过程可能会相当困难,因为您的主要第一点是:
对你的其他观点的快速评论:
发布于 2009-04-27 04:49:20
DVCS用于科学编程的一个大问题是二进制数据。科学编程通常需要输入/输出巨大的文件,而且我所知道的每一个DVCS (bzr、hg、git)的性能都会很快被扼杀。这是目前svn更好的地方之一。
我认为DVCS对于论文也是非常有用的,但这意味着你的合作者也知道DVCS。
https://stackoverflow.com/questions/792249
复制相似问题