CHI HA PAURA DELL’INTELLIGENZA ARTIFICIALE?
Questa guida è strutturata per trasformare il debugging da momento di frustrazione a processo metodico di indagine scientifica. Debuggare non significa solo "aggiustare il codice", ma comprendere profondamente il flusso d'esecuzione del software.
In Python, non tutti gli errori si manifestano allo stesso modo. Saperli distinguere è il primo passo per risolverli.
Errori Sintattici (Syntax Errors): Sono violazioni delle regole grammaticali del linguaggio. Il codice non viene nemmeno avviato.
Esempio: if x = 5: (manca il doppio uguale) o una parentesi non chiusa.
Errori di Runtime (Exceptions): Il codice è scritto bene, ma accade qualcosa di imprevisto durante l'esecuzione che il computer non sa gestire.
Esempio: 10 / 0 (ZeroDivisionError) o cercare di aprire un file che non esiste.
Errori Logici (Semantic Errors): I più insidiosi. Il programma gira senza errori, ma il risultato è sbagliato.
Esempio: Calcolare la media dividendo per un numero errato o usare > al posto di <.
Invece di cambiare il codice a caso sperando che funzioni, segui queste tecniche:
Isolamento (Divide et Impera): Se hai un programma di 100 righe, commentane una parte o sposta le funzioni sospette in un file separato per testarle singolarmente.
Stampe di Controllo (Print Debugging): Inserire print(f"Valore di x: {x}") prima e dopo un'operazione critica per verificare se i dati sono quelli attesi.
Rubber Duck Debugging: Spiegare il codice riga per riga a un oggetto inanimato (o a un collega). Spesso l'errore balza all'occhio nell'atto di verbalizzare la logica.
I moderni ambienti di sviluppo (IDE) offrono strumenti molto più potenti della semplice stampa a video.
Breakpoint: Un "posto di blocco" che metti su una riga di codice. L'esecuzione si fermerà esattamente lì.
Step Over: Esegue la riga corrente e passa alla successiva.
Step Into: Entra dentro una funzione per vedere cosa succede al suo interno.
Variable Watch: Una finestra che mostra il valore di tutte le variabili attive. Se vedi un None dove ti aspetti un numero, hai trovato il colpevole.
Consiglio didattico: Su Thonny, l'icona della "fogliolina" (Debug current script) permette di vedere Python che valuta ogni singola sotto-espressione, ideale per i principianti.
Il Traceback è la "scatola nera" del tuo crash. Va letto dal basso verso l'alto:
L'ultima riga ti dice cosa è successo (es. NameError: name 'y' is not defined).
Le righe precedenti ti dicono dove è successo (file e numero di riga).
| Attività | Descrizione | Obiettivo |
| Caccia al Bug | Fornire un codice che calcola l'area del cerchio ma usa + invece di *. | Distinguere tra errore logico e sintattico. |
| Diario del Debug | Chiedere allo studente di scrivere: "Cosa pensavo facesse il codice" vs "Cosa faceva davvero". | Sviluppare metacognizione. |
| Analisi del Flusso | Usare il debugger di VS Code per monitorare un ciclo for che non termina mai. | Capire il controllo di flusso e le condizioni di uscita. |
Commenti
Posta un commento