diff
En informàtica, diff és una utilitat per a la comparació d'archius que genera les diferències entre dos archius o els canvis realisats en un archiu determinat comparant-ho en una versió anterior del mateix archiu. Diff expon els canvis realisats per llínea en els archius de text. Les implementacions modernes també soporten archius binaris.[1] El resultat es coneix com diff o patch ya que el mateix pot ser aplicat en el programa Unix patch. El resultat de la comparació d'un archiu similar també es diu "diff". De la mateixa manera que s'usa la paraula "grep" per a descriure l'acció de buscar, la paraula diff s'usa en la gerga com un verp que es referix al càlcul de qualsevol diferència. Un eixemple de diff.
Història
[editar | editar còdic]L'utilitat diff va ser desenrollada al començament dels anys setanta en el sistema operatiu Unix que estava creant-se en AT&T Bell Labs en Murray Hill, Nova Jersey. La versió final, que va aparéixer per primera volta en la 5.ª edició d'Unix en 1974, va ser tota ella escrita per Douglas McIlroy. Este treball va ser publicat en un artícul de 1976 coescrito en James W. Hunt que va desenrollar un prototip inicial de diff.[2]
El treball de McIlroy va ser precedit i influït pel programa comparison de Steve Johnson en GECOS i pel programa proof de Mike Lesk també originat en Unix i, com diff, produïa canvis llínea a llínea i inclús utilisava paréntesis angulars (">" i "<") per a presentar les insercions i borrats de llínea en el resultat del programa. Les heurístiques utilisades en estes primeres aplicacions varen ser, no obstant, jujades com no fiables. L'utilitat potencial de la ferramenta diff va provocar que McIlroy acometera l'investigació i disseny d'una ferramenta més robusta que podia usar-se en una gran varietat de tasques pero que al temps es conduïra be en els processos i en les llimitacions de tamany de l'hardware de PDP-11. El seu anàlisis del problema ho va portar a terme en la colaboració de distintes persones de Bell Labs com Alfred Aho, Elliot Pinson, Jeffrey Ullman i Harold S. Stone.
En el context d'Unix, l'us de l'editor de llínea ed proveïa diff en l'habilitat natural per a crear órdens d'edició útils. Estes órdens d'edició, quan es gravaven en un archiu, podien, junt en l'archiu original, ser reconstituidas completament per ed en l'archiu modificat. Açò reduïa enormement el necessari almagasenament secundari per a mantindre les distintes versions d'un archiu. McIlroy va considerar escriure un post-processador per a diff a on una varietat de formats de resultats pogueren ser dissenyats i implementats, pero va trobar que era més frugal i senzill fer que diff fora el responsable de generar la sintaxis i l'informació d'entrada d'orde contrari acceptada pel comando ed. En 1985, Larry Wall va compondre una utilidadh, patch, que va generalisar i va estendre l'habilitat per a modificar archius en resultat diff. Els modos d'Emacs permeten també convertir el format de patches i inclús editar patches interactivament.
En els primers anys de diff, els usos habituals eren la comparació de canvis en la font del còdic del software i el marcat de documents tècnics, la verificació de l'eixida d'errors de programa, la comparació de llistats de sistemes d'archius i l'anàlisis del còdic del montage de l'ordenador. L'eixida apuntada per ed va ser modificada per a proporcionar compressió a una seqüència de modificacions feta a un archiu. La Source Code Control System (SCCS) i la seua habilitat per a archivar revisions va aparéixer a finals dels anys setanta com a conseqüència d'almagasenar órdens d'edició de diff.
El Project Xanadu és un predecessor conceptual de diff. Era un proyecte d'hipertext concebut per primera volta en 1960 que devia incloure una versió d'un sistema de seguiment necessari per a la seua característica de "transpointing windows". La característica subsumía les diferències d'archius en el terme expansiu "transclusión", en el que un document incloïa en ell parts d'atres documents o revisions.
Algoritme
[editar | editar còdic]L'operació de diff es basa en resoldre el problema Problema de subsecuencia comú més llarga (LCS).
En el problema LCS, es tenen dos seqüències de ítems:
a b c d f g h j q z
a b c d i f g i j k r x i z
i es desija trobar la seqüència més llarga de ítems que es presenta en les dos seqüències originals en el mateix orde. Açò és, es vol trobar una nova seqüència que puga obtindre's de la primera seqüència eliminant alguns ítems, i de la segona seqüència eliminant atres ítems. Es vol també que esta seqüència siga tan llarga com siga possible. En este cas és:
a b c d f g j z
De la subsecuencia comuna més llarga solament hi ha un chicotet pas per a conseguir un resultat del tipo de diff:
i h i q k r x i
+ - + - + + + +
Referències
[editar | editar còdic]- ↑ MacKenzie et al. "Binary Files and Forcing Text Comparison" in Comparing and Merging Files with GNU Diff and Patch. Descarregat el 28 d'abril de 2007. [1]
- ↑ James W. Hunt and M. Douglas McIlroy(June 1976).«An Algorithm for Differential File Comparison».41
Vore també
[editar | editar còdic]
Referències
[editar | editar còdic]
- Este artícul conté una traducció derivada de «Diff» de Wikipedia en castellà publicada baix la Llicència de documentació lliure de GNU i la Llicència Creative Commons Reconeiximent-CompartirIgual 4.0 Internacional.