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?
terminology
reference-request
Niklas
fonte
fonte
Respostas:
Você está pensando em um tweet de Isaac Wolkerstorfer (@agnoster) :
Infelizmente, é uma piada. Como o autor escreveu no Quora :
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 ...
fonte
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 .
fonte