A passeggio con l’informatica – 15. Dalla virtualizzazione al cloud

Sedicesima puntata del nostro viaggio

Nella tappa n. 5 di questa passeggiata con l’informatica (Come istruire un computer) avevamo visto come fornire a un computer le istruzioni che esso deve eseguire. In quel post avevamo presentato un semplicissimo esempio di programma con istruzioni scritte in un linguaggio di programmazione a livello simbolico (brevemente, linguaggio simbolico), chiarendo che l’effettiva esecuzione da parte di un automa richiede invece istruzioni espresse in linguaggio di programmazione a livello macchina (cioè, linguaggio macchina).

Da un punto di vista concettuale possiamo considerare il computer “come se” fosse in grado di eseguire direttamente il programma in linguaggio simbolico. Questa visione del computer lo considera quindi come una macchina virtuale in grado di eseguire direttamente le istruzioni del linguaggio simbolico. Poiché  non lo è, per poter realizzare questo comportamento, deve essere fatta una traduzione del programma dal linguaggio simbolico a quello macchina.

La traduzione può avvenire in due modi, detti compilazione e interpretazione. La differenza tra i due è che con la compilazione il programma di livello simbolico viene interamente tradotto in quello di livello macchina e la sua esecuzione avviene dopo che l’intero processo di traduzione è terminato. Con l’interpretazione, invece, lo stesso programma viene tradotto un’istruzione per volta, che viene subito eseguita dalla macchina fisica. In alcuni casi è preferibile la compilazione, in altri l’interpretazione: entrambi gli approcci sono largamente usati. Si tratta della stessa differenza che c’è tra il traduttore di un libro, che vi consegna l’intero volume tradotto (compilazione) e l’interprete simultaneo, che invece esegue volta per volta la traduzione della frase pronunciata (interpretazione).

Se riprendete in considerazione la tappa n.5 vi rendete conto, però, che anche quel linguaggio simbolico era un po’ involuto, con termini non troppo chiarissimi (p.es., X Dim o Vai Y per indicare un’istruzione che verifica il contenuto della cella X e poi o lo decrementa o predispone la macchina per continuare con l’istruzione nella cella Y). Sarebbe bello quindi poter avere un linguaggio simbolico di alto livello, con istruzioni quasi vicine al senso comune e applicare lo stesso meccanismo di traduzione. In questo caso, il computer verrebbe considerato come una macchina virtuale in grado di eseguire direttamente programmi scritti in un linguaggio simbolico di alto livello, mentre in realtà il tutto passerebbe attraverso un processo di traduzione come precedentemente spiegato.

Questa visione concettuale di scatole cinesi (o di bamboline russe) viene illustrata, per la situazione appena descritta, nella figura sottostante.

 

Al livello più basso c’è la macchina fisica, cioè il livello dei circuiti elettronici, che sono in grado di eseguire fisicamente le operazioni logiche e aritmetiche. Quando si passa da questo livello a quello della macchina in grado di eseguire le istruzioni del linguaggio simbolico, si compie un processo di astrazione, si prescinde cioè da ciò che si ha fisicamente a disposizione, immaginando invece di avere qualcosa di più potente, cioè un calcolatore in grado di eseguire direttamente le istruzioni del linguaggio simbolico.

La macchina simbolica così definita non deve però essere fisicamente realizzata perché viene virtualmente ottenuta con il processo di traduzione delle istruzioni in linguaggio simbolico in quelle del linguaggio macchina, che vengono poi eseguite dalla macchina fisica.

Questo approccio viene anche chiamato virtualizzazione, proprio perché consente di avere a disposizione la macchina simbolica non mediante la sua effettiva costruzione fisica, ma attraverso la sua emulazione da parte di una macchina fisica, opportunamente istruita affinché produca i risultati che si sono chiesti alla macchina simbolica.

Nella realtà dell’informatica accade esattamente qualcosa di simile, estendendo ulteriormente questo meccanismo di virtualizzazione, come descritto in maggior dettaglio nel volume La rivoluzione informatica.

È utile ricordare che quando i calcolatori sono nati, nella prima metà del XX secolo, era disponibile solo il livello fisico, quello dei circuiti elettronici. Da subito, però, gli informatici hanno capito che la potenza concettuale di un esecutore automatico poteva essere impiegata per meccanizzare il processo di traduzione dall’espressione umana della procedura risolutiva a quella in grado di essere eseguita dalla macchina fisica. Oltre a consentire alle persone di operare al livello mentale più adeguato a loro, si evitavano in questo modo sia gli errori in cui fatalmente si incorre nel processo di traduzione sia quelli derivanti dal non esprimersi con lo strumento più adatto.

A partire dal secondo decennio del XXI secolo la virtualizzazione, che come abbiamo appena detto fa parte dell’informatica sin dalla sua nascita, ha assunto un ruolo sempre più importante. Infatti, la disponibilità capillare di una rete Internet ad alta velocità ha reso più conveniente, in tutta una serie di circostanze, non comprare direttamente macchine fisiche, cioè calcolatori – come si dice nell’ambiente – “di ferro”, che devono essere gestiti anche da un punto di vista fisico (protezione, spazio, climatizzazione, manutenzione, …), ma noleggiare macchine virtuali disponibili da qualche parte su Internet, appunto in cloud, cioè “nella nuvola” (termine che deriva dal fatto che negli schemi di descrizione a livello aziendale dei sistemi informatici la parte della rete di comunicazione veniva convenzionalmente rappresentata da una nuvoletta).

Chiudo questa sezione ricordando che lo stesso meccanismo di virtualizzazione che ha permesso lo sviluppo del cloud ci consente di “far rivivere” modelli di calcolatori ormai fuori commercio o che non sono più in grado di funzionare fisicamente, consentendo a loro emulatori, cioè macchine virtuali che si appoggiano su macchine funzionanti, di eseguire il software che ancora esiste per essi ma che non è più in grado di essere eseguito né da tali modelli né direttamente dalle macchine moderne.

 

( I post di questa serie sono basati sul libro dell’Autore La rivoluzione informatica: conoscenza, consapevolezza e potere nella società digitale, al quale si rimanda per approfondimenti. I lettori interessati al tema possono anche dialogare con l’Autore, su questo blog interdisciplinare, su cui i post vengono ripubblicati a partire dal terzo giorno successivo alla pubblicazione in questa sede. )