Чи існує формальне визначення CS для VCS та версій файлів?


12

Я не знаю, чи це був жарт, але одного разу я прочитав те, що називалося формальним визначенням файлу в такій версійній системі, як git, hg або svn. Це було щось на зразок математичного об'єкта, як гомеоморфізм. Це був жарт чи є насправді теорія інформатики щодо версійних систем та математики VCS?


2
Я змінив гомеморфізм на гомеоморфізм, проте не маю поняття, де шукати топологію в цьому контексті. Ви мали на увазі гомоморфізм?
frafl

3
Щось на зразок en.wikibooks.org/wiki/Understanding_Darcs/Patch_theory або projects.haskell.org/camp ? Завжди корисно шукати haskell, коли мова йде про теорію та програмування. Я можу перетворити це на відповідь, але, думаю, є люди, які краще знають цю сферу.
frafl


Ви не будуєте щось таке складне і критичне, як система версій без сильної формалізації того, що ви робите. Люди, які їх хакують, іноді можуть бути геніями, але зазвичай це дурні.
бабу

Відповіді:


11

Ви думаєте про твіт Ісаака Волкерсторфера (@agnoster) :

git стає простішим, як тільки ви зрозумієте основну думку про те, що гілки є гомеоморфними ендофайнерами, які відображають підскладки гільбертового простору.

На жаль, це жарт. Як автор писав на Quora :

Це було задумано як міцно язиком у щоку. Я насправді люблю git, і думаю, що його складність сильно перекрита. У той же час я симпатизую тому, що поради від гута-гута для новачків можуть виявитись немовби непереборними гнучками.

Це не має жодного глибшого значення. Спроби проаналізувати це таким чином мають бути марними, але через помилку насправді ви можете зробити будь-який достатньо ручний хвилястий вислів придатним, якщо постараєтесь досить наполегливо.

Про це йшлося на стеках програмістів та на обміні стеками математики .


За жартівкою, почалася робота щодо формалізації контролю версій. Одним із зусиль, що поєднує теорію та практику, є робота над теорією патчів Девідом Раундлі про Darcs . Основна мета теорії - моделювання об'єднання та, зокрема, вирішення конфліктів. У Вікі Дарка є вступ до теорії та декілька покажчиків, а також бібліографія (не збережена настільки застаріла, якщо ви хочете нещодавно переглянути цю тему, але в ній перераховано документ огляду Петра Баудіша за 2009 рік ) та список бесід ( що включає більш пізні матеріали). Також є вікікнига . Один насіннєвий документ - це принциповий підхід до контролю версійАндрес Лех, Вутер Сверштра та Даан Лейен3 .

Теорія патчів призводить до категоричної моделі, яка нещодавно була досліджена в «Категорії теорії пластирів » Семюеля Мімрама та Сінція Ді Джусто та гомотопічної теорії патчів Карло Ангіулі, Еда Мореуза, Даніеля Р. Ліката та Роберта Харпера . У роботах Мімрама та Ді Джусто модель містить файли як об'єкти та патчі як морфізми. Я думаю, що це зробить об'єднання гілки функтором - ендофанктором, якщо ви працюєте в одному сховищі. «Гомеоморфний ендофунктор» не має для мене сенсу. З участю теорії гомотопії підмножини простору Гільберта можуть бути не так далеко ...


3

Звичайно, існує математичний формалізм для систем управління версіями. Існує математичний формалізм практично для кожного алгоритму в CS. Для багатьох існує формалізм. Не існує взаємозв'язку 1-1 між формалізмами та системами, які вони моделюють . Моделі можуть варіюватися від простих до складних. Ось приклад для VCS / SCM також від Swierstra, ще не цитований.

SCM також має багато подібності з поняттям "паралельні всесвіти / часові рамки" та часові подорожі, які іноді використовуються у науковій фантастиці. Він фіксує стан еволюціонуючої системи в різний час або "знімки". Є "гілки" і "злиття". Дивіться також терміни .

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.