Je ne sais pas si c'était une blague, mais une fois que j'ai lu ce que l'on appelle une définition formelle d'un fichier dans un système de versioning tel que git, hg ou svn. C'était quelque chose comme un objet mathématique comme un homéomorphisme. Était-ce une plaisanterie ou y a-t-il vraiment une théorie informatique sur les systèmes de version et les mathématiques de VCS?
12
Réponses:
Vous pensez à un tweet d'Isaac Wolkerstorfer (@agnoster) :
Malheureusement, c'est une blague. Comme l'auteur l'a écrit sur Quora :
Cela a été discuté sur Programmers Stack Exchange et sur Mathematics Stack Exchange .
Blague à part, il y a eu un travail de formalisation du contrôle de version. Un effort qui allie théorie et pratique est le travail sur la théorie des patchs de David Roundy sur Darcs . L'objectif principal de la théorie est de modéliser la fusion et, en particulier, la résolution des conflits. Le wiki Darcs a une introduction à la théorie et quelques pointeurs ainsi qu'une bibliographie (non maintenue si obsolète si vous voulez une vue récente sur le sujet, mais il énumère un document d'enquête de 2009 de Petr Baudiš ) et une liste de conférences ( qui comprend du matériel plus récent). Il y a aussi un wikibook . Un article fondamental est Une approche de principe pour le contrôle de versionpar Andres Löh, Wouter Swierstra et Daan Leijen3 .
La théorie des patchs conduit à un modèle catégorique, qui a été plus récemment exploré dans A Théorie catégorique des patchs de Samuel Mimram et Cinzia Di Giusto et Homotopical Patch Theory de Carlo Angiuli, Ed Morehouse, Daniel R. Licata et Robert Harper . Dans le travail de Mimram et Di Giusto, le modèle a des fichiers en tant qu'objets et des correctifs en tant que morphismes. Je pense que cela fait de la fusion d'une branche un foncteur - un endofoncteur si vous travaillez dans un seul référentiel. «Endofuncteur homéomorphe» n'a pas de sens pour moi. Avec la théorie de l'homotopie impliquée, les sous-variétés d'un espace de Hilbert pourraient ne pas être si éloignées ...
la source
Bien sûr, il existe un formalisme mathématique pour les systèmes de contrôle de version. Il existe un formalisme mathématique pour pratiquement tous les algorithmes de CS. Il existe plusieurs formalismes pour beaucoup. Il n'y a pas de relation 1-1 entre les formalismes et les systèmes qu'ils modélisent . Les modèles peuvent aller du simple au complexe. Voici un exemple pour VCS / SCM également par Swierstra, non encore cité.
SCM présente également de nombreuses similitudes avec le concept des «univers / chronologies parallèles» et des voyages dans le temps parfois utilisés en science-fiction. Il capture l'état du système en évolution à différents moments ou «instantanés». Il y a des "branches" et des "fusions". Voir également les délais .
la source