Сравнение файлов
Редактирование документов, программного кода или любых данных всегда сопряжено с риском внесения ошибок. Отображая различия между двумя или более наборами данных, инструменты сравнения файлов могут сделать вычисления проще и эффективнее, концентрируясь на новых данных и игнорируя то, что не изменилось. Обычно известный как diff [1] после Unix diff
утилите существует ряд способов сравнения источников данных и отображения результатов.
Некоторые широко используемые программы сравнения файлов: diff , cmp , FileMerge , WinMerge , Beyond Compare и File Compare .
Поскольку понимание изменений важно для авторов кода или документов, многие текстовые редакторы и текстовые процессоры включают в себя функциональные возможности, необходимые для просмотра изменений между различными версиями файла или документа.
Типы методов
[ редактировать ]Наиболее эффективный метод поиска различий зависит от исходных данных и характера изменений. Один из подходов состоит в том, чтобы найти самую длинную общую подпоследовательность между двумя файлами, а затем рассматривать необщие данные как вставку или удаление.
В 1978 году Пол Хекель опубликовал алгоритм, который идентифицирует наиболее перемещаемые блоки текста. [2] Это используется в инструменте IBM History Flow . [3] Другие программы сравнения файлов находят перемещения блоков. [ нужны разъяснения ]
Некоторые специализированные инструменты сравнения файлов находят самую длинную возрастающую подпоследовательность между двумя файлами. [4] Протокол rsync использует скользящую хеш- функцию для сравнения двух файлов на двух удаленных компьютерах с минимальными затратами на связь.
Сравнение файлов в текстовых процессорах обычно осуществляется на уровне слов, тогда как в большинстве инструментов программирования сравнение осуществляется на уровне строк. Сравнение на уровне байтов или символов полезно в некоторых специализированных приложениях.
Отображать
[ редактировать ]Оптимальный способ отображения результатов сравнения файлов зависит от многих факторов, в том числе от типа исходных данных. Фиксированные строки программного кода обеспечивают четкую единицу сравнения. Это не работает с документами, где добавление одного слова может привести к тому, что следующие строки будут перенесены по-другому, но содержимое все равно не изменится.
Наиболее популярные способы отображения изменений — это параллельное представление или объединенное представление, в котором выделяются вставки и удаления данных. При параллельном просмотре, сворачивании кода или сворачивании текста в целях эффективности интерфейс может скрывать части файла, которые не менялись, и отображать только изменения. [ нужны разъяснения ]
Рассуждение
[ редактировать ]Существуют различные причины для использования инструментов сравнения, и сами инструменты используют разные подходы. Для сравнения двоичных файлов инструмент может использовать сравнение на уровне байтов. При сравнении текстовых файлов или компьютерных программ многие инструменты используют параллельное визуальное сравнение. [5] Это дает пользователю возможность выбрать, какие изменения сохранить или отклонить, прежде чем объединять файлы в новую версию. [6] Или, возможно, сохранить их оба как есть для дальнейшего использования с помощью некоторой формы контроля версий.
Сравнение файлов — важный и неотъемлемый процесс синхронизации файлов и резервного копирования . проблема повреждения данных В методологиях резервного копирования важна . Предупреждение о повреждении появляется редко, это может затруднить или сделать невозможным восстановление. Часто проблема проявляется только тогда, когда кто-то в следующий раз пытается открыть файл. В этом случае инструмент сравнения может помочь выявить возникновение проблемы. [7]
Историческое использование
[ редактировать ]До сравнения файлов существовали машины для сравнения магнитных лент или перфокарт. Воспроизводитель карт IBM 519 ли колода перфокарт мог определить , эквивалентна . В 1957 году Джон Ван Гарднер разработал систему сравнения контрольных сумм загруженных разделов программ на Фортране для отладки проблем компиляции на IBM 704 . [8]
См. также
[ редактировать ]- Сравнение инструментов сравнения файлов
- Компьютерное рецензирование – программное обеспечение для сравнения текстов
- Различие данных — метод сжатия изменений с течением времени.
- Дельта-кодирование — тип метода передачи данных.
- Сравнение документов
- Расстояние редактирования — информационная метрика сходства строк.
Ссылки
[ редактировать ]- ^ "diff", Файл жаргона
- ^ Хекель, Пол (1978), «Методика изоляции различий между файлами» (PDF) , Communications of the ACM , 21 (4): 264–268, doi : 10.1145/359460.359467 , S2CID 207683976 , получено 4 декабря 2011 г.
- ^ Вьегас, Фернанда Б.; Ваттенберг, Мартин; Кушал, Кушал Дэйв (2004), Изучение сотрудничества и конфликтов между авторами с помощью визуализаций потока истории (PDF) , том. 6, Вена: CHI, стр. 575–582 , получено 1 декабря 2011 г.
- ^ Ливэй Рен; Цзиньшэн Гу; Луошэн Пэн (18 апреля 2006 г.). «Алгоритмы блочного выравнивания кода программных двоичных файлов» . Гугл Патенты . ВПТЗ США . Проверено 10 мая 2019 г.
- ^ Маккензи, Дэвид; Эггерт, Пол; Столлман, Ричард (2003). Сравнение и объединение файлов с помощью Gnu Diff и Patch . Сетевая теория. ISBN 978-0-9541617-5-0 .
- ^ «Программа сравнения файлов: vc-dwim и vc-chlog» . www.gnu.org . Проверено 16 апреля 2023 г.
- ^ «SystemRescue — Домашняя страница восстановления системы» . www.system-rescue.org . Проверено 16 апреля 2023 г.
- ^ Джон Ван Гарднер. «Фортран и возникновение проекта Intercept» (PDF) . Проверено 6 декабря 2011 г.