Diciassettesima puntata del nostro viaggio
In quest’ultimo post dedicato alla presentazione dei concetti fondamentali dell’informatica iniziamo ad affrontare quello che forse è il contributo più rilevante da un punto di vista culturale apportato da questa disciplina alla visione del mondo
I concetti di algoritmo, linguaggio, automa, che – insieme agli altri – abbiamo esplorato nei precedenti post di questa serie, fanno parte del bagaglio concettuale di un informatico e sono gli strumenti intellettuali che un informatico usa per modellare e interpretare il mondo. Essi possono essere impiegati con successo per fornire descrizioni complementari a quelle fornite da altre scienze, per esprimere il punto di vista informatico sui fenomeni, arricchendo così la capacità di comprendere la realtà intorno a noi.
Nel post n. 5 (Come istruire un computer) avevamo presentato un semplice programma scritto in linguaggio simbolico per una semplicissima macchina a registri (MR). Avevamo poi commentato che tale automa, per poter eseguire effettivamente il programma ha bisogno di una sua traduzione in linguaggio macchina. Come abbiamo infatti spiegato nel precedente post (Dalla virtualizzazione al cloud), il livello della macchina fisica è l’unico che può concretamente eseguire i programmi e ha bisogno di un linguaggio al suo livello (si veda la figura del post).
Nella figura sottostante, dove a sinistra vi sono le istruzioni e a destra i dati, viene presentata la versione in linguaggio macchina del programma presentato nel post n. 5.
Rimandando alla sezione 4.2.2 del volume La rivoluzione informatica per una spiegazione di dettaglio di come tale programma viene ottenuto dalla versione in linguaggio simbolico, qui lo prendiamo così com’è perché ci serve per iniziare a discutere un concetto molto rilevante dell’informatica, cioè la natura duale che ha la rappresentazione per l’esecutore.
Infatti, ciò che c’è scritto nelle celle di memoria della MR non ha un’intrinseca caratterizzazione come dato o come istruzione. Nell’esempio di programma in linguaggio simbolico per MR presentato nella figura del post n. 5 (Come istruire un computer) abbiamo distinto la zona di memoria con il programma e quella con i dati a solo scopo didattico. In quell’esempio noi, in quanto esseri umani, possiamo distinguere se ciò che leggiamo in una cella è un’istruzione o un dato, ma dal punto di vista della macchina stessa questa distinzione in realtà non esiste. Consideriamo la seconda figura del post n. 4 (Come funziona un computer): in tale figura, c’è scritto che la MR “legge l’istruzione all’indirizzo IC”, quando in realtà la MR sta leggendo semplicemente una sequenza di “0” e “1” e non ha – diversamente da noi esseri umani – alcuna consapevolezza che ciò che legge sia un’istruzione. Soltanto l’azione espressa in basso nella stessa figura, “esegui istruzione letta”, assegnerà l’effettiva natura di istruzione a quella sequenza binaria.
Ciò si capisce bene nella versione in linguaggio macchina del programma mostrato nella figura qua sopra. Infatti, in tale figura, nella cella di memoria di indirizzo 0 (che contiene un’istruzione) c’è scritta la sequenza “0000 00 0001”, ma anche nelle celle di memoria di indirizzo 15 e 16 (che contengono dati che il programma deve elaborare), c’è scritto lo stesso valore “0000 00 0001” (ricordate che gli spazi non contano). Nello stesso modo, nella cella 6 (istruzione) c’è scritto “0000 00 0000”, che è lo stesso valore scritto sia nella cella 10 che 17 (entrambi dati).
Questa osservazione implica che ogni dato gestito da una MR, o da qualunque calcolatore, ha in realtà una natura duale, potendo essere interpretato anche come un’istruzione per la macchina. Questa natura duale del dato fornisce all’informatica un potere di “replicazione” che in precedenza era posseduto solo da sistemi biologici. È proprio questa natura duale il meccanismo concettuale di base per la costruzione dei virus informatici, che arrivano nei dispositivi digitali come dati e poi entrano in azione come programmi.
Nel prossimo post vedremo un esempio concreto di tale capacità di replicazione.
(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.)