Sono molteplici gli strumenti che consentono di trovare le differenze tra file. In un articolo pubblicato a suo tempo, abbiamo visto come confrontare due file adoperando vari strumenti e metodologie. Anche online sono disponibili e facilmente accessibili tanti servizi che permettono di paragonare il contenuto di più file. La maggior parte delle soluzioni conosciute, tuttavia, presenta oggettive difficoltà nel gestire, ad esempio, il codice di programmazione.
Difftastic è uno strumento che aiuta a trovare differenze nei file confrontandone la sintassi. Anziché svolgere una comparazione puramente basata sui caratteri, Difftastic analizza la struttura interna dei file, con un approccio che si rivela particolarmente utile nel caso dei linguaggi di programmazione, nell’ambito dei quali la struttura del codice riveste un ruolo cruciale.
Uno strumento fantastico per trovare differenze nei file e nel codice di programmazione
Innanzi tutto, a differenza degli strumenti tradizionali, Difftastic comprende la struttura dei blocchi di codice nidificati. Ad esempio, se una funzione è indentata in modo diverso tra due versioni del file ma il codice non cambia, Difftastic indicherà il codice come identico piuttosto che evidenziare differenze che, all’atto pratico, non esistono.
Uno strumento evoluto come Difftastic comprende anche eventuali righe disallineate. Anche qui, si immagini che una funzione risulti spostata verso l’alto o verso il basso in due file: l’applicazione è in grado di rilevare e comprendere questo aspetto.
Ancora, Difftastic se la cava benissimo anche con il line-wrapping ovvero riesce a gestire quelle situazioni in cui il codice è spezzato su più linee ma, di fatto, non cambia nulla nell’esecuzione del codice di programmazione. Non essendo una pratica significativa a livello di sintassi, Difftastic non la considera come una modifica.
Difftastic supporta oltre 30 linguaggi di programmazione, confermandosi come una soluzione davvero flessibile per una vasta gamma di utilizzi.
Questo breve video dimostrativo riassume un po’ tutti i punti sin qui trattati.
Come si vede nell’immagine riprodotta in figura, il contenuto di due file è affiancato: in rosso sono evidenziati gli elementi rimossi rispetto all’altra versione del file, in verde quelli aggiunti. Come si vede, il riferimento a "eric"
non viene evidenziato pur essendo in una riga successiva (line-wrapping). E ciò è assolutamente corretto, proprio perché non cambia la struttura dell’array.
Difftastic, infine, può essere utilizzato con Git seguendo le istruzioni riportate su GitHub. Per quanto riguarda la sua struttura, è un software open source con licenza MIT.
Quali sono i “contro” di una soluzione come Difftastic
Uno strumento come Difftastic, come anticipato nell’introduzione, è davvero prezioso per chi lavora ogni giorno con il codice di programmazione ed è abituato a “sporcarsi le mani”. Con buona pace di Jensen Huang, CEO di NVIDIA.
Difftastic, tuttavia, non è perfetto e ci sono situazioni in cui potrebbe andare inspiegabilmente in crash. Il difetto più evidente, comunque, riguarda la gestione di file con un gran numero di modifiche. La loro elaborazione può risultare faticosa e richiedere molta memoria.
Al momento, inoltre, Difftastic non genera “patch” ovvero file da usare per applicare le modifiche sulle versioni precedenti. Inoltre, non affronta il difficile problema del merging AST (Abstract Syntax Tree). AST è una rappresentazione strutturata del codice sorgente di un programma, dove ogni nodo corrisponde a un’entità sintattica come una dichiarazione di variabile, un’espressione condizionale o una funzione. Durante la modifica di un programma da parte di più persone in parallelo, possono sorgere conflitti tra i diversi interventi applicati a parti simili del codice.
Mentre Difftastic è efficace nel confrontare due versioni di un programma per evidenziare le differenze nella loro struttura sintattica, non fornisce funzionalità per risolvere automaticamente i conflitti tra le versioni.