Riepilogo
Questa lezione fissa il modo di lavorare che il corso seguirà fino alla fine. Descrive il ciclo di modificare, salvare, compilare, eseguire e leggere, e spiega perché conviene che l’errore venga scoperto nella fase più precoce possibile; presenta il comando di compilazione che il corso raccomanda e ciò che fa ciascuna delle sue opzioni; mostra come percorrere il ciclo dal terminale e come configurare Visual Studio Code perché compili con le stesse opzioni; insegna a distinguere nell’output del compilatore un errore da un avviso e a individuare la riga a cui si riferiscono; presenta i sanitizer, che fermano il programma quando incorre in certi comportamenti indefiniti e indicano la riga; e lascia la console pronta a mostrare gli accenti e la ñ.
Obiettivi di apprendimento
- Compilare un programma dal terminale con le opzioni del corso (
-std=c++23 -Wall -Wextrae le altre), dare un nome all’eseguibile con-oed eseguirlo. - Configurare Visual Studio Code perché compili con le stesse opzioni del terminale e mostri gli avvisi nel suo pannello Problemi.
- Distinguere nell’output del compilatore un errore da un avviso, nominare l’opzione che ha prodotto ciascun avviso e individuare la riga a cui si riferisce.
- Attivare i sanitizer degli errori di memoria e del comportamento indefinito, e riconoscere nel loro rapporto il tipo di guasto e la riga in cui si è verificato.
- Diagnosticare perché un output mostra simboli strani al posto degli accenti e della ñ, e configurare l’editor e la console perché si vedano correttamente.
Il ciclo di lavoro
Scrivere un programma non è un atto unico, ma un ciclo che si ripete decine di volte in una stessa sessione. Ha cinque momenti: si modifica il codice sorgente; si salva il file, perché il compilatore legge il disco e non lo schermo dell’editor; si compila, cioè si chiede al compilatore di tradurre il file in un eseguibile; si esegue il risultato; e si legge con attenzione tutto ciò che il compilatore e il programma hanno scritto. Ciò che si è letto conduce a una nuova modifica, e il ciclo ricomincia.
L’ultimo momento è quello che si trascura di più e quello che importa di più. La premessa è semplice: un difetto costa tanto più correggerlo quanto più tardi lo si scopre. Se il compilatore lo segnala, si sa in quale riga e quasi sempre perché; se si manifesta durante l’esecuzione, si sa soltanto che qualcosa è andato storto; se si manifesta settimane dopo, con altri dati, può darsi che nessuno arrivi mai a conoscerne la causa. Ne segue che conviene scoprire i difetti il prima possibile, e che il compilatore va trattato come il primo revisore del programma: un lettore instancabile che, ben configurato, avverte di molto più che degli errori di battitura.
Questa lezione configura quel revisore su tre livelli: gli errori, che impediscono di ottenere l’eseguibile; gli avvisi del compilatore, che lo permettono, ma segnalano codice sospetto; e i sanitizer, che sorvegliano il programma mentre viene eseguito. Presuppone installati il compilatore e l’editor (lezione 1.3). Gli esempi usano variabili e istruzioni if, che saranno spiegate nelle lezioni 2.1 e 4.1; qui basta leggerli.
Caricamento del contenuto…