Prima del programma riconosciamo i luoghi in cui avvengono le operazioni. Scriviamo nell’editor, richiamiamo comandi nel terminale e leggiamo la diagnostica nell’area appropriata. L’esecuzione non avviene necessariamente nel pannello che ha mostrato un suggerimento mentre scrivevamo.
In questa pagina useremo comandi di orientamento e di versione. Il codice completo dei programmi arriverà nella pagina 1.7, dopo la creazione dei file.
Aprire il terminale integrato
Il terminale è un’interfaccia testuale ospitata in VS Code. Si apre dal menu Terminal → New Terminal / Terminale → Nuovo terminale, oppure cercando il relativo comando nella Command Palette. Appare nel pannello o nella posizione scelta dal layout.
L’apertura avvia una shell, un programma che interpreta i comandi digitati. PowerShell, Bash e zsh sono shell differenti. Il terminale non è il compilatore e non decide automaticamente quale linguaggio debba eseguire: riceve un comando come node o gcc e lo inoltra secondo le regole della shell.

Schermata Microsoft, documentazione VS Code. Fonte · CC BY 3.0 US. Riprodotta senza modifiche; versione e lingua possono differire dalla tua installazione.
La finestra deve lavorare in un progetto di cui ci si fida. Restricted Mode può limitare l’apertura del terminale e altre funzioni. Se una funzione è disabilitata, si controlla lo stato di fiducia della cartella invece di reinstallare immediatamente l’editor.
Shell, prompt e cartella corrente
Il prompt è il punto in cui la shell propone l’inserimento. Può mostrare directory, utente o branch, ma la sua forma è personalizzabile. Una riga con $, > o altri simboli in una guida può rappresentare il prompt: non va copiata automaticamente come parte del comando.
La directory corrente è la cartella da cui si parte per molti percorsi relativi. Il comando python main.py cerca il file secondo quel contesto. Se il file si trova in una sottocartella, si cambia directory oppure si indica il percorso corretto. Selezionare il file nell’editor non garantisce che il terminale abbia cambiato cartella.
Windows
In PowerShell, Get-Location mostra la directory e Get-ChildItem ne elenca il contenuto. Set-Location 'C:\progetti\primo-programma' si sposta nel percorso indicato, che deve esistere. cd è un alias comune per lo spostamento.
Linux
In Bash, pwd mostra la directory corrente e ls elenca il contenuto. cd ~/progetti/primo-programma si sposta nel percorso. Il simbolo ~ indica la home dell’utente nel contesto della shell.
macOS
In zsh, pwd, ls e cd hanno il ruolo illustrato per l’orientamento. I percorsi possono differire da quelli Linux: un esempio con /home non va copiato senza adattarlo alla home del Mac.
Scegliere la shell e gestire più terminali
Il menu vicino al pulsante di creazione del terminale permette di scegliere un profilo tra quelli disponibili. Terminal: Select Default Profile configura il profilo per nuove sessioni; non converte necessariamente le sessioni già aperte. La shell scelta determina sintassi di variabili e quoting.

Schermata Microsoft, documentazione VS Code. Fonte · CC BY 3.0 US. Riprodotta senza modifiche; versione e lingua possono differire dalla tua installazione.
Più terminali sono utili quando un server deve restare attivo e serve una seconda shell per altri comandi. Ogni sessione ha una propria directory e variabili. Rinominare le sessioni come server e comandi aiuta a riconoscere dove scrivere. La divisione del terminale affianca sessioni senza unificarne lo stato.
Il pulsante per chiudere la vista e quello per terminare una sessione hanno effetti differenti. Nascondere il pannello lascia normalmente il processo nella sessione; terminare il terminale può fermarlo. Si leggono nome e stato prima di interrompere un server utilizzato da un altro passaggio.
Inserire un comando e leggere il risultato
Un comando ha un nome e può avere argomenti. In node --version, node è l’eseguibile e --version è un’opzione. In node app.js, app.js indica il file da avviare. Il significato degli argomenti appartiene al programma richiamato.
node --versionSe Node è disponibile, compare una versione e poi ritorna il prompt. Se la shell dice che il comando non esiste, il problema riguarda la disponibilità dello strumento. Se node parte ma non trova app.js, il problema successivo riguarda il percorso del sorgente.
Un processo può restare attivo e non restituire subito il prompt. Un server HTTP ne è un esempio: aspetta richieste. Un programma interattivo può invece aspettare input. In quel momento ciò che si digita potrebbe essere inviato al programma, non interpretato come un nuovo comando della shell.
Le virgolette delimitano argomenti che contengono spazi. Le regole variano con la shell: un comando PowerShell con variabili non si trasferisce automaticamente in Bash. Per questo i comandi diversi tra sistemi sono mostrati nelle schede dedicate.
Pannello Problemi: errori e avvisi
Problemi presenta messaggi riconosciuti dai servizi del linguaggio, linter o strumenti collegati alla build. Una voce può contenere file, riga, colonna, severità e origine. Selezionandola si raggiunge normalmente il punto del documento a cui si riferisce.
Un errore di sintassi può essere segnalato prima di avviare il programma. Un errore logico, come un calcolo sbagliato ma sintatticamente valido, può non comparire. Anche una build dal terminale può fallire senza creare voci in Problemi se l’output non viene interpretato da un’integrazione appropriata.
Il numero zero in questo pannello non dimostra quindi che il programma sia corretto. Indica l’assenza di segnalazioni riconosciute in quel momento. Se un’analisi è inattiva o punta a un ambiente diverso, può produrre un quadro incompleto. Si legge l’origine del messaggio e si confronta con il comando reale quando necessario.
Pannello Output: messaggi degli strumenti
Output raccoglie canali di log dell’editor e delle estensioni. Un selettore permette di scegliere la fonte. Se un servizio del linguaggio non si avvia, il relativo canale può spiegare perché. Un’altra fonte può mostrare informazioni su un’operazione del componente.
Non è normalmente un terminale interattivo. Scrivere un comando come gcc in Output non è il modo di compilare C. Se un’estensione mostra qui il risultato di un’operazione, tale comportamento va distinto dal terminale usato dal programma.
Il nome del canale è fondamentale: un messaggio del servizio Python non spiega necessariamente un problema Node. Si conserva il messaggio completo, non soltanto l’ultima riga, e si evita di condividere credenziali o dati riservati eventualmente presenti nel log.
Vista Esegui e debug e Debug Console
La vista Esegui e debug permette di scegliere e gestire configurazioni. Il debugger può fermare il programma, osservare variabili e seguire le chiamate. La Debug Console può valutare espressioni nel contesto della sessione, secondo il supporto dell’adattatore.

Schermata Microsoft, documentazione VS Code. Fonte · CC BY 3.0 US. Riprodotta senza modifiche; versione e lingua possono differire dalla tua installazione.
Avviare senza debug ed eseguire con il debugger non sono operazioni identiche. Nel primo caso si osserva normalmente l’output; nel secondo si possono introdurre pause e leggere stato interno. Entrambi richiedono il runtime o l’eseguibile corretto.
Una console di debug non interpreta necessariamente comandi della shell. cd o un comando di installazione non sono espressioni universali del debugger. I programmi che chiedono input possono richiedere il terminale integrato o esterno. Il primo capitolo privilegia l’avvio esplicito; le configurazioni avanzate saranno spiegate successivamente.
Browser e finestre esterne
HTML e CSS mostrano il risultato nel browser. Il terminale può ospitare un server, ma non contiene il rendering della pagina. Per JavaScript si distingue il programma Node, che produce output nel terminale, da codice eseguito dentro una pagina web, osservabile anche attraverso gli strumenti del browser.
Un programma grafico compilato può aprire una propria finestra. Il terminale rimane il punto da cui è partito, ma l’interfaccia applicativa vive altrove. Il luogo del risultato dipende dall’applicazione, non dalla posizione delle schede di VS Code.
Quando si usa un URL, si controllano indirizzo e porta. Un browser già aperto può mostrare una pagina precedente, un’altra copia del progetto o un server diverso. Per i file locali si controlla il percorso; per i server si legge anche il log di avvio.
Quale area consultare nelle diverse situazioni

Schema esplicativo originale creato per il capitolo.
| Situazione | Area principale | Controllo utile |
|---|---|---|
| Devo scrivere o correggere una riga | Editor | Documento attivo e salvataggio |
| Devo compilare o avviare con un comando | Terminale | Shell, directory e toolchain |
| Voglio raggiungere una segnalazione | Problemi | Origine, file, riga e messaggio |
| Un’estensione non funziona | Output | Canale del componente interessato |
| Voglio leggere una variabile durante una pausa | Debugger e Debug Console | Sessione e frame selezionato |
| Voglio vedere la pagina HTML | Browser | Percorso oppure URL e porta |
Le aree possono collaborare: un task lancia il compilatore nel terminale e trasferisce diagnostica a Problemi; un debugger avvia il processo e ne mostra l’output nel terminale. La collaborazione non ne annulla le differenze. Comprenderle rende leggibile il percorso del primo programma.