Un'immagine del film, con Alan Turing di fronte alla sua Bomba - © 2014 - The Weinstein Company

Un’immagine del film, con Alan Turing di fronte alla sua Bomba – © 2014 – The Weinstein Company

Il film The Imitation Game si basa sulla personalità di Alan Turing e in particolare sul ruolo che ebbe a Bletchley Park, dove con un gruppo di collaboratori riuscì a decriptare i messaggi navali delle Potenze dell’Asse. Turing lavorò intensamente alla cosiddetta “Bomba”, un congegno elettromeccanico in grado di decifrare i messaggi tedeschi codificati con la macchina Enigma. Le impostazioni di Enigma venivano modificate ogni giorno, perciò era importante che la decodifica avvenisse piuttosto rapidamente. Alan Turing, tra gli altri, rese questo possibile e per qualche anno contribuì agli adattamenti della Bomba alle successive modifiche di Enigma.

Tra le numerose libertà di adattamento dalla vicenda reale al film, vi sono alcune inesattezze che riguardano l’aspetto scientifico del lavoro di Turing, specialmente al di fuori di Bletchley Park.

Durante un dialogo, Joan Clarke chiede a Turing se stia cercando di costruire la sua “macchina universale”, quella che può “risolvere qualunque problema”. Si parla ovviamente di quella che oggi conosciamo come macchina universale di Turing. Una simile macchina non è reale: si tratta di un modello astratto che puntava a tradurre in termini formali il concetto di “calcolabilità” e pose le basi per la progettazione di macchine computazionali universali – ossia, in grado di svolgere funzioni di qualunque natura.

In realtà, la macchina universale di Turing non ha nulla a che vedere con la Bomba, dato che quest’ultima fu costruita per un unico scopo ben specifico (decriptare i messaggi codificati con Enigma). Ma non solo.

Vediamo innanzitutto cosa si intende per macchina di Turing. L’idea alla base di questo congegno immaginario era quella di dare una definizione formale di algoritmo, cioè della sequenza finita di passi necessari per risolvere un problema, in modo indipendente dall’operatore. Allo stesso tempo Turing intendeva risolvere il cosiddetto problema della decisione di Hilbert: dato un linguaggio formale e un enunciato in quel linguaggio, esiste un algoritmo sempre in grado di stabilire la correttezza di tale enunciato, qualunque esso sia?.

Si può descrivere la macchina di Turing come composta da un dispositivo di controllo e un nastro potenzialmente infinito sia a destra, sia a sinistra, che interagiscono tramite una testina attraverso cui passa il nastro. Sul nastro (che ha sostanzialmente lo stesso ruolo che hanno le memorie in un tipico computer) vi sono una serie di celle, ognuna delle quali contiene un simbolo scritto in un determinato linguaggio, oppure è vuota; la testina può leggere, cancellare e scrivere su ciascuna di queste celle.

Schema concettuale della macchina di Turing.

Schema concettuale della macchina di Turing.

Il dispositivo è caratterizzato da un numero finito di stati interni: ogni volta che la testina legge un simbolo, il dispositivo può cambiare il suo stato interno, scrivere un simbolo sul nastro e spostare la testina una cella a destra o a sinistra. Il comportamento di una macchina di Turing può essere programmato inserendovi un codice che descriva le azioni da compiere (cambio di stato, scrittura sulla cella ed eventuale spostamento) a seconda dello stato iniziale in cui si trova il dispositivo e del simbolo letto dalla testina. Se il codice non include quel particolare stato e quel simbolo allora la macchina si ferma e smette di calcolare.

Questa animazione rappresenta una macchina di Turing molto rudimentale in grado di stabilire se gli 1 presenti in una stringa di 1 e 0 sono pari o dispari e di scrivere il risultato (P per pari, D per dispari). Il punto è scelto come carattere di alt.

Questa animazione rappresenta una macchina di Turing molto rudimentale in grado di stabilire se gli 1 presenti in una stringa di 1 e 0 sono pari o dispari e di scrivere il risultato (P per pari, D per dispari). Il punto è scelto come carattere di alt.

Queste macchine possono essere adattate all’esecuzione di qualunque tipo di programma. Si dice macchina di Turing universale una macchina in grado di compiere tutte le operazioni eseguibili da qualunque altra macchina di Turing.

Ebbene, proprio grazie ai suoi studi, Turing diede una risposta negativa al problema della decisione di Hilbert: anche con queste macchine universali, esistono sempre dei problemi “indecidibili”, cioè che non sono risolubili mediante singoli algoritmi. In particolare, non è possibile costruire una macchina di Turing che verifichi il corretto funzionamento di tutte le altre macchine di Turing.

Le implicazioni in termini di software sono rilevanti. Spesso, infatti, i software hanno degli errori (bug), e la ricerca e correzione di questi errori è chiamata debugging. Questo lavoro non può essere del tutto automatizzato, ossia non si può scrivere un programma generale che trovi i bug in tutti gli altri programmi. Si dovrebbe usare il programma su se stesso, ma come si fa a sapere se non ha errori? Per questo motivo è sbagliato affermare che la macchina di Turing a cui si fa riferimento nel film possa essere capace di risolvere qualunque problema.

Ma perché The Imitation Game? Turing fu forse il primo ad occuparsi del problema dell’intelligenza artificiale. Il titolo del film è tratto dalla prefazione del suo articolo “Computing machinery and intelligence”, in cui si pone la domanda “Le macchine possono pensare?”. Molti ritengono che ci sia qualcosa di speciale riguardo al cervello umano che non può essere replicato; Turing volle sfidare questa supposizione escogitando un test teorico, strutturato come un gioco, in cui un essere umano e un computer sono sottoposti a varie domande da parte di una persona che non può né vederli, né sentirli, ma che legge le risposte su uno schermo. Tramite questo test, un computer si può definire come capace di pensare se riesce ad ingannare l’interrogatore umano facendosi passare per umano a sua volta – “imitando” cioè in modo sufficientemente verosimile le risposte date da un umano. E l’anno scorso era stata data la notizia che un computer chiamato Eugene Goostman avesse effettivamente superato il test di Turing, tuttavia questa notizia è stata in seguito smentita.

Oggigiorno gli studi sull’intelligenza artificiale si basano sulle reti neurali (che mimano cioè l’apprendimento tipico dei neuroni biologici), e non sui calcolatori deterministici a cui Turing poteva riferirsi. Resta il fatto che si trattava di idee piuttosto audaci, ai tempi in cui i computer avevano le dimensioni di una stanza e un’efficienza inferiore a quella di una moderna calcolatrice tascabile.