12

私は、DVCS (Git、Hg、Bazar など) が、特に大学院生の科学的プログラミングのプロセスでどのように役立つかを調査するための準備作業を行っています。私はかなりの数年間プログラミングをしており、現在自然科学の修士課程を開始しているので、これについては非常に良い立場にあると思います。目標は、これに関する短いプレゼンテーションを 1 ~ 2 か月以内に行うことです。

私が見る限り、ソース管理の明らかな利点は別として、DVCS は現在、大学院生の日常生活に次のような改善をもたらします。

  1. 分岐:

    これは大きなものです。DVCS の実践を観察すると、安価な分岐が主に新機能の実験を促進することが明らかです。科学的プログラミングはすべて実験です。パラメータやアルゴリズムを微調整するために、さまざまなブランチを作成できます。これは特に重要です。なぜなら、ほとんどの科学的コードは生涯を通じてリファクタリングの単一のアオタを見たことがないためです (ほとんどの大学院生はそれが何であるかさえ知りません)。高速コミットは、ラボ ノートブックの代わりにコミット コメントを使用することも意味します。計算結果は、再現可能な研究のために特定のコミット ハッシュコードにタグ付けできます。

  2. サーバーへのプッシュ:

    現在、ほとんどの科学的コードはある種のクラスターで実行されているため、DVCS はある種のより高度な Rsync として使用できます。これは、多くの人が既に「実稼働」コードを HPC クラスターにプッシュするために使用しています。これを分岐と組み合わせて、終了することなく複数のバージョンのコードを簡単に実行できます

  3. 論文の共同研究:

    もっと言う必要がありますか?複数の著者による論文は、小規模なオープン ソース プロジェクトとまったく同じように運営されます。著者全員が LaTex で書いている場合、論文での共同作業は自然に適合するはずですが、Word などで書いている場合はさらに複雑になります。これは、コミット コメントがより大きな役割を果たす可能性がある場所です。

私の質問は、DVCS は科学プログラマーにどのような貢献ができると思いますか? コミュニティではソース管理に移行するという話がたくさん見られますが、ほとんどはまだ Subversion を検討中です。私のざっとしたメモから、DVCS は新しい大学院生にとって完璧なワークフロー パラダイムであるように思えます。私の考えは間違っていますか?それとも、科学的コーディングは単にDVCS ツールのことを耳にするほど遅れているのでしょうか?


関連している:

4

3 に答える 3

4

トレーニングは本当に心配です。cvs checkout私はかなりの数の素粒子物理学者 (大規模なプログラミング プロジェクトを伴う大規模な科学)を知っていcvs updateますcvs commit

はい、CVSです。私は、これらの人々のために Subversion への移行を延期したソフトウェア グループのリーダーを知っています。

diffスキルの次の段階では、コマンドとコマンド、およびブランチまたはタグの指定方法も知っていstatますが、ブランチの作成またはマージを避ける場合があります。

DVCS の導入を計画している場合は、集中的で継続的なトレーニングとサポート プログラムを計画してください。科学者 (または少なくとも物理学者) は通常、コンピューター サイエンスの正式なトレーニングをほとんど受けておらず、ソフトウェア プロセスについて漠然とした概念しか持っていない可能性があります。

于 2009-04-27T14:58:52.000 に答える
2

あなたの主なポイントについて:

  • 「DVCS の明らかな利点」: 特に、外部接続を許可しないという厳しい IT ルールが適用される可能性があるアカデミック環境では、DVCS を使用するとローカルリポジトリを使用できることを繰り返します。つまり、プロジェクトの全履歴にアクセスするために 1 つの中央リポジトリに「接続」する必要はなく、科学プログラマーに対する DVCS の主な貢献がそこにある可能性があります。

しかし、それはまた、特定の作業を「まとめて」1 つのリポジトリに統合できるようにするために、何らかのポリシーが必要であることを意味します。これは、「中央」ベースが 1 つしかないという意味ではありません。いくつかの中央リポジトリを想像することができます。いくつかの大きなプロジェクトのために。それでも、それには管理が必要です(過小評価しないでください)。

そして、その「統合」プロセスは、主な最初のポイントのために非常に難しい場合があります。

  • 分岐: 学生は慎重に分岐する必要があります(とても簡単なので)。「toto」、「Monday」、「myName」、...という名前のブランチのシェアを見ました。別の(より中央の)レポに公開されたら、それらをどうするべきですか?1 つの共通コードを完成させるために 20 以上のブランチをマージする場合、プロセスはすぐにエラーが発生しやすくなります。

他の点についての簡単なコメント:

  • 展開 (「サーバーへのプッシュ」と呼ばれるもの): はい DVCS はある種の展開に使用できますが、それは、ある種の「リリース コンポーネント」 (プッシュするファイルのセット)を含めるようにリポジトリを整理したことを意味します。サーバー) であり、それらをバージョン管理しています。また、リリース管理には、DVCS ですべてを記憶することができない他の多くの手順が含まれます。たとえば、構成ファイル内の変数をターゲット サーバーに適合した実際の値 (ポート番号、ローカル パスなど) に置き換える非可変化プロセスなどです。 . ブランチを通じて直接評価される構成ファイルの管理を試みることはできますが、私の経験では、すぐに複雑すぎて従うことができなくなります。

  • コラボレーション: DVCS に予約されていません。(VCSもそれらを提供します)。一部の形式 (Word 文書) では、内部リビジョン システムの方が効率的であることに注意してください。

于 2009-04-27T05:56:09.977 に答える
1

科学的プログラミングのための DVCS の大きな問題の 1 つは、バイナリ データです。科学的プログラミングでは、巨大なファイルの入出力が必要になることがよくあります。これにより、私が知っているすべての DVCS (bzr、hg、git) でパフォーマンスが非常に速く低下します。これは、現在 svn がはるかに優れている領域の 1 つです。

DVCS は論文にも非常に役立つと思いますが、それは共同研究者も DVCS を知っていることを意味します。

于 2009-04-27T04:49:20.577 に答える