Existe uma definição CS formal de VCS e versões de arquivos?


12

Não sei se foi uma piada, mas uma vez li o que foi referido como uma definição formal de um arquivo em um sistema de versão, como git, hg ou svn. Era algo como um objeto matemático como um homeomorfismo. Isso foi uma piada ou existe realmente uma teoria da ciência da computação sobre sistemas de versão e a matemática do VCS?


2
Mudei homemorfismo para homeomorfismo, mas não tenho idéia de onde procurar topologia nesse contexto. Você quis dizer homomorfismo?
frafl

3
Algo como en.wikibooks.org/wiki/Understanding_Darcs/Patch_theory ou projects.haskell.org/camp ? É sempre uma boa idéia procurar haskell quando se trata de teoria e programação. Eu posso transformar isso em uma resposta, mas acho que existem pessoas com um melhor conhecimento dessa área.
frafl


Você não cria algo tão complexo e crítico como um sistema de versão sem uma forte formalização do que está fazendo. Às vezes, as pessoas que atacam o caminho podem ser gênios, mas geralmente são tolos.
babou

Respostas:


11

Você está pensando em um tweet de Isaac Wolkerstorfer (@agnoster) :

O git fica mais fácil depois que você obtém a idéia básica de que os ramos são endofuncores homeomórficos, mapeando subvariedades de um espaço de Hilbert.

Infelizmente, é uma piada. Como o autor escreveu no Quora :

Foi concebido como firme na língua. Na verdade, eu amo o git, e acho que sua complexidade é exagerada. Ao mesmo tempo, sou solidário com o fato de que os conselhos de git gurus a novatos podem parecer bobagens inescrutáveis.

Não pretende ter um significado mais profundo. As tentativas de analisá-lo dessa maneira devem ser fúteis, mas, devido a um erro na realidade, você pode realmente fazer com que qualquer afirmação suficientemente ondulada seja adequada se você se esforçar o suficiente.

Isso foi discutido no Programmers Stack Exchange e no Mathematics Stack Exchange .


Brincadeira à parte, houve um trabalho de formalização do controle de versão. Um esforço que alia teoria e prática é o trabalho sobre teoria dos remendos, de David Roundy, sobre Darcs . O principal objetivo da teoria é modelar a fusão e, em particular, a resolução de conflitos. O wiki do Darcs tem uma introdução à teoria e alguns indicadores, além de uma bibliografia (não mantida tão desatualizada se você quiser uma visão recente sobre o assunto, mas lista um artigo de pesquisa de 2009 de Petr Baudiš ) e uma lista de palestras ( que inclui material mais recente). Há também um wikibook . Um artigo seminal é Uma Abordagem Principiada ao Controle de Versãopor Andres Löh, Wouter Swierstra e Daan Leijen3 .

A teoria dos remendos leva a um modelo categórico, que foi explorado mais recentemente em Uma teoria categórica de remendos por Samuel Mimram e Cinzia Di Giusto e Teoria dos remendos homotópicos por Carlo Angiuli, Ed Morehouse, Daniel Moreira, Daniel R. Licata e Robert Harper . No trabalho de Mimram e Di Giusto, o modelo tem arquivos como objetos e patches como morfismos. Eu acho que faz da fusão de uma ramificação um functor - um endofunctor se você estiver trabalhando em um único repositório. "Endofuncor homeomórfico" não faz sentido para mim. Com a teoria da homotopia envolvida, as subvariedades de um espaço de Hilbert podem não estar tão distantes ...


3

Claro que existe um formalismo matemático para sistemas de controle de versão. Existe um formalismo matemático para praticamente todos os algoritmos no CS. Existem vários formalismos para muitos. Não existe uma relação 1-1 entre formalismos e os sistemas que modelam . Os modelos podem variar de simples a complexos. Aqui está um exemplo para VCS / SCM também por Swierstra, ainda não citado.

O SCM também possui muitas semelhanças com o conceito de "universos / linhas do tempo paralelas" e viagens no tempo às vezes usadas em ficção científica. Ele captura o estado do sistema em evolução em diferentes momentos ou "instantâneos". Existem "ramificações" e "mesclas". Veja também linhas do tempo .

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.