Macchine programmabili: memoria, CPU e linguaggi

Prima di scrivere un programma, bisogna capire che cosa significa programmare una macchina. Un computer può eseguire compiti diversi perché memorizza istruzioni e dati; modificando il programma, cambia il comportamento senza ricostruire la macchina. Questa è la prima unità del percorso Fondamenti di programmazione 1 per la classe terza.

Programmi, sistemi esperti e machine learning

Nella programmazione tradizionale il programmatore definisce le istruzioni per risolvere il problema. In un sistema esperto si applicano fatti e regole fornite da specialisti mediante un motore di inferenza. Nel machine learning un algoritmo apprende regolarità dai dati durante l’addestramento: rimane comunque necessario programmare, preparare i dati e verificare il sistema.

ApproccioChi definisce il comportamentoEsempio
Programma tradizionaleAlgoritmo esplicitoCalcolare la media
Sistema espertoRegole e fatti codificatiDiagnosi guidata di guasti
Machine learningParametri appresi dagli esempiClassificazione di immagini

Il modello di Von Neumann

La memoria conserva istruzioni e dati; la CPU esegue istruzioni grazie all’unità di controllo e all’unità aritmetico-logica (ALU). Dispositivi di input e output consentono lo scambio di informazioni con l’esterno. I registri sono memorie interne molto veloci della CPU.

Il ciclo macchina: fetch, decode, execute

  • Fetch: la CPU preleva dalla memoria l’istruzione da eseguire.
  • Decode: l’unità di controllo interpreta l’istruzione e prepara le operazioni.
  • Execute: la CPU esegue l’operazione, aggiorna se necessario registri e memoria e prosegue.

Dal problema al linguaggio di programmazione

Un algoritmo è una strategia risolutiva descritta in passi finiti e non ambigui. Per eseguirlo su un computer, lo traduciamo in un linguaggio di programmazione. I linguaggi ad alto livello, come C# o C++, sono più vicini all’espressione umana del procedimento rispetto al linguaggio macchina. Un compilatore traduce il codice sorgente; altri ambienti utilizzano un interprete o un’esecuzione ibrida.

Primo esempio in C#

Console.WriteLine("Il computer esegue istruzioni.");
Console.WriteLine("Il risultato è visibile sullo schermo.");

La prima istruzione produce una riga di testo; la seconda produce una nuova riga. L’esecutore le segue nell’ordine definito dal programma.

Esercizi di comprensione

  • Disegna un blocco per memoria, CPU, input e output. Aggiungi frecce che rappresentino il movimento di dati e istruzioni.
  • Spiega con un esempio la differenza fra un algoritmo a regole e un modello addestrato sui dati.
  • Indica quali sono le tre fasi del ciclo macchina e descrivi che cosa accade in ciascuna.

Errore da evitare: non confondere la memoria centrale con l’archiviazione permanente: i programmi sono conservati su supporti di memorizzazione e caricati in memoria per l’esecuzione.

Nel percorso: Indice del corso · Variabili →