Có một định nghĩa CS chính thức về các phiên bản VCS và tệp không?


12

Tôi không biết liệu đó có phải là một trò đùa hay không, nhưng một khi tôi đã đọc những gì được gọi là định nghĩa chính thức của một tệp trong một hệ thống phiên bản như git, hg hoặc svn. Nó giống như một vật thể toán học giống như sự đồng nhất. Đó có phải là một trò đùa hay thực sự có lý thuyết khoa học máy tính về các hệ thống phiên bản và toán học của VCS?


2
Tôi đã thay đổi sự đồng hình thành chủ nghĩa đồng nhất, tuy nhiên tôi không có đầu mối, nơi để tìm kiếm cấu trúc liên kết trong bối cảnh này. Ý của bạn là đồng hình?
frafl

3
Một cái gì đó như en.wikibooks.org/wiki/Under Hiểu_Darcs / Patch_theory hoặc dự án.haskell.org / camp ? Luôn luôn là một ý tưởng tốt để tìm kiếm haskell khi nói đến lý thuyết và lập trình. Tôi có thể biến điều này thành một câu trả lời, nhưng tôi nghĩ có những người có kiến ​​thức tốt hơn về lĩnh vực này.
frafl


Bạn không xây dựng một cái gì đó phức tạp và quan trọng như một hệ thống phiên bản mà không có sự chính thức hóa mạnh mẽ về những gì bạn đang làm. Những người hack theo cách của họ đôi khi có thể là thiên tài, nhưng thường thì họ là những kẻ ngốc.
babou

Câu trả lời:


11

Bạn đang nghĩ về một tweet của Isaac Wolkerstorfer (@agnoster) :

git trở nên dễ dàng hơn một khi bạn có được ý tưởng cơ bản rằng các nhánh là các cấu trúc con endofunctor ánh xạ đồng nhất của không gian Hilbert.

Thật không may, đó là một trò đùa. Như tác giả đã viết trên Quora :

Nó được dự định là lưỡi vững chắc. Tôi thực sự yêu git, và tôi nghĩ rằng sự phức tạp của nó bị che khuất rất nhiều. Đồng thời, tôi đồng cảm với thực tế rằng lời khuyên từ git gurus cho người mới có thể kết thúc nghe có vẻ như vô nghĩa khó hiểu.

Nó không có ý nghĩa sâu sắc hơn. Nỗ lực phân tích nó theo cách này là vô ích, nhưng do một lỗi trong thực tế, bạn thực sự có thể thực hiện bất kỳ tuyên bố lượn sóng tay nào đủ phù hợp nếu bạn cố gắng đủ.

Điều này đã được thảo luận về Trao đổi ngăn xếp của lập trình viênvề Trao đổi ngăn xếp toán học .


Đùa sang một bên, đã có công việc chính thức hóa kiểm soát phiên bản. Một nỗ lực mà lý thuyết và thực hành của các đồng minh là công trình về lý thuyết vá của David Roundy trên Darcs . Mục tiêu chính của lý thuyết là mô hình hợp nhất và đặc biệt là giải quyết xung đột. Các darcs wiki có một giới thiệu về lý thuyết và một vài gợi ý cũng như một tài liệu tham khảo (bỏ dở nên lỗi thời nếu bạn muốn một cái nhìn mới về đề tài này, nhưng nó danh sách một giấy khảo sát năm 2009 bởi Petr Baudiš ) và một danh sách các cuộc đàm phán ( trong đó bao gồm các tài liệu gần đây hơn). Ngoài ra còn có một wikibook . Một bài báo quan trọng là Phương pháp tiếp cận nguyên tắc để kiểm soát phiên bảncủa tác giả Andres Löh, Wouter Swierstra và Daan Leijen3 .

Lý thuyết bản vá không dẫn đến một mô hình phân loại, gần đây đã được khám phá trong Một lý thuyết phân loại của Samuel Mimram và Cinzia Di GiustoLý thuyết vá đồng âm của Carlo Angiuli, Ed Morehouse, Daniel R. Licata và Robert Harper . Trong tác phẩm của Mimram và Di Giusto, mô hình có các tệp dưới dạng đối tượng và các bản vá như hình thái. Tôi nghĩ rằng điều đó làm cho việc hợp nhất một nhánh thành một functor - một endofunctor nếu bạn đang làm việc trong một kho lưu trữ duy nhất. Tôi không có ý nghĩa gì với tôi. Với lý thuyết đồng luân có liên quan, các giao diện con của không gian Hilbert có thể không quá xa ...


3

Tất nhiên có một hình thức toán học cho các hệ thống kiểm soát phiên bản. Có một hình thức toán học cho hầu hết mọi thuật toán trong CS. Có nhiều hình thức cho nhiều người. Không có mối quan hệ 1-1 giữa các hình thức và các hệ thống mà họ mô hình hóa . Các mô hình có thể từ đơn giản đến phức tạp. Dưới đây là một ví dụ cho VCS / SCM cũng bởi Swierstra, chưa được trích dẫn.

SCM cũng có rất nhiều điểm tương đồng với khái niệm "vũ trụ / mốc thời gian song song"du hành thời gian đôi khi được sử dụng trong khoa học viễn tưởng. Nó nắm bắt trạng thái của hệ thống phát triển tại các thời điểm khác nhau hoặc "ảnh chụp nhanh". Có "chi nhánh" và "hợp nhất". Xem thêm các mốc thời gian .

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.