Кіріспе

Файлдарды салыстыруға арналған стандартты UNIX құралы

Информатикада diff құралы – файлдардың мазмұны арасындағы айырмашылықтарды есептеп, көрсететін деректерді салыстыру құралы болып табылады. Басқа мақсаттарда қолданылатын өңдеу арақашықтығы ұғымдарынан айырмашылығы, diff символдарға емес, жолдарға бағдарланған, бірақ ол Левенштейн арақашықтығы сияқты, бір файлды екіншісінен жасау үшін ең аз мөлшерде жою және қосу қадамдарын анықтауға тырысады. Құрал өзгерістерді бірнеше стандартты форматтардың бірінде көрсетеді, соның арқасында адамдар да, компьютерлер де өзгерістерді талдап, оларды түзетулер жасау үшін пайдалана алады. Әдетте diff бір файлдың екі нұсқасы арасындағы өзгерістерді көрсету үшін қолданылады. Заманауи нұсқалары бинарлық файлдарды да қолдайды. Нәтиже "diff" немесе "жөндеу" деп аталады, себебі нәтижені Unix бағдарламасымен қолдануға болады. Осыған ұқсас файлдарды салыстыру құралдарының нәтижесі де "diff" деп аталады; "grep" сөзін іздеу әрекетін сипаттау үшін қолдану сияқты, diff сөзі деректердің айырмашылықтарын есептеу және оның нәтижелері үшін қолданылатын жалпы терминге айналды. POSIX стандарты "diff" және "patch" құралдарының қызметін және олардың файл форматтарын анықтайды.

Алгоритм

The операциясы ең ұзын ортақ тізбек мәселесін шешуге негізделген. Дегенмен, кейбір diff құралдары жылжытылған жолдарды көрсетіп береді.

Іске асыру және оған байланысты бағдарламалар

1975 жылдан бері негізгі алгоритмге жақсартулар енгізілді, командаға пайдалы мүмкіндіктер қосылды және жаңа шығыс форматтары жасалды. Негізгі алгоритм Юджин У. Майерстің «An O(ND) Difference Algorithm and its Variations» және Вебб Миллер мен Майерстің «A File Comparison Program» атты мақалаларында сипатталған. Алгоритм Еско Укконеннің «Шамамен тізбектерге сәйкес келу алгоритмдері» еңбегінде тәуелсіз түрде ашылып, сипатталған. Diff бағдарламасының алғашқы нұсқалары мәтін файлдарының жолдарын салыстыру үшін жол соңындағы символдарды жолдарды бөліп көрсетуге бағытталған. 1980 жылдары бинарлық файлдарды қолдау бағдарламаның дизайны мен іске асырылуына өзгерістер енгізді. GNU diff және diff3 басқа diff және patch құралдарымен бірге diffutils жинағында бар.

Форматтаушылар мен алдыңғы-соңғы құрылғылар

Sdiff және diffmk постөңдеушілері өзгерістерді қатар көрсетеді және тиісінше басып шығарылған құжаттарға өзгерту белгілерін қояды. Екеуі де 1981 жылға дейін немесе сол жылы Bell Labs-те жасалған. Diff3 бір файлды екі басқа файлпен салыстырып, екі айырмашылықты үйлестіреді. Ол бастапқыда Пол Дженсен тарапынан ортақ кодты өңдеген екі адамның өзгерістерін біріктіру үшін ойластырылған. Бұл сондай-ақ өзгертулерді біріктіру үшін RCS сияқты нұсқауды бақылау жүйелерінде қолданылады. Emacs жаңарту файлдарын интерактивті өңдеу және біріктіру мүмкіндіктерін ұсынатын интерфейсте жаңартудың қамтитын өзгерістерді көрсету үшін Ediff-ке ие. Vim екіден сегізге дейін файлдарды vimdiff арқылы салыстырады, ал айырмашылықтар түспен белгіленеді. Тарихи тұрғыдан diff бағдарламасын шақыру арқылы жұмыс істеген, қазіргі vim xdiff кітапханасының (LibXDiff) git нұсқасын пайдаланады, бұл жылдамдық пен мүмкіндіктерді жақсартады. GNU Wdiff – бұл diff-тің интерфейсі, ол мәтіндік құжаттардағы өзгерген сөздерді немесе сөз тіркестерін көрсетеді, тіпті жолдар оралғанда немесе баған ені әртүрлі болғанда да. colordiff – бұл 'diff' үшін Perl қаптамасы, ол бірдей нәтижені шығарады, бірақ қосылған және жойылған бөліктерді түспен көрсетеді. diff so fancy және diff highlight – жаңа аналогтар. "Delta" – өзгерістерді және кодты бір уақытта көрсететін Rust-та жазылған бағдарлама. Patchutils құралдары контексттік және біріктірілген айырмашылықтарды біріктіруге, қайта реттеуге, салыстыруға және түзетуге мүмкіндік береді.