Macchine universali
QUANDO avevo circa dodici anni, c’erano in commercio dei kit che permettevano di assemblare un circuito elettronico in grado di compiere diverse funzioni interessanti. Si poteva costruire una radio, un circuito per sommare due numeri binari, un dispositivo per codificare o decodificare un messaggio usando un cifrario a sostituzione, un «cervello» che vi sfidava a tris, e altre cose del genere. Ciascuna di queste macchine era dedicata, cioè poteva fare soltanto un tipo di giochetto. E’ questo il classico significato di «macchina» con il quale siamo cresciuti. Siamo abituati all’idea che il frigorifero è una macchina dedicata a man tenere fredde le cose, e che la sveglia è una macchina dedicata a farci alzare da letto la mattina, e così via. Più recentemente, però, abbiamo cominciato ad abituarci a macchine che trascendono i loro scopi originari.
Prendiamo i telefoni cellulari, per esempio. Al giorno d’oggi, per essere concorrenziali, i cellulari sono commercializzati non tanto (forse addirittura ben poco) in base alla loro funzione originaria di dispositivi di comunicazione, bensì piuttosto per il numero di suonerie che possono contenere, il numero di giochi che vi si possono giocare, la qualità delle foto che possono scattare, e chissà cos’altro! Una volta i cellulari erano macchine dedicate, ora non più. E perché è così? Perché i loro circuiti interni hanno superato una certa soglia di complessità, e questo li dota di una natura camaleontica. Potete usare l’hardware di un cellulare per farvi girare un software per l’elaborazione di testi, un programma per navigare in Internet, un sacco di videogiochi, e così via. È questa, in definitiva, l’essenza della rivoluzione informatica: superata una certa soglia ben definita - che chiamerò «soglia di Gòdel-Turing» - un computer è in grado di emulare qualunque tipo di macchina.
È questo il significato del termine «macchina universale»,1 introdotto nel 1936 dal matematico e pioniere dei computer inglese Alan Turing, e noi oggi abbiamo grande familiarità con la sua idea di base, anche se la maggior parte delle persone non conosce il termine tecnico o il concetto. Scarichiamo abitualmente da Internet macchine virtuali che possono trasformare i nostri computer portatili universali in dispositivi temporaneamente specializzati per guardare film, ascoltare musica, giocare, fare chiamate telefoniche internazionali a basso costo, e chissà cos’altro. Macchine di tutti i tipi ci giungono via cavo o perfino attraverso l’etere, per mezzo di software, attraverso pattern, sciamano dentro i nostri hardware computazionali e li abitano. Una singola macchina universale si metamorfizza assumendo nuove funzionalità in un batter d’occhio o, per meglio dire, in un doppio clic di mouse. Io salto avanti e indietro fra il programma di posta elettronica, l’elaboratore di testi, il programma per navigare in Internet, il visualizzatore di foto e una dozzina di altre «applicazioni» che vivono tutte dentro il mio computer. In ogni dato momento, la maggior parte di queste macchine dedicate e indipendenti giacciono lì dormienti, in sonno, aspettando pazientemente (in realtà, inconsapevolmente) di essere risvegliate da un mio regale doppio clic per tornare obbedienti in vita a eseguire i miei ordini.
Ispirato dalla mappatura di PM su sé stesso fatta da Godel, Alan Turing si rese conto che la soglia critica di questo tipo di universalità computazionale si presenta nel momento esatto in cui una macchina è abbastanza flessibile da leggere e interpretare correttamente un insieme di dati che descrive la sua struttura. In questo frangente cruciale una macchina può, in linea di principio, osservare esplicitamente il modo in cui svolge qualsiasi compito specifico, passo dopo passo. Turing si rese conto che una macchina dotata di un tale livello critico di flessibilità può imitare qualunque altra macchina, per quanto complessa essa sia. In altre parole, nulla è più flessibile di una macchina universale. E l’universalità è il massimo che potete ottenere!
E’ per questo che il mio Macintosh è in grado, sempre che io l’abbia alimentato con il software appropriato, di comportarsi in maniera indistinguibile dal più costoso e più veloce computer «Alienware» di mio figlio (qualunque specifico programma esegua), e viceversa. L’unica differenza sta nella velocità, perché il mio Mac rimarrà sempre, nelle sue più intime fibre, un Mac. Dovrà quindi imitare il veloce hardware alieno consultando di continuo tabelle di dati che descrivono nei dettagli l’hardware dell’Alieno, e fare tutte queste ricerche lo rallenta parecchio. E’ un po’ come se io cercassi di farvi fare la mia firma compilando una lunga serie di istruzioni che vi dicono come tracciare ogni più piccola curva. In linea di principio l’operazione è possibile, ma sarebbe incredibilmente più lenta che se firmassi semplicemente con il mio arto-ware!