Esiste una definizione CS formale di VCS e versioni dei file?


12

Non so se fosse uno scherzo, ma una volta ho letto quella che è stata definita una definizione formale di un file in un sistema di controllo delle versioni come git, hg o svn. Era qualcosa di simile a un oggetto matematico come un omeomorfismo. Era uno scherzo o esiste davvero una teoria informatica sui sistemi di versioning e sulla matematica di VCS?


2
Ho cambiato l'omemorismo in omeomorfismo, tuttavia non ho idea di dove cercare la topologia in questo contesto. Intendevi omomorfismo?
frafl

3
Qualcosa come en.wikibooks.org/wiki/Understanding_Darcs/Patch_theory o projects.haskell.org/camp ? È sempre una buona idea cercare haskell quando si tratta di teoria e programmazione. Posso trasformarlo in una risposta, ma penso che ci siano persone con una migliore conoscenza di quest'area.
frafl


Non costruisci qualcosa di così complesso e critico come un sistema di versioning senza una forte formalizzazione di ciò che stai facendo. Le persone che fanno a modo loro a volte possono essere dei geni, ma di solito sono degli sciocchi.
babou,

Risposte:


11

Stai pensando a un tweet di Isaac Wolkerstorfer (@agnoster) :

git diventa più facile una volta che si ha l'idea di base che i rami sono endofunctor omeomorfi che mappano le sottomanifold di uno spazio di Hilbert.

Sfortunatamente, è uno scherzo. Come ha scritto l'autore su Quora :

Era inteso come saldamente ironico. In realtà adoro Git e penso che la sua complessità sia molto esagerata. Allo stesso tempo, sono solidale con il fatto che i consigli dei guru guru ai principianti possano finire per sembrare imperscrutabili incomprensibili.

Non è destinato ad avere un significato più profondo. I tentativi di analizzarlo in questo modo dovrebbero essere inutili, ma a causa di un bug in realtà, puoi effettivamente rendere qualsiasi dichiarazione sufficientemente ondulata adatta se ti impegni abbastanza duramente.

Questo è stato discusso su Scambio stack programmatori e Scambio stack matematica .


Scherzo a parte, c'è stato un lavoro per formalizzare il controllo delle versioni. Uno sforzo che affianca la teoria e la pratica è il lavoro sulla teoria delle patch di David Roundy su Darcs . L'obiettivo principale della teoria è modellare la fusione e, in particolare, la risoluzione dei conflitti. La wiki di Darcs ha un'introduzione alla teoria e alcuni suggerimenti, nonché una bibliografia (non mantenuta così obsoleta se si desidera una visione recente sull'argomento, ma elenca un documento del sondaggio del 2009 di Petr Baudiš ) e un elenco di discorsi ( che include materiale più recente). C'è anche un wikibook . Un documento fondamentale è un approccio di principio al controllo delle versionidi Andres Löh, Wouter Swierstra e Daan Leijen3 .

La teoria delle patch porta a un modello categorico, che è stato recentemente esplorato in Una teoria categorica delle patch di Samuel Mimram e Cinzia Di Giusto e nella teoria omotopica delle patch di Carlo Angiuli, Ed Morehouse, Daniel R. Licata e Robert Harper . Nell'opera di Mimram e Di Giusto, il modello ha file come oggetti e patch come morfismi. Penso che ciò rende la fusione di un ramo un funzione - un endofunctor se stai lavorando in un singolo repository. "Endofunctor omeomorfo" non ha senso per me. Con la teoria dell'omotopia coinvolta, le sotto-cartelle di uno spazio di Hilbert potrebbero non essere così lontane ...


3

Naturalmente esiste un formalismo matematico per i sistemi di controllo delle versioni. Esiste un formalismo matematico praticamente per ogni algoritmo in CS. Esistono molteplici formalismi per molti. Non esiste una relazione 1-1 tra formalismi e sistemi che modellano . I modelli possono variare da semplici a complessi. Ecco un esempio di VCS / SCM anche di Swierstra, non ancora citato.

SCM ha anche molte somiglianze con il concetto di "universi / linee temporali parallele" e viaggi nel tempo a volte usati nella fantascienza. Cattura lo stato del sistema in evoluzione in momenti diversi o "istantanee". Ci sono "rami" e "fusioni". Vedi anche le linee temporali .

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.