Debug
Nella programmazione informatica spesso l’errore non è vistoso, è una piccola imperfezione che blocca un funzionamento, o che restituisce risultati diversi da quelli attesi. I piccoli difetti o errori si annidano come insetti perniciosi nelle pieghe del programma, e sono chiamati bug, letteralmente gli insetti attirati dalla luce che vanno a bruciarsi contro le lampade nelle sere d’estate. Per estensione il termine bug indica un problema tecnico di qualsiasi genere, anche non informatico.
Per cui il debug è la bonifica, la ripulitura da imperfezioni, errori, difetti, malfunzionamenti.
Gli errori possono essere sintattici (un enunciato scritto male), semantici (un significato sbagliato o frainteso) e di runtime (quando si fa girare quel dato pezzo di programma, qualcosa non funziona come dovrebbe). Questi errori sono segnalati e automaticamente dal debugger, un software che esegue il programma a piccoli passi e si ferma quando c’è un problema. A questa rilevazione degli errori segue un primo debugging in cui il programmatore cerca di capire che cosa fare per eliminare il problema. Oppure il programma viene collaudato dagli alfa tester interni e il programmatore deve interpretarne le osservazioni per tradurle in correzioni da applicare. Infine il programma è dato in prova ai beta tester o ai clienti, e i programmatori provvederanno a rilasciare nuove versioni che correggono le anomalie riscontrate.
Il debug in genere va fatto da persone diverse da quelle che hanno scritto il programma, perché gli errori saltano fuori quando il programma intero o parte di esso è usato con ragionamenti diversi da quelli che hanno portato a scriverlo.
Per ridurre la possibilità di errori e facilitare le correzioni è bene scrivere il codice in modo leggibile e chiaro, usando convenzioni semplici per definire le varie classi di oggetti, e commenti che spieghino in modo sintetico a che cosa serve quel rigo di programma.
Nell’XP o extreme programming si usa la programmazione appaiata (uno scrive e uno controlla) per eliminare il più possibile a monte le possibilità di errore.