DocumentiImmaginiMediaStrumenti PDF

Confronta Testo Online — Diff di Due Testi

Confronta versioni di codice, contratti e articoli e visualizza ogni modifica con colori differenziati.

Elaborato nel tuo browser — nessun testo inviato ad alcun server

Differenze visibili in pochi secondi

Diff per riga e per carattere

Visualizza le modifiche a livello di riga e a livello di carattere all'interno di ogni riga modificata.

100% privato

Il confronto avviene nel tuo browser. I tuoi testi non vengono mai inviati ad alcun server.

Algoritmo Myers

Implementazione dell'algoritmo Myers diff O(n+d), lo stesso che git usa internamente per i suoi diff.

Istantaneo

I risultati appaiono mentre incolli il testo, senza bisogno di fare clic su converti.

Tre passaggi, senza complicazioni

1

Incolla i due testi

Inserisci il testo originale nel pannello sinistro e il testo modificato nel pannello destro. Possono essere codice, documenti o qualsiasi testo semplice.

2

Visualizza le differenze

Le righe aggiunte appaiono in verde, quelle eliminate in rosso, e le righe modificate mostrano la modifica esatta evidenziata a livello di carattere.

3

Analizza le modifiche

Naviga tra le differenze con i pulsanti precedente/successivo. Consulta il riepilogo delle righe aggiunte, eliminate e invariate.

Hai delle domande?

I moderni algoritmi di diff si basano sul calcolo della LCS (Longest Common Subsequence, sottosequenza comune piu lunga). Dati due testi A e B, l'algoritmo trova la sequenza piu lunga di righe che compare in entrambi nello stesso ordine. Le righe di A che non fanno parte della LCS vengono contrassegnate come eliminate (rosso) e quelle di B che non ne fanno parte vengono contrassegnate come aggiunte (verde). L'algoritmo Hunt-McIlroy (1975), usato nel comando Unix diff originale, ha formalizzato questo approccio.

Il verde indica le righe aggiunte nel nuovo testo che non esistevano nell'originale. Il rosso indica le righe eliminate che erano nell'originale e non sono piu presenti. Il giallo o nessun colore indica le righe invariate (contesto). Nella modalita diff a livello di carattere, all'interno di una riga modificata, i nuovi caratteri vengono evidenziati in verde scuro e quelli eliminati in rosso scuro, permettendoti di vedere la modifica esatta all'interno della riga.

Il diff riga per riga tratta ogni riga come un'unita atomica: una riga e presente o non lo e, proprio come fa git diff. E ideale per il codice dove le modifiche avvengono tra righe complete. Il diff carattere per carattere (detto anche word diff o char diff) opera all'interno di ogni riga modificata e mostra esattamente quali caratteri o parole sono cambiati. E piu utile per la prosa, i contratti o i testi dove le modifiche sono piccole correzioni all'interno dei paragrafi.

Il diff e fondamentale nel controllo di versione (git diff mostra le modifiche prima di un commit), nella revisione del codice (le pull request su GitHub mostrano un diff), nel confronto di documenti legali (contratti, condizioni di servizio tra versioni), nel giornalismo e nel fact-checking (confronto di versioni di comunicati stampa) e nel debugging (confronto dell'output atteso con quello reale nei test). Viene usato anche nelle patch software: i file .patch sono diff unificati che git apply puo applicare a un repository.

LCS (Longest Common Subsequence) e il problema di trovare la sottosequenza piu lunga che due sequenze hanno in comune senza riordinare gli elementi. Per il diff di testo, le sequenze sono le righe del testo. La LCS rappresenta le righe che non sono cambiate; tutto cio che non e nella LCS e una modifica. L'algoritmo standard di programmazione dinamica per LCS ha complessita O(n x m) dove n e m sono le lunghezze delle due sequenze, ma algoritmi piu efficienti come Myers diff (1986) raggiungono O(n+d) dove d e il numero di differenze.

Come funziona il diff di testo: dal comando Unix a git

Il comando diff e stato introdotto in Unix da Doug McIlroy nel 1974 ed e diventato uno strumento fondamentale nell'ecosistema Unix. Il suo algoritmo originale, formalizzato da Hunt e McIlroy nel paper 'An Algorithm for Differential File Comparison' (1975), calcola la sottosequenza comune piu lunga (LCS) tra due file ed esprime le differenze come un insieme minimo di operazioni di inserimento e cancellazione. Questo principio matematico rimane la base di tutti i moderni strumenti di diff.

Nel 1986, Eugene Myers ha pubblicato un algoritmo migliorato che riduce la complessita a O(n+d) dove d e il numero di differenze, rendendolo significativamente piu veloce quando i file sono simili (poche differenze). Questo e l'algoritmo che Git usa internamente per git diff, git log -p e le viste di pull request su GitHub e GitLab. Il formato di output unified diff (con righe precedute da +, - e spazio) e diventato lo standard universale per lo scambio di patch tra progetti software.

Al di la del codice, il diff ha applicazioni nel giornalismo di dati (confronto di versioni di documenti ufficiali), nel diritto (rilevamento delle modifiche tra versioni di contratti) e nella scienza (confronto di sequenze genomiche). Convertir.ai implementa l'algoritmo Myers diff interamente nel browser, con visualizzazione a livello di riga e di carattere, senza inviare i testi ad alcun server. Questo e particolarmente rilevante per confrontare documenti riservati come contratti, codice proprietario o dati sensibili.