Apakah ada definisi formal CS tentang VCS dan versi file?

12

Saya tidak tahu apakah itu lelucon, tetapi begitu saya membaca apa yang disebut sebagai definisi formal dari file dalam sistem versi seperti git, hg atau svn. Itu sesuatu seperti objek matematika seperti homeomorfisme. Apakah itu lelucon atau benar-benar ada teori ilmu komputer tentang sistem versi dan matematika VCS?

Niklas
sumber
2
Saya mengubah homemorfisme menjadi homeomorfisme, namun saya tidak memiliki petunjuk, di mana mencari topologi dalam konteks ini. Apakah maksud Anda homomorfisme?
frafl
3
Sesuatu seperti en.wikibooks.org/wiki/Understanding_Darcs/Patch_theory atau projects.haskell.org/camp ? Itu selalu ide yang baik untuk mencari haskell ketika datang ke teori dan pemrograman. Saya bisa mengubah ini menjadi jawaban, tetapi saya pikir ada orang-orang dengan pengetahuan yang lebih baik tentang bidang ini.
frafl
Anda tidak membangun sesuatu yang kompleks dan kritis seperti sistem versi tanpa formalisasi yang kuat dari apa yang Anda lakukan. Orang-orang yang meretas mereka kadang-kadang mungkin jenius, tetapi biasanya mereka bodoh.
babou

Jawaban:

11

Anda memikirkan tweet oleh Isaac Wolkerstorfer (@agnoster) :

git semakin mudah setelah Anda mendapatkan gagasan dasar bahwa cabang adalah endofunctor homeomorfis pemetaan submanifold dari ruang Hilbert.

Sayangnya, ini hanya lelucon. Seperti yang penulis tulis di Quora :

Itu dimaksudkan sebagai tegas-di-pipi. Saya sebenarnya suka git, dan saya pikir kerumitannya sangat berlebihan. Pada saat yang sama, saya bersimpati pada kenyataan bahwa saran dari git gurus kepada pemula dapat berakhir seperti omong kosong yang tidak dapat dipahami.

Itu tidak dimaksudkan untuk memiliki makna yang lebih dalam. Upaya untuk menganalisanya dengan cara ini seharusnya sia-sia, tetapi karena bug pada kenyataannya, Anda benar-benar dapat membuat pernyataan bergelombang yang cukup pas jika Anda berusaha cukup keras.

Ini telah dibahas di Programer Stack Exchange dan di Mathematics Stack Exchange .


Lelucon, ada pekerjaan memformalkan kontrol versi. Salah satu upaya yang mendukung teori dan praktik adalah bekerja pada teori tambalan oleh David Roundy on Darcs . Tujuan utama dari teori ini adalah untuk memodelkan penggabungan dan, khususnya, penyelesaian konflik. The Darcs wiki memiliki pengenalan teori dan beberapa petunjuk serta bibliografi (terawat sehingga usang jika Anda ingin melihat baru-baru ini pada subjek, tetapi tidak daftar kertas survei 2009 oleh Petr Baudis ) dan daftar pembicaraan ( yang mencakup materi yang lebih baru). Ada juga wikibook . Satu makalah mani adalah A Principled Approach to Version Controloleh Andres Löh, Wouter Swierstra dan Daan Leijen3 .

Teori patch memang mengarah ke model kategorikal, yang baru-baru ini dieksplorasi dalam A Categorical Theory of Patches oleh Samuel Mimram dan Cinzia Di Giusto dan Homotopical Patch Theory oleh Carlo Angiuli, Ed Morehouse, Daniel R. Licata dan Robert Harper . Dalam karya Mimram dan Di Giusto, model memiliki file sebagai objek dan tambalan sebagai morfisme. Saya pikir itu membuat menggabungkan cabang sebagai functor - endofunctor jika Anda bekerja dalam repositori tunggal. "Homeomorphic endofunctor" tidak masuk akal bagi saya. Dengan teori homotopy terlibat, submanifold dari ruang Hilbert mungkin tidak begitu jauh ...

Gilles 'SANGAT berhenti menjadi jahat'
sumber
3

Tentu saja ada formalisme matematika untuk sistem kontrol versi. Ada formalisme matematika untuk hampir setiap algoritma dalam CS. Ada banyak formalisme bagi banyak orang. Tidak ada hubungan 1-1 antara formalisme dan sistem yang mereka modelkan . Model dapat berkisar dari yang sederhana hingga kompleks. Berikut adalah contoh untuk VCS / SCM juga oleh Swierstra, belum dikutip.

SCM juga memiliki banyak kemiripan dengan konsep "paralel universe / timeline" dan perjalanan waktu kadang - kadang digunakan dalam fiksi ilmiah. Ini menangkap keadaan sistem yang berkembang pada waktu yang berbeda atau "snapshots". Ada "cabang" dan "gabungan". Lihat juga garis waktu .

vzn
sumber