Che cos’è e come funziona un calcolatore digitale e il linguaggio macchina
Un calcolatore digitale è sostanzialmente una macchina in grado di risolvere dei problemi eseguendo le istruzioni che gli vengono fornite. Una sequenza di istruzioni che descrive come eseguire un certo compito è detta programma.
Un calcolatore digitale è dotato di un numero elevatissimo di circuiti elettronici: questi sono in grado di riconoscere ed eseguire “direttamente” solo un insieme limitato di istruzioni semplici; perciò, tutti i programmi, per poter essere eseguiti, devono essere convertiti (ed è sempre possibile farlo) in sequenze di tali istruzioni semplici. Generalmente, le istruzioni di base sono di 3 tipi fondamentali: somma di 2 numeri, controllo di un numero per vedere se è uguale a 0, spostamento di dati da una parte della memoria del calcolatore ad un’altra.
L’insieme delle istruzioni semplici di un calcolatore forma un linguaggio che permette all’utente di comunicare con il calcolatore: questo linguaggio prende il nome di linguaggio macchina.
Nel progettare un calcolatore, in base all’uso che se ne intende fare, si tende a semplificare il più possibile le istruzioni del linguaggio macchina, anche e soprattutto per ridurre la complessità ed il costo dell’elettronica da utilizzare. Tuttavia, lo svantaggio di questa elevata semplicità sta nella difficoltà, per l’utente, di utilizzarlo. Il problema viene allora risolto progettando un nuovo insieme di istruzioni, che risulti più conveniente da usare: mentre il linguaggio macchina verrà indicato nel seguito con L1 (e viene spesso detto linguaggio built-in), questo secondo insieme di istruzioni verrà indicato come linguaggio L2.
Il linguaggio L2 può essere a sua volta utilizzato in due modi differenti. Infatti, dato che un calcolatore può eseguire sempre e soltanto istruzioni in L1, si tratta di vedere in quali modi viene effettuato il passaggio da L2 ad L1 (linguaggio macchina):
- il primo metodo consiste nel sostituire ad ogni istruzione in L2 l’equivalente sequenza di istruzioni in linguaggio macchina L1: con questo metodo, detto di traduzione, il calcolatore esegue il nuovo programma in L1 anziché il programma originale in L2;
- il secondo metodo è invece un po’ più complesso: bisogna infatti scrivere un programma, in linguaggio macchina L1, che riceva in input i programmi in L2 e li esegua esaminando una istruzione dopo l’altra ed eseguendo per ognuna la sequenza equivalente di istruzioni in Questo secondo metodo è detto di interpretazione ed il programma in L1 che lo realizza prende il nome di interprete.
In generale, quindi, con la traduzione si passa prima al programma equivalente in L1 e poi lo si esegue; al contrario, con l’interpretazione, non viene generato alcun programma intermedio: ogni istruzione in L2 viene esaminata, decodificata e immediatamente eseguita. La caratteristica comune è, ovviamente, il fatto per cui il calcolatore esegue solo istruzioni in L1.
Ovviamente, per rendere pratici i processi di traduzione o di interpretazione, è necessario che i linguaggi L1 ed L2 non differiscano troppo tra loro: tuttavia, questo fa’ sì che anche L2 risulti non particolarmente comodo da usare per l’utente. Di qui l’idea (e spesso la necessità) di inventare anche un terzo insieme di istruzioni, questa volta più orientato all’utente che non alla macchina di quanto non avvenisse per L2. Indicheremo questo linguaggio con L3.
In generale, questa invenzione di una intera serie di linguaggi, ognuno più conveniente del suo predecessore, può proseguire teoricamente all’infinito; nella realtà, il processo si arresta quando si ottiene un linguaggio adatto alle proprie esigenze. Ogni linguaggio usa il suo predecessore come base, per cui è possibile considerare un calcolatore che usa questa tecnica come una serie di strati (o livelli), posti uno sopra l’altro e corrispondenti ciascuno ad un dato linguaggio. Evidentemente, il linguaggio di livello più basso è il più semplice ma anche il più scomodo (si tratta del linguaggio macchina), mentre invece quello di livello più alto è il più complicato ma anche più “familiare” per l’utente.