Ciao, e benvenuto nella quarta puntata della sessantaquattresima stagione. Abbiamo un esecutore stupido e velocissimo, e due posti dove tiene i numeri. Ma cosa fa, esattamente, momento per momento? Qual è il gesto che ripete senza sosta, dall'istante in cui accendi il computer a quello in cui lo spegni? Oggi andiamo a scoprire il battito del cuore di ogni processore. Oggi parliamo di preleva, decodifica, esegui.
Partiamo dal ricordarci una cosa detta la scorsa volta: anche il programma è fatto di numeri. Le istruzioni da eseguire, quegli ordini elementari, non stanno in un posto speciale e magico: stanno in memoria, nel magazzino, come tutti gli altri numeri, su scaffali numerati uno dopo l'altro. Il processore, quindi, deve andarsi a prendere le sue istruzioni proprio da lì, una alla volta, e poi eseguirle. Tenere a mente questo è già metà del segreto: il programma non è qualcosa che vive dentro il processore, ma qualcosa che il processore va a leggere dalla memoria, passo dopo passo.
Voglio darti il primo tempo del battito, il prelievo. Il processore tiene sempre un promemoria di dove si trova: un segnaposto che indica l'indirizzo della prossima istruzione da eseguire. Il primo gesto è andare a quell'indirizzo in memoria e prelevare l'istruzione che vi è scritta, portandosela dentro. È come un lettore che tiene il dito sulla riga che sta per leggere, va a prenderla, e se la mette davanti agli occhi. Preleva: vai a prendere la prossima istruzione dallo scaffale indicato dal segnaposto.
Voglio darti il secondo tempo, la decodifica. Una volta presa, l'istruzione è solo un numero, o un gruppetto di numeri. Il processore deve capire cosa significa: questo numero vuol dire somma? Vuol dire sposta? Vuol dire salta? E su quali altri numeri deve agire? Questo passaggio si chiama decodifica: interpretare l'istruzione grezza per capire quale delle sue poche operazioni deve compiere, e su cosa. È come il lettore che, guardata la parola, ne riconosce il significato. Decodifica: capisci che ordine è, e a cosa si riferisce.
Voglio darti il terzo tempo, l'esecuzione. Ora che sa cosa fare, il processore lo fa. Se l'ordine era sommare due numeri, li somma. Se era spostare un numero da un registro alla memoria, lo sposta. Se era saltare, cambia il segnaposto. È il momento in cui l'ordine diventa azione concreta. Esegui: compi finalmente l'operazione. E poi, subito, il segnaposto avanza all'istruzione successiva, e il battito ricomincia da capo. Preleva, decodifica, esegui. Preleva, decodifica, esegui. Miliardi di volte al secondo, senza mai fermarsi. Questo ciclo è il tempo stesso della macchina: non c'è un momento in cui il processore riposa o riflette; finché è acceso, preleva, decodifica ed esegue, in un battito continuo e regolare come un metronomo impazzito.
Voglio darti l'immagine che rende chiara questa idea, perché la fissa. Immagina qualcuno che segue una lunghissima ricetta, scritta su un rotolo, un passo per riga. Tiene il dito sul passo attuale. Legge il passo che sta indicando: questo è il prelievo. Capisce cosa gli chiede, per esempio versa due bicchieri d'acqua: questa è la decodifica. Compie il gesto, versa davvero l'acqua: questa è l'esecuzione. Poi sposta il dito alla riga sotto, e ricomincia. Il processore è esattamente questo lettore instancabile di ricette, che scorre riga per riga a una velocità impossibile, senza mai stancarsi e senza mai capire davvero cosa sta cucinando.
Voglio farti notare una cosa importante sul segnaposto, perché è la chiave di tutto. Di solito il segnaposto avanza semplicemente alla riga successiva, in ordine, una dopo l'altra. Ma non è obbligato. Certe istruzioni, quelle di salto, possono spostarlo altrove: alla riga cento, o alla riga mille, avanti o indietro. Ed è proprio questa possibilità di spostare il segnaposto dove si vuole a rendere possibile tutto il resto: ripetere le cose, prendere decisioni, saltare da una parte all'altra del programma. Senza i salti, un programma sarebbe solo una lista dritta di ordini eseguiti una volta sola, dall'inizio alla fine, e nulla di più. Con i salti, invece, quella lista può piegarsi su se stessa, tornare indietro, biforcarsi. Ma di questo, di come da un semplice salto nascano cicli e decisioni, parleremo per bene la prossima volta.
Per oggi ci fermiamo qui. Abbiamo scoperto il battito del processore. Il programma stesso è fatto di numeri, e vive in memoria, su scaffali numerati. Il processore lo esegue con un ciclo eterno in tre tempi. Preleva: va a prendere la prossima istruzione all'indirizzo segnato dal suo segnaposto. Decodifica: capisce che ordine è, e su cosa agisce. Esegui: compie l'operazione, e il segnaposto avanza. Come un lettore instancabile che segue una ricetta riga per riga, a velocità impossibile. E il segreto sta nel segnaposto: di solito avanza in ordine, ma i salti possono spostarlo dove vogliono, ed è da lì che nasce tutto il resto. Nella prossima puntata: non esistono i cicli né le funzioni, solo salti. Nelle note trovi qualche spunto. Se ti è utile, condividila. Grazie per l'ascolto, e ci sentiamo alla prossima.