冗談かどうかはわかりませんが、git、hg、svnなどのバージョン管理システムでファイルの正式な定義と呼ばれるものを読んだことがあります。それは同相写像のような数学的オブジェクトのようなものでした。それは冗談だったのですか、それとも、バージョン管理システムとVCSの数学についてのコンピューターサイエンス理論があるのですか?
冗談かどうかはわかりませんが、git、hg、svnなどのバージョン管理システムでファイルの正式な定義と呼ばれるものを読んだことがあります。それは同相写像のような数学的オブジェクトのようなものでした。それは冗談だったのですか、それとも、バージョン管理システムとVCSの数学についてのコンピューターサイエンス理論があるのですか?
回答:
Isaac Wolkerstorfer(@agnoster)によるツイートを考えています:
ブランチは、ヒルベルト空間の部分多様体をマッピングする同相の内関手であるという基本的な考え方を理解すると、gitは簡単になります。
残念ながら、それは冗談です。著者はQuoraの上で書きました:
それはしっかりと舌のように意図されていました。私は実際にgitが大好きで、その複雑さは非常に誇張されていると思います。同時に、私はgitの達人から初心者へのアドバイスが、不可解な冗談のように聞こえるという事実に共感しています。
より深い意味を持つことを意図していません。この方法で分析することは無益ですが、実際にはバグがあるため、一生懸命努力すれば、実際に手で波打つようなステートメントを作成することができます。
これは、プログラマスタック交換および数学スタック交換で議論されています。
冗談は別として、バージョン管理を形式化する作業がありました。理論と実践を結び付ける取り組みの1つは、Darcsの David Roundyによるパッチ理論の研究です。理論の主な目的は、マージ、特に競合の解決をモデル化することです。Darcsのwikiには理論といくつかのポインタを紹介しているだけでなく、参考文献(あなたが主題に関する最近のビューをしたい場合はメンテナンスされていないので古いが、それはリストを行いペトルBaudišによる2009年の調査紙)とのリスト会談(最新の資料が含まれます)。ウィキブックもあります。独創的な論文の1つは、バージョン管理への原則的アプローチです。AndresLöh、Wouter Swierstra、Daan Leijen3による。
パッチ理論はカテゴリモデルにつながります。これは、最近ではSamuel MimramとCinzia Di Giustoによるパッチのカテゴリ理論と、Carlo Angiuli、Ed Morehouse、Daniel R. Licata、Robert Harperによるホモトピックパッチ理論で検討されています。Mimram and Di Giustoの研究では、モデルにはオブジェクトとしてのファイルと、射としてのパッチがあります。これにより、ブランチのマージがファンクターになります。単一のリポジトリで作業している場合はエンドファンクターになります。「同相内視鏡機能」は私には意味がありません。ホモトピー理論が関与していると、ヒルベルト空間の部分多様体はそれほど遠くないかもしれません...
もちろん、バージョン管理システムには数学的形式があります。CSのほぼすべてのアルゴリズムには数学的形式があります。多くの人には複数の形式があります。形式とそれらがモデル化するシステムの間に1-1の関係はありません。モデルは単純なものから複雑なものまでさまざまです。これもSwierstraによるVCS / SCMの例ですが、まだ引用されていません。
SCMには、「パラレルユニバース/タイムライン」およびタイムトラベルの概念と多くの類似点があります SFで時々使用される。さまざまな時点または「スナップショット」で進化するシステムの状態をキャプチャします。「ブランチ」と「マージ」があります。タイムラインも参照してください。