Al editar documentos, códigos de programas o cualquier dato siempre se corre 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 hacer que la computación sea más simple y más eficiente al centrarse en datos nuevos e ignorar los que no cambiaron. Conocido genéricamente como diff [1] por la utilidad Unix , existen varias 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 .
Debido a que comprender los cambios es importante para los escritores de códigos 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 es encontrar la subsecuencia común más larga entre dos archivos y luego 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 movimientos de bloques. [ se necesita aclaración ]
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 una baja sobrecarga de comunicación.
La comparación de archivos en los procesadores de texto suele realizarse a nivel de palabras, 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 es ú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, donde agregar una sola palabra puede hacer que las siguientes líneas se ajusten de manera diferente, pero aún así no cambien 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. Ya sea en la visualización en paralelo, en el plegado de código o en el plegado de texto , en aras de la eficiencia, la interfaz puede ocultar partes del archivo que no cambiaron y mostrar solo los cambios. [ se necesita aclaración ]
Hay varias razones para utilizar herramientas de comparación y las propias herramientas utilizan enfoques diferentes. Para comparar archivos binarios, una herramienta puede utilizar la comparación a nivel de bytes. Al comparar archivos de texto o programas de computadora , muchas herramientas utilizan una comparación visual en paralelo. [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 para mantenerlos a ambos 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 sincronización y copia de seguridad de archivos . En las metodologías de respaldo, la cuestión de la corrupción de datos es importante. Rara vez hay una advertencia antes de que ocurra la corrupción; esto puede dificultar o imposibilitar la recuperación. A menudo, el problema sólo se manifiesta 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 reproductor de tarjetas IBM 519 podía determinar si una baraja de tarjetas perforadas era equivalente. En 1957, John Van Gardner desarrolló un sistema para comparar las sumas de verificación de secciones cargadas de programas Fortran para depurar problemas de compilación en el IBM 704 . [8]