在小型科学环境中提高生产率的行业惯例

时间:2010-05-09 17:20:50

标签: scientific-computing

我在美国一所大学的一个小型,独立的科学实验室工作,我注意到,与业内表面上遵循的许多实践相比,例如每天结帐到版本控制系统,使用单个IDE /编辑器的所有语言(如emacs)等,我们遵循相当粗暴的编程实践。

所以,我正在考虑将所有程序,脚本等组合在一起,并构建简化的环境以提高工作效率。我希望Stack Overflow上的人们提供同样的建议。这是我的主要计划:我使用MATLAB,C和Python脚本,我想编辑,从单个编辑器编译它们,并确保正确的版本控制。

(我希望建议的问题/事情用斜体字表示)

1]安装Cygwin,让它与Windows一起使用,这样我就可以使用git或类似的版本控制系统(有一个可以直接从windows CLI工作的DVCS,所以我可以跳过Cygwin步骤)。

2]设置emacs以使用C,Python和MATLAB文件,这样我就可以从一个编辑器(比如emacs)一次编辑和编译所有三个

(我对emacs菜单不太熟悉,但有没有办法为某些语言设置编译器的路径?我知道我可以谷歌这个,但emacs文档对我来说非常难到目前为止阅读,所以如果有人用简单的语言告诉我,我会很感激

3]在每天结束或半天开始检查代码,以便保持我的代码的正确进展路径(两个问题),

  • 你可以直接从emacs结账文件吗?

  • 有没有办法将LabVIEW文件签入DVCS,如git?

最后,我想为这个问题的相当含糊的性质道歉,并希望我会学会随着时间的推移提出更好的问题。如果人们提出他们的建议,我会很感激,并指出可以帮助我学习的任何资源。

5 个答案:

答案 0 :(得分:3)

1)git和mercurial都可以在Windows下本地运行 - 不需要Cygwin - 如果可能的话,我会避免这样的环境。

2)不明白为什么你认为你必须使用emacs。

3)您不会在一天中的特定时间或以特定频率签入代码 - 当您进行了经过测试和运行的明显更改时,您会签入。或者,如果您在自己的分支机构,只要方便。

答案 1 :(得分:2)

你走这条路很棒。以下是要添加到该列表中的一些内容:

1)在您的工作周期中添加测试。也就是说,一旦编写了某个段,其他没有工作的人就会查看代码。然后编写测试以确保新代码与其他代码很好地集成并生成您希望看到的结果,并最终使这些测试成为隔夜构建过程的一部分。

2)进行隔夜构建过程。或者至少是一些自动化过程,每当有人检查代码时重建代码。让它在该构建上运行所有测试。

答案 2 :(得分:2)

尝试遵循某种最佳实践会使您受益匪浅,但您可能会发现很多人并不真正对它们感兴趣。尝试以微妙的方式宣传这些好处,这样你就不会恐吓你的同事 - 如果他们喜欢他们所看到的,他们最终可能会采纳你的一些建议。

许多人只关心快速毕业或获得资助建议的科学环境似乎证明了一种热门的,牛仔式的编码方式。如果你可以让人们考虑到你已经赢得的质量和可重复性。

我觉得有用:

  • 始终尝试在您可以轻松测试的小子项目中破坏您的代码。每次办理登机手续时都要运行测试。您可以使用git的子模块来组合“应用程序”。
  • 如果有多个人可以提交到存储库,请使用类似astyle的内容来保持一致的格式化(可能不是Python代码的问题)。
  • 设置类似gitweb / cgit / ...的东西,这样人们就可以获得代码的tarball,并习惯了源代码控制很有用的想法。
  • 尝试在您的群组/社区中找到coding buddy。在人们容易“完成任务”的环境中进行代码审查是非常困难的,通常会在板上抛出良好的风格/常识。

答案 3 :(得分:0)

正如其他人所说,定期检查并不是非常重要。在您达到里程碑时检入(您已经对其余代码进行了更改,并且构建正确。自动构建更为重要。它们验证您已检入所有相关更改。< / p>

我认为您可能对托管源代码控制与源代码控制客户端有点混淆。 CVS,SVN,Git等客户端几乎普遍适用于Windows。托管可以从许多网络托管公司获得。这可能是一个不错的选择,因为它还可以有效地为您提供代码库的异地备份,每年约100美元。或者,您可以将服务器加载到低端PC并将其放在某个地方的壁橱中,尽管电费可能与您为托管支付的费用一样多。

对所有语言使用单个IDE并不重要,同一语言的项目之间的一致性非常重要。一种语言中的所有项目都应该具有共享编码标准。它们还应该构建在相同的编译器上,和/或在相同的解释器/ VM上运行,并为您使用的任何IDE(如果适用)提供最新的项目文件。

答案 4 :(得分:0)

  

有没有办法将LabVIEW文件签入DVCS,如git?

LabVIEW文件没有理由不在DVCS中,我正在使用Mercurial。 但是,由于LabVIEW文件被视为二进制文件,因此repo的大小会快速增长。

开箱即用LabVIEW只提供3-way merges,在需要LV-diff的两个修订版之间使用差异函数,few tweaks支持仅更改文件位置的工具(例如,重复文件名)。

将* .lvlps和* .aliases添加到忽略列表中也很重要,这些文件在另一台计算机上没有用处。