Кіріспе

Құжаттарды, бағдарламалық кодты немесе кез келген деректерді өңдеу әрқашан қателер енгізу қаупін тудырады. Екі немесе одан көп деректер жиынтығы арасындағы айырмашылықтарды көрсету арқылы, файлдарды салыстыру құралдары жаңа деректерге назар аудару және өзгермеген бөліктерді елемеу арқылы есептеуді оңайлатып, тиімдірек ете алады. Unix жүйесіндегі diff утилитасынан кейін «diff» деп жалпылама аталатын деректер көздерін салыстырудың және нәтижелерді көрсетудің түрлі тәсілдері бар. diff, cmp, FileMerge, WinMerge, Beyond Compare және File Compare сияқты көптеген танымал файлдарды салыстыру бағдарламалары бар. Кодты немесе құжаттарды жазатын адамдар үшін өзгерістерді түсіну маңызды болғандықтан, көптеген мәтіндік редакторлар мен мәтін өңдеушілер файлдың немесе құжаттың әртүрлі нұсқалары арасындағы өзгерістерді көруге қажетті мүмкіндіктермен жабдықталған.

Әдіс түрлері

Айырмашылықтарды табудың ең тиімді әдісі бастапқы деректерге және өзгерістердің сипатына байланысты. Бір тәсіл – екі файлдың арасындағы ең ұзын ортақ ішкі тізбекті табу, содан кейін ортақ емес деректерді қосылған немесе жойылған деп қарастыру. 1978 жылы Пол Хеккель мәтіннің көбінесе жылжытылған блоктарын анықтайтын алгоритм жариялады. Бұл IBM History Flow құралында қолданылады. Басқа файлдарды салыстыру бағдарламалары блоктардың жылжуын анықтайды. Кейбір арнайы файлдарды салыстыру құралдары екі файлдың арасындағы ең ұзын өсу тізбегін табады. rsync протоколы екі қашық компьютердегі екі файлды салыстыру үшін аз коммуникациялық жүктемемен домалап тұратын хэш функциясын пайдаланады. Сөз өңдегіштерде файлдарды салыстыру әдетте сөз деңгейінде, ал көптеген бағдарламалау құралдарында жол деңгейінде жүзеге асырылады. Байт немесе символ деңгейінде салыстыру кейбір арнайы қолданбаларда пайдалы.

Көрсетілім

Файлдарды салыстыру нәтижелерін көрсетудің ең тиімді жолы көптеген факторларға, оның ішінде деректердің түріне байланысты. Бағдарламалау кодын құрастырған тұрақты жолдар салыстыру үшін нақты өлшем болып табылады. Алайда, бұл тәсіл құжаттар үшін тиімді емес, себебі бір сөзді қосу артынан келетін жолдарды басқаша жинақтауы мүмкін, бірақ мазмұны өзгермейді. Өзгерістерді көрсетудің ең көп таралған тәсілдері – екі жақты салыстыру немесе деректерді қосу мен жоюды бөліп көрсететін біріктірілген көрініс. Екі жақты қарау, кодты немесе мәтінді жинақтау кезінде тиімділік үшін интерфейс өзгермеген бөлімдерді жасырып, тек өзгерістерді ғана көрсетуі мүмкін.

Ойлау

Салыстыру құралдарын пайдаланудың әр түрлі себептері бар, ал құралдардың өзі әртүрлі тәсілдерді қолданады. Бинарлық файлдарды салыстыру үшін құрал байт деңгейінде салыстыруды қолдануы мүмкін. Мәтін файлдарын немесе компьютерлік бағдарламаларды салыстырғанда, көптеген құралдар қатар көрнекі салыстыруды қолданады. Бұл пайдаланушыға файлдарды жаңа нұсқаға біріктіру алдында қандай өзгерістерді сақтауды немесе қабылдамауды таңдау мүмкіндігін береді. Немесе кейінірек қарастыру үшін екеуін де өзгеріссіз сақтап қоюға болады, "нұсқалау" бақылауының бір түрі арқылы. Файлдарды салыстыру – файлдарды синхрондау және сақтық көшірме жасаудың маңызды және ажырамас бөлігі. Сақтық көшірме жасау әдістемелерінде деректердің бұзылуы мәселесі маңызды. Бұзылу орын алғанға дейін ескерту сирек келеді, бұл деректерді қалпына келтіруді қиындатады немесе мүмкін емес етеді. Көбінесе мәселе тек біреу файлды ашуға тырысқанда ғана байқалады. Мұндай жағдайда салыстыру құралы мәселенің қалай пайда болғанын анықтауға көмектеседі.

Тарихи қолданысы

Файлдарды салыстыруға дейін магниттік таспаларды немесе перфокарталарды салыстыруға арналған машиналар болған. IBM 519 Card Reproducer перфокарталар жинағының мазмұны бірдей екенін анықтай алатын. 1957 жылы Джон Ван Гарднер IBM 704 машинасының компиляциясындағы қателерді жою үшін Фортран бағдарламаларының жүктелген бөлімдерінің бақылау сомаларын салыстыру жүйесін жасады.