Nella pratica della programmazione possono comparire errori lessicali, sintattici e logici.
Il compilatore interrompe la traduzione del codice sorgente quando riconosce un errore lessicale o sintattico e lo segnala al programmatore in modo più o meno corretto…
Gli esempi seguenti si riferiscono al linguaggio di programmazione Pascal.
Errori lessicali
La parola non appartiene al linguaggio
- Than, invece di Then
- Cost, invece di Const
- …
L’editor che evidenzia la sintassi colora le parole inesistenti in modo diverso…
Errori sintattici
La struttura della frase è sbagliata
If x = 0
Istruzione;
Manca Then
If x = 0 Then
Istruzione1;
Else
Istruzione2;
Il punto e virgola prima dell’Else è proibito
Il compilatore individua gli errori di sintassi e l’esecuzione non parte.
Errori logici
Gli errori logici si rivelano quando il programma è in esecuzione (run-time) perché succedono delle cose strane
- i risultati sono sbagliati
- continua per sempre (?) a scrivere risultati
- il programma si blocca (non va avanti, non compaiono i risultati)
- il programma si interrompe (il controllo torna all’ambiente di sviluppo o al sistema operativo)
Testing
Per individuare eventuali errori logici si passa alla fase di testing

Si mette più volte alla prova il programma oggetto utilizzando dati in ingresso
- diversi (diverse istanze del problema)
- significativi (casi particolari, dubbi)
- sicuri (per i quali si conosce già la risposta corrispondente)
Debugging
Quando la risposta ottenuta non è quella attesa si passa alla fase di debugging per individuare gli errori commessi nella stesura del sorgente / programma / algoritmo (e se fosse sbagliato il problema?).

La fase di testing and debugging si conclude quando si raggiunge la ragionevole certezza che il software non contenga errori logici.
Debugger
Alcuni ambienti di sviluppo forniscono un debugger.
Si tratta di funzionalità aggiuntive che aiutano il programmatore a individuare gli errori
- eseguire il codice istruzione per istruzione
- inserire dei punti di interruzione dell’esecuzione
- seguire passo-passo gli aggiornamenti delle variabili
- …
Errori comuni
Con la pratica si riconosceranno alcuni errori molto frequenti
- caso particolare del problema non previsto
- confusione tra variabili con nomi simili
- divisione per zero
- argomento illegale di una funzione (radice quadrata, resto, logaritmo, …)
- loop infinito, un ciclo While che non termina mai
- …
Alcuni errori logici possono essere frequenti con un linguaggio di programmazione e impossibili con un altro
- uso di variabili non inizializzate: BASIC, PASCAL
- indentazione scorretta: PYTHON
- else ciondolante: C, PASCAL
- …