Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Git DVCS如何帮助科学编程?_Git_Dvcs_Scientific Computing - Fatal编程技术网

Git DVCS如何帮助科学编程?

Git DVCS如何帮助科学编程?,git,dvcs,scientific-computing,Git,Dvcs,Scientific Computing,我正在做一些前期工作,调查DVCS(如Git、Hg、Bazar)如何帮助科学编程,特别是对研究生。我认为我在这方面处于相当好的位置,因为我已经编程好几年了,目前正在开始一个自然科学硕士课程。我们的目标是在一两个月内对此做一个简短的介绍 在我看来,除了源代码控制的明显优势外,DVCS目前还为研究生的日常生活提供了以下改进: 分支: 这是最大的一个。从DVCS实践的观察可以看出,廉价的分支主要鼓励新特性的实验。科学编程就是实验。可以创建不同的分支来调整参数或算法。这一点尤其重要,因为大多数科学代码在

我正在做一些前期工作,调查DVCS(如Git、Hg、Bazar)如何帮助科学编程,特别是对研究生。我认为我在这方面处于相当好的位置,因为我已经编程好几年了,目前正在开始一个自然科学硕士课程。我们的目标是在一两个月内对此做一个简短的介绍

在我看来,除了源代码控制的明显优势外,DVCS目前还为研究生的日常生活提供了以下改进:

  • 分支:

    这是最大的一个。从DVCS实践的观察可以看出,廉价的分支主要鼓励新特性的实验。科学编程就是实验。可以创建不同的分支来调整参数或算法。这一点尤其重要,因为大多数科学代码在其一生中都没有看到过一个aota重构(大多数研究生甚至不知道它是什么),因此能够转到不同的分支会给典型的疯狂带来一些方法。快速提交还意味着使用提交注释作为实验室笔记本的代理。计算结果可以标记为特定的代码,以便进行重复性研究

  • 推送到服务器:

    由于目前大多数科学代码都在某种集群上运行,因此DVCS可以用作某种更高级的Rsync,许多人已经在使用它将“生产”代码推送到HPC集群。这与分支相结合,可以轻松运行多个版本的代码,而无需离开

  • 文件的协作:

    我还需要多说吗?有多个作者的论文就像小型开源项目一样运行。当作者都用乳胶写作时,论文上的协作应该是一种自然的配合,如果用Word之类的语言写作,则会带来额外的复杂性。这就是提交评论可能发挥更大作用的地方

  • 我的问题是,你认为DVCS能为科学程序员做出什么贡献?我在社区中看到很多关于转向源代码控制的讨论,但大多数仍在研究Subversion。从我粗略的笔记来看,DVCS似乎应该是新研究生的完美工作流程范例。我的想法有缺陷吗?或者科学编码只是太落后了,以至于听不到DVCS工具


    相关的:


      • 用于科学编程的DVCS的一个大问题是二进制数据。通常情况下,科学编程需要输入/输出巨大的文件,这会很快扼杀我所知道的每个DVC(bzr、hg、git)的性能。这是目前svn更好的一个领域


        我认为DVC对论文也很有用,但这意味着你的合作者也知道DVC。

        关于你的主要观点:

        • “DVCS的明显优势”:值得重复的是,尤其是在不允许外部连接的it规则可能很严格的学术环境中,DVCS允许使用本地存储库。这意味着您不必“连接”到一个中央回购协议来访问项目的完整历史记录,而这正是DVC对科学程序员的主要贡献
        但这也意味着您必须有某种政策,以便允许任何给定的工作“汇集”并整合到一个存储库中,这并不意味着只有一个“中心”基础:可以想象几个大型项目的几个中心回购。不过,这需要管理(不要低估)

        由于您的第一个要点,“整合”过程可能非常困难:

        • 分支:学生需要(因为这很容易)。我看到了我在名为“toto”、“星期一”、“我的名字”的分支机构中的份额……:一旦发布到另一个(更中心的)回购协议中,我们该如何处理这些?如果要合并20多个分支以最终确定一个公共代码,。。。这个过程很快就会变得容易出错
        快速评论您的其他观点:

        • 部署(您称之为“推送到服务器”):是的,DVC可以用于某种部署,但这意味着您已经组织了repo,以包括某种类型的(要推送到服务器上的文件集),并且您已经对其进行了版本连接。发布管理包括许多其他无法全部存储在DVCS中的步骤,例如,去变量化过程,在该过程中,您将配置文件中的变量替换为适合目标服务器的实际值(端口号、本地路径等)。您可以尝试通过分支直接管理这些配置文件,但根据我的经验,它很快就会变得太复杂而无法遵循

        • 协作:不保留给DVCS。(风投公司也提供这些服务)。注意,对于某些格式(Word文档),其内部修订系统可能更有效


        培训是一个真正的问题。我认识不少粒子物理学家(拥有大型编程项目的大型科学),他们对源代码管理的全部知识是如何运行
        cvs checkout
        cvs update
        cvs commit
        的原始版本

        是的,CVS。我认识一个软件团队的领导者,他因为这些人而推迟了颠覆的行动

        在下一级技能中,他们还知道
        diff
        stat
        命令以及如何指定分支或标记,但可能会避免创建或合并分支

        如果您计划引入DVCS,请计划一个强化的、持续的培训和支持计划。科学家(或至少是物理学家)通常很少接受计算机科学方面的正式培训,可能对软件过程的概念也很模糊

        不是r