Como Comparar Textos e Encontrar Diferenças

· 5 min de leitura

Encontrar o que mudou entre duas versões de um documento, arquivo de configuração ou pedaço de código é uma tarefa comum. Ler ambas as versões e identificar diferenças manualmente é lento e pouco confiável, especialmente com textos longos. Um verificador de diferenças faz isso instantaneamente e destaca cada mudança. O mesmo algoritmo que alimenta o histórico de commits do Git, a interface de revisão de pull-request do GitHub e o comando Unix diff está subjacente a toda ferramenta de diferença visual que voce já usou.

Como comparar texto

  1. Cole ambas as versões: insira o texto original à esquerda e o texto modificado à direita.
  2. Revise os destaques: as linhas adicionadas são mostradas em verde, as linhas removidas em vermelho. As linhas modificadas mostram tanto a versão antiga quanto a nova.
  3. Exporte ou copie: copie os resultados da diferença ou baixe um relatório.

A comparação acontece assim que ambos os painéis tem texto. Não há botão Comparar para clicar; edições de qualquer lado executam novamente a diferença em tempo real, o que é útil quando voce está iterando em uma correção e quer ver o efeito imediatamente.

Lendo uma diferença

A saída de diferença usa um sistema de cores simples:

Esta é a mesma convenção usada por Git, GitHub, GitLab, Bitbucket e todo sistema de controle de versão importante. As cores não são arbitrárias: verde para adições e vermelho para exclusões tem sido o padrão desde a década de 1970, quando as primeiras ferramentas de diferença visual (como o comando sdiff) foram enviadas no Unix. Ferramentas modernas às vezes adicionam amarelo ou laranja para "alterado" (uma linha que existe em ambas mas é diferente), mas vermelho e verde permanecem como adições/exclusões universais.

Uma breve história do diff

O algoritmo diff foi publicado pela primeira vez por Douglas McIlroy nos Bell Labs em 1976, construindo sobre o refinamento posterior de Eugene Myers (o algoritmo O(ND), 1986) que tornou o diff rápido o suficiente para uso interativo. O algoritmo original de McIlroy foi publicado com o lançamento do Unix V7 em 1979 e tem sido parte de todo sistema operacional tipo Unix desde então. O algoritmo de Myers é o que alimenta as implementações modernas de diff: o diff do Git, a interface web do GitHub, toda GUI de diff desde Beyond Compare até VS Code.

O formato de diff visual lado a lado precede o algoritmo: ele remonta às convenções manuais de revisão na publicação (mostrando duas colunas de texto com mudanças marcadas na margem). O software dos anos 1970 apenas automatizou o que os editores vinham fazendo no papel por séculos. O formato "diff unificado" (aquele com cabeçalhos --- e +++ que voce ve em arquivos de patch) foi introduzido em 1990 pelo GNU diff e agora é o padrão de fato para compartilhar mudanças por texto.

Quando a verificação de diferenças é útil

Diff baseado em linhas vs baseado em caracteres

O verificador de diferenças usa comparação baseada em linhas, o que significa que trata cada linha como a menor unidade de diferença. Se voce muda uma única palavra em uma linha, toda a linha é mostrada como alterada (a linha antiga em vermelho, a nova linha em verde) e voce mesmo precisa identificar a diferença em nível de palavra.

O diff baseado em linhas é o padrão para arquivos de código e configuração porque eles são tipicamente orientados a linha (uma declaração por linha, uma opção de configuração por linha). É rápido, previsível e corresponde a como Git e toda ferramenta de revisão de código funcionam.

Para comparação de prosa onde mudanças em nível de linha são muito grosseiras, algumas ferramentas oferecem diff em nível de palavra ou caractere que destaca apenas as palavras alteradas dentro de uma linha. Isso é mais preciso mas mais difícil de ler para código. Se voce precisa de diff em nível de palavra, procure uma ferramenta especificamente rotulada como "word diff" ou "intra-line diff".

Privacidade e conteúdo confidencial

O verificador de diferenças roda inteiramente no seu navegador. Ambos os pedaços de texto permanecem no seu dispositivo; nada é enviado. Isso importa porque o texto que voce mais quer comparar é frequentemente confidencial: contratos em negociação, comunicados de imprensa em rascunho, documentos de política interna, código-fonte sob NDA. Ferramentas de diferença em nuvem (DiffChecker.com, JsonDiff.com, ferramentas de mesclagem online) exigem o upload de ambos os textos para um servidor de terceiros, que é precisamente o que voce quer evitar para conteúdo sensível. A diferença baseada em navegador não tem nenhuma dessas exposições.

A sessão também é sem estado: nada persiste depois de voce fechar a aba. Se voce precisa manter um registro da diferença, copie a saída ou tire uma captura de tela antes de sair.

Armadilhas comuns

Dicas

Perguntas frequentes

O verificador de diferenças compara caractere por caractere?

Ele compara linha por linha, a mesma abordagem usada pelo Git e pela maioria das ferramentas profissionais de diff. Se qualquer caractere em uma linha mudar, a linha inteira é destacada como alterada.

Existe um limite de tamanho?

Não há limite rígido, mas textos muito grandes (mais de 10.000 linhas) podem levar um momento para processar, já que a comparação é executada inteiramente no seu navegador.

Posso comparar arquivos de código?

Sim. O verificador de diferenças funciona com qualquer texto, incluindo código-fonte. O destaque de sintaxe ajuda a ler diffs de código com mais facilidade.

Meu texto é enviado para um servidor?

Não. A comparação acontece no seu navegador. Seu texto nunca sai do seu dispositivo.