I rami di Git, infatti, sono "endofunctor omeomorfi che mappano le sottomanifold di uno spazio di Hilbert"?


51

Come sappiamo tutti:

Git diventa più facile quando si capisce che i rami sono endofunctor omeomorfi che mappano le sottomanifold di uno spazio di Hilbert

Che sembra un gergo, ma d'altra parte,

Tutto sommato, una monade in X è solo un monoide nella categoria degli endofunctor di X, con il prodotto × sostituito dalla composizione degli endofunctor e dall'unità impostata dall'identificatore endofunctor.

è divertente perché è vero .

Posso evitare di unire errori leggendo questo semplice testo ?


9
Come appassionato di git e qualcuno che ha un Master in matematica applicata, sospetto che la risposta sia "No".
joshin4colours,

1
Sembra che qualcuno abbia provato a leggere un libro di matematica, ma non ci sia riuscito.
tp1

11
Non capisco perché le persone votino per chiudere sulla base del fatto che ciò che chiedo non è chiaro. Sto chiedendo se la frase che ho citato sia reale. (La frase che ho citato è molto diffusa, come puoi confermare con Google.)
Larry OBrien,

2
lettura consigliata: discuti di questo $ {blog}
gnat il

5
Una volta che hai passato un po 'di tempo a cercare di capire il significato di quella frase, Git potrebbe davvero sembrare relativamente più semplice da capire rispetto a prima ...
stakx,

Risposte:


63

È uno scherzo, che si basa sullo scherzo della monade, ma in realtà senza ottenere lo scherzo della monade.

Lo scherzo della monade è divertente su tre livelli:

  1. cerca di spiegare il gergo matematico astratto con un gergo matematico ancora più, che è ancora più astratto
  2. tuttavia, la spiegazione è in realtà corretta
  3. e una volta che ti immergerai più a fondo nella teoria delle categorie, inizierai effettivamente a vedere le monadi come "solo un monoide nella categoria degli endofunctor"

La cosa Git, tuttavia, è semplicemente incomprensibile a caso. Ha lo scopo di assomigliare allo scherzo della monade, e potrebbe anche essere un jab alla teoria delle patch di Darcs, ma fondamentalmente, la persona che ha fatto lo scherzo non ha capito lo scherzo della monade.

fonti:

Questo è il tweet originale contenente la citazione :

Wil Shipley (@wilshipley) : dolce dio che odio git.

Isaac Wolkerstorfer (@agnoster) : @wilshipley git diventa più facile una volta che si ha l'idea di base che i rami sono endofunctor omeomorfi che mappano le sotto-cartelle di uno spazio di Hilbert.

E questo è un commento su Quora dell'autore originale del tweet :

Per confermare ciò che Leo ha detto, era inteso come uno scherzo. [...]

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 git guru ai novizi possano finire per sembrare imperscrutabili incomprensibili.

Non è destinato ad avere un significato più profondo. [...]

Il Leo a cui si riferisce è un altro risponditore nello stesso thread, un matematico, che sostanzialmente spiega perché questa è una sciocchezza. (Gli spazi di Hilbert sono continui, patch e rami sono discreti.)

Spiega anche di essere stato ispirato da questo post del blog (A Guide to GIT che utilizza analogie spaziali) , che in realtà ha senso.


15
È deludente.
Larry OBrien,

3
@amon: ho aggiunto una citazione dell'autore di quella battuta, in cui spiega che ogni senso che tale affermazione potrebbe potenzialmente avere è puramente casuale: "I tentativi di analizzarla in questo modo dovrebbero essere inutili, ma a causa di un bug nella realtà, tu può effettivamente adattarsi a qualsiasi frase sufficientemente ondulata se ci provi abbastanza ".
Jörg W Mittag,

1
+1 per il ragionamento discreto vs continuo per escludere perché questa affermazione non è corretta :)
joshin4colours,

9
Ho sempre supposto che l'autore della battuta avesse preso la battuta della monade ma che volutamente scendesse a essere incomprensibile come parodia. Una di quelle cose che iniziano plausibili e diventano costantemente meno così fino a quando solo alla fine puoi essere sicuro che sia incomprensibile. Sembra inesprimibile concludere che non ha preso la battuta della monade.
psr

1
Potresti trovare questa spiegazione git bisect utile per spiegare la battuta. Nota l'autore.

8

È uno scherzo, come confermato dall'autore e la risposta di Jörg W Mittag spiega in modo più dettagliato.

Ma la verità può essere più strana della finzione ...

C'è stato un lavoro per formalizzare il controllo delle versioni, in particolare la teoria delle patch di David Roundy, che è la base di Darcs (un sistema di controllo della versione distribuito che ha preceduto il più popolare Bazaar, Git e Mercurial di un paio d'anni ma non ha mai raggiunto la loro popolarità). L'obiettivo principale della teoria è quello di 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 . Una carta fondamentale èUn approccio di principio al controllo della versione di 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. E con la teoria dell'omotopia coinvolta (un concetto dal calcolo - questo è il ramo della matematica che studia cose come varietà e spazi di Hilbert - che è stato recentemente applicato a un modello fondamentale di matematica chiamatoteoria del tipo di omotopia ), le sotto-cartelle di uno spazio di Hilbert potrebbero non essere così lontane ...


Inoltre, Darcs è scritto in Haskell, quindi è costruito su monadi. :-)
Wyzard
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.