La edición de documentos, códigos de programas o cualquier dato siempre conlleva el riesgo de introducir errores. Al mostrar las diferencias entre dos o más conjuntos de datos, las herramientas de comparación de archivos pueden simplificar y hacer más eficiente el cálculo centrándose en los datos nuevos e ignorando lo que no cambió. Conocidas genéricamente como diff [1] por la utilidad de Unix , existen diversas formas de comparar fuentes de datos y mostrar los resultados. diff
Algunos programas de comparación de archivos ampliamente utilizados son diff , cmp , FileMerge , WinMerge , Beyond Compare y File Compare .
Dado que comprender los cambios es importante para los escritores de código o documentos, muchos editores y procesadores de texto incluyen la funcionalidad necesaria para ver los cambios entre diferentes versiones de un archivo o documento.
El método más eficaz para encontrar diferencias depende de los datos de origen y de la naturaleza de los cambios. Un enfoque consiste en encontrar la subsecuencia común más larga entre dos archivos y, a continuación, considerar los datos no comunes como una inserción o una eliminación.
En 1978, Paul Heckel publicó un algoritmo que identifica los bloques de texto más movidos. [2] Esto se utiliza en la herramienta IBM History Flow . [3] Otros programas de comparación de archivos encuentran los bloques movidos. [ Aclaración necesaria ]
Algunas herramientas especializadas de comparación de archivos encuentran la subsecuencia creciente más larga entre dos archivos. [4] El protocolo rsync utiliza una función hash continua para comparar dos archivos en dos computadoras distantes con baja sobrecarga de comunicación.
La comparación de archivos en los procesadores de texto se realiza normalmente a nivel de palabra, mientras que en la mayoría de las herramientas de programación la comparación se realiza a nivel de línea. La comparación a nivel de bytes o caracteres resulta útil en algunas aplicaciones especializadas.
La forma óptima de mostrar los resultados de una comparación de archivos depende de muchos factores, incluido el tipo de datos de origen. Las líneas fijas de código de programación proporcionan una unidad de comparación clara. Esto no funciona con documentos, en los que agregar una sola palabra puede hacer que las líneas siguientes se ajusten de manera diferente, pero sin cambiar el contenido.
Las formas más populares de mostrar los cambios son en paralelo o en una vista consolidada que resalta las inserciones y eliminaciones de datos. En la vista en paralelo, el plegado de código o el plegado de texto , por razones de eficiencia, la interfaz puede ocultar partes del archivo que no cambiaron y mostrar solo los cambios. [ Aclaración necesaria ]
Existen varias razones para utilizar herramientas de comparación, y las herramientas en sí mismas utilizan diferentes enfoques. Para comparar archivos binarios, una herramienta puede utilizar una comparación a nivel de bytes. Para comparar archivos de texto o programas informáticos , muchas herramientas utilizan una comparación visual lado a lado. [5] Esto le da al usuario la oportunidad de elegir qué cambios conservar o rechazar antes de fusionar los archivos en una nueva versión. [6] O tal vez mantenerlos como están para referencia posterior, a través de alguna forma de control de "versiones".
La comparación de archivos es un proceso importante e integral de la sincronización y la copia de seguridad de archivos . En las metodologías de copia de seguridad, el problema de la corrupción de datos es importante. Rara vez hay una advertencia antes de que se produzca la corrupción, esto puede dificultar o imposibilitar la recuperación. A menudo, el problema solo se hace evidente la próxima vez que alguien intenta abrir un archivo. En esta circunstancia, una herramienta de comparación puede ayudar a aislar la introducción del problema. [7]
Antes de la comparación de archivos, existían máquinas para comparar cintas magnéticas o tarjetas perforadas. El IBM 519 Card Reproducer podía determinar si una baraja de tarjetas perforadas era equivalente. En 1957, John Van Gardner desarrolló un sistema para comparar las sumas de comprobación de las secciones cargadas de los programas Fortran para depurar problemas de compilación en el IBM 704. [ 8]