Linguaggi di programmazione
Istruzioni macchina
Le istruzioni elementari eseguite da un computer (cioè dalla sua CPU) si chiamano istruzioni macchina. L’insieme di istruzioni macchina (instruction set) è specifico di una particolare CPU. La CPU è un interprete dell'insieme di istruzioni macchina (instruction set) della CPU stessa. Una particolare CPU è la cosiddetta macchina virtuale Java (JVM, Java Virtual Machine), anche se la JVM non è una vera CPU. La codifica delle istruzioni macchina avviene sotto forma di configurazioni di bit conservate in memoria (che possono essere interpretate come numeri interi).
In tutte le CPU, le istruzioni macchina si possono suddividere nelle seguenti categorie:
- Trasferimento dati, tra registri e memoria principale
- Operazioni aritmetiche e logiche
- Salti, per alterare il flusso di esecuzione sequenziale (viene modificato il Program Counter)
Assemblatore e linguaggi assembly
Per eseguire un programma in un computer è necessario scrivere all’interno della memoria primaria le configurazioni di bit corrispondenti alle istruzioni macchina del programma. Questo compito è svolto dall’assemblatore (assembler). Utilizzando l’assemblatore, il programmatore scrive il programma mediante dei nomi abbreviati (codici mnemonici) per le istruzioni macchina, molto più facili da ricordare. Tali linguaggi con codici mnemonici si dicono linguaggi assembly (uno diverso per ogni CPU). Il programma assemblatore riceve in ingresso un file contenente codice in linguaggio assembly e produce in uscita un file contenente istruzioni macchina.
Linguaggi ad alto livello
Grazie ai linguaggi di programmazione ad alto livello (Java, C++, …) il programmatore esprime la sequenza di operazioni da compiere, senza scendere al livello di dettaglio delle istruzioni macchina. Un programma, detto compilatore, legge il programma in linguaggio ad alto livello e genera il corrispondente programma nel linguaggio macchina di una certa CPU. I linguaggi ad alto livello sono indipendenti dalla CPU, ma il prodotto della compilazione (codice eseguibile) non è indipendente dalla CPU. Occorre compilare il programma con un diverso compilatore per ogni CPU sulla quale lo si vuole eseguire. Si dice codice sorgente il codice scritto in un linguaggio ad alto livello. Si dice codice eseguibile il codice scritto nel linguaggio macchina.