Em computação, diff é um utilitário de comparação de arquivos que analisa e exibe as diferenças entre dois arquivos texto por linha.[1] É normalmente usado para mostrar as mudanças entre uma versão de um arquivo e a versão anterior do mesmo arquivo fonte ou de configuração.[2]

Captura de tela de um Tkdiff

O diff mostra as alterações realizadas por linha para arquivos de texto. Implementações modernas também suportam arquivos binários. A saída é chamada de um "diff", ou um patch (remendo),[3] uma vez que a saída pode ser aplicada com o programa patch do Unix.[4] Na língua inglesa, a saída de utilitários similares de comparação de arquivos também são chamadas de um "diff". Assim como o uso da palavra "grep" para descrever o ato de procurar, a paravra diff é usada como jargão para diferença.[5]

História editar

O diff foi desenvolvido próximo de 1970 no sistema operacional Unix, que estava surgindo da Bell Labs. A primeira versão foi lançada junto com a 5° edição do Unix em 1974, e foi escrita por Douglas McIlroy, e James Hunt.[6] A pesquisa foi publicada em 1976 no artigo co-escrito com James W. Hunt, que desenvolveu o protótipo original do diff. O algoritmo descrito pelo artigo ficou conhecido por algoritmo Hunt-Szymanski.

Algoritmo editar

A operação de diff é baseado na solução do problema de maior subsequência comum (LCS).

Neste problema, são dadas duas sequências de itens:

a b c d f g h j q z
a b c d e f g i j k r x y z

e nós queremos achar a maior subsequência de itens que está presente em ambos as sequências na mesma ordem. Ou seja, queremos achar uma nova sequência por deletar alguns itens da primeira sequência original, e da segunda por deletar outros itens. Também queremos que esse sequência seja a mais longa possível. No caso seria:

a b c d e f g j z

Isso é apenas um pequeno passo para conseguirmos uma saída parecida com diff: se um item não existe na subsequência mas está presente na primeira sequência original, ele deve ser deletado (como indicado pelo marcador '-', abaixo). Se um item não existe na subsequência mas está presente na segunda sequência original, ele deve ser adicionado (como indicado pelo marcador '+').

e  h i  q  k r x y
+  - +  -  + + + +

Ver também editar

Referências

  1. «Comandos Linux – Comando diff». Linux Force Security. 5 de abril de 2019. Consultado em 27 de dezembro de 2021. Nos sistemas operacionais do tipo Unix, o comando diff analisa dois arquivos e imprime as linhas diferentes. 
  2. «Linux diff – How to Compare Two Files and Apply Changes with the Patch Command». freeCodeCamp. 15 de setembro de 2021. Consultado em 27 de dezembro de 2021. Comparing files and finding the differences between them is a widely used operation. This is specially useful when you have to compare complex code or configuration files. 
  3. «How to Compare Two Files in Linux». linuxhint. Consultado em 27 de dezembro de 2021. The “diff” command is also used by the programmers to get the difference between two source code files to develop patches. 
  4. «7 Patch Command Examples to Apply Diff Patch Files in Linux». The Geek Stuff. 2 de dezembro de 2014. Consultado em 27 de dezembro de 2021 
  5. «diff». Cambridge Dictionary. Consultado em 27 de dezembro de 2021. short for difference 
  6. Hunt, James W.; McIlroy, M. Douglas (junho de 1976). «An Algorithm for Differential File Comparison» (PDF). Bell Laboratories. Computing Science Technical Report. 41 

Ligações externas editar


  Este artigo sobre computação é um esboço. Você pode ajudar a Wikipédia expandindo-o.