# Bestanden vergelijken

Binnen de informatica is het vergelijken van bestanden het proces waarbij de verschillen en gelijkenissen tussen data-objecten worden berekend en getoond, typisch toegepast op tekstbestanden zoals broncode.
De manier waarop dat gebeurt, de implementaties ervan en het resultaat van de berekening worden typisch een diff genoemd, naar het gelijknamige programma. Het resultaat kan getoond worden in een grafische gebruikersinterface, maar kan ook gebruikt worden als onderdeel van andere programma's, zoals bij netwerken, bestandssystemen of versiebeheersystemen.
Enkele veelgebruikte programma's voor het vergelijken van bestanden zijn diff, cmp, FileMerge, WinMerge, Beyond Compare en File Compare. Het vergelijken van bestanden wordt ook veel gebruikt in teksteditors en tekstverwerkers, om de wijzigingen aan documenten te tonen.

## Berekenen

De meeste programma's voor het vergelijken van bestanden werken door te zoeken naar de langste gemene deelsequentie tussen twee bestanden. Alle gegevens die niet tot de langste gemene deelsequentie behoren, worden gezien als een toevoeging of verwijdering.
In 1978 publiceerde Paul Heckel een algoritme dat de meeste verplaatste tekstblokken identificeert. Dit algoritme wordt gebruikt in het programma IBM History Flow.
Sommige gespecialiseerde programma's voor het vergelijken van bestanden zoeken naar de langste stijgende deelsequentie tussen twee bestanden. Het protocol van het programma rsync gebruikt een rollende hashfunctie om twee bestanden op een efficiënte manier te vergelijken over een netwerk.
In tekstverwerkers gebeurt het vergelijken van bestanden meestal op woordniveau, terwijl het vergelijken in de meeste programmeertools op regelniveau gebeurt. Vergelijking op byte- of tekenniveau is nuttig in sommige gespecialiseerde toepassingen.

## Weergave

Voor het weergeven van een vergelijking van bestanden bestaan een aantal opties: de twee bestanden zij-aan-zij tonen naast elkaar, of één bestand tonen waarbij de wijzigingen tegenover het andere bestand aangeduid zijn middels opmaak, zoals kleuren. Zeker in het geval van het zij-aan-zij tonen wordt vaak gebruik gemaakt van code-invouwing zodat enkel de gewijzigde stukken zichtbaar zijn.

## Gebruik

Het vergelijken van bestanden wordt gedaan om een aantal verschillende redenen, en de manier waarop hangt af van het doel. Wil men binaire bestanden vergelijken, dan is een vergelijking op byteniveau aangewezen. Bij het vergelijken van tekstbestanden of broncode is een visuele zij-aan-zijweergave van de verschillen het nuttigst. Dit laat de gebruiker toe om te beslissen welk bestand de voorkeur heeft en behouden moet blijven.
Het vergelijken van bestanden is een belangrijk onderdeel van bestandssynchronisatie en back-uppen. Bij het back-uppen is gegevenscorruptie een belangrijk risico om rekening mee te houden. Corruptie treedt op zonder waarschuwing en vaak zelfs ongemerkt, of wordt pas opgemerkt eens het te laat is (bijvoorbeeld omdat een back-up teruggezet moet worden). Buiten het openen van een bestand is het vergelijken van bestanden een belangrijk hulpmiddel om corruptie tegen te gaan: dit kan namelijk detecteren dat een wijziging plaatsvond.

## Historisch gebruik

Voor de opkomst van digitale bestandsvergelijking bestonden er apparaten die magneetbanden of ponskaarten konden vergelijken. Zo kon de IBM 519 Card Reproducer bepalen of een pak ponskaarten equivalent waren. In 1957 ontwikkelde John Van Gardner een systeem voor de IBM 704 om de controlegetallen van geladen secties van Fortranprogramma's te vergelijken, om zo compilatieproblemen te debuggen.