Madras, inizi del Novecento. L’Impero britannico domina l’India. Julius, laureato in Storia ad Oxford presta servizio come impiegato amministrativo coloniale nel Servizio civile indiano. Insieme con la moglie Sara, nata a Madras e figlia di un ingegnere, sono in attesa del loro secondogenito. Considerata l’instabilità politica del periodo, decidono di fare ritorno in Inghilterra e far nascere il loro bambino a Londra. Il 23 giugno del 1912  nel quartiere di  Maida Vale, nel nord di Londra, il neonato fa sentire il suo primo vagito. Julius Turing e Ethel Sara battezzano il loro bambino con il nome di: Alan Mathison Turing. Successivamente dopo essersi trasferiti nel Sud dell’Inghilterra, sulle coste meridionali dell’East Sussex, a distanza di pochi mesi l’uno dall’altro, Julius e Sara, fanno ritorno in India, ma considerate le precarie condizioni di salute del piccolo Alan i genitori decidono di lasciare i due fratellini, John e Alan, a Londra, in affidamento. 

Affidamento di Alan Turing

Alan Turing

Alan soffre di rachitismo una malattia scheletrica ad esordio infantile. Cosicché i genitori preferiscono evitargli un lungo e stressante viaggio verso l’India, lasciandolo alle cure di una coppia di anziani di Hastings nell’East Sussex. Ma non solo, successivamente, di ritorno in Inghilterra, la madre scopre che Alan soffre anche di disturbi psichici. Riuscendo a passare repentinamente da pianto a rabbia e viceversa. Ma nonostante questi disturbi della personalità lo descrive come un bambino socievole, intelligente e di una certa simpatia.

Personalità di Alan Turing

Fin da piccolo, ancora prima di imparare a leggere, manifestò l’interesse per i numeri e una mente vivace. La sua passione per la scienza, ma anche per la geografia, lo spingono a sperimentare e ad inventare. Ma non amava solo studiare, Alan prediligeva anche andare in bicicletta e la corsa. Passione questa, per l’attività fisica, che gli resterà per tutta la vita. Alan ebbe una personalità infantile anche da adulto. Non era vanitoso e non curava molto il suo aspetto quasi fino a sembrare trasandato. A ventidue anni si fece regalare un peluche a forma di orsacchiotto e curiosamente conosceva a memoria l’incantesimo della strega malvagia di Biancaneve. Tra i tanti atteggiamenti, stravaganti, c’era quello di nascondere la sua tazza da tè o di incatenarla con un lucchetto per evitare che gli fosse rubata.

Alan Turing immagine royalty free, Flirck.com

Studi di Alan Turing

Dopo essere ritornato a vivere con la madre, all’età di tredici anni si iscrisse alla Sherborne School (Scuola che successivamente ebbe come allievi anche l’attore Jeremy Irons e lo scrittore John le Carré). Durante gli studi dimostrerà subito una propensione per la matematica ed anche una grande capacità di eseguire calcoli a mente. Ed è proprio qui, negli ultimi anni di corso che Turing s’innamora di un altro collegiale, il quale morì prematuramente di tubercolosi. Grazie ad una borsa di studio nel 1931 si iscrive al  King’s College di Cambridge per studiare matematica e dove 1934 si laurea con lode.

Nell’aprile 1936 pubblica un articolo “Sui numeri computabili”, in cui introduceva algoritmo e concetto di macchina di Turing. In questo articolo dimostra che esiste una classe di problemi senza soluzione algoritmica e che assume un ruolo fondamentale nella teoria della computazione. Nel 1936 Turing entra alla Princeton University (USA) dove nel 1938 consegue un dottorato in matematica. Il suo articolo fu notato da uno dei principali scienziati dell’epoca, John von Neumann.

Alan Turing Immagine royalty free da sito Unsplash.com

La Macchina di Turing

La macchina di Turing è un modello matematico utilizzato per studiare i fondamenti  dell’informatica teorica. Una macchina di Turing è un esecutore astratto capace di eseguire solo operazioni elementari, ed è detta astratta perché la si immagina con una memoria infinita e senza tempi di esecuzione, tempi di calcolo. Questo fa in modo che ci si possa astrarre dall’esecutore fisico (computer).

Questo esecutore ideale è quello che tecnicamente viene chiamato un modello computazionale. Codesta astrazione dal calcolatore ci permette di spostarci da un ambiente fisico ad un ambiente matematico. La macchina di Turing è un classico modello computazionale ma non il solo, forse il più noto. Vien da sé che questa astrazione non possiede le stesse caratteristiche che ci si potrebbe aspettare da un computer moderno.

Complessità e Calcolabilità

Nonostante possa sembrare una eccessiva semplificazione questo modello classico dell’informatica teorica viene utilizzato per descrivere concetti e proprietà della Teoria della Complessità e della Teoria della Calcolabilità. Teorie che studiano quali problemi si possono risolvere automaticamente e quali no. In sintesi, mentre la Teoria della Calcolabilità ci dice quali problemi vale la pena cercare di risolvere e quali no perché irrisolvibili e se ci sono algoritmi risolutivi. La Teoria della Complessità ci è utile per conoscere la complessità intrinseca dei problemi. Cioè dato un problema quanto è complicato risolverlo? E quante risorse computazionali sono necessarie ad una specifica soluzione di un problema?

Cosa è e come è fatta la macchina di Turing

Una Macchina di Turing è costituita da un nastro illimitato diviso in celle che possiamo sostanzialmente definire come memoria. In ogni singola cella è possibile scrivere dei simboli appartenenti ad un alfabeto di quella macchina. L’informazione contenuta in ogni cella deve essere finita, un solo simbolo, lettera o numero che sia, ma non una stringa di lunghezza arbitraria. Il nastro magnetico è quindi il luogo dove il nostro esecutore riceve i dati in ingresso e scrive i dati dei calcoli intermedi.

Una testina mobile che ha come compito quello di leggere, scrivere o cancellare simboli della cella sulla quale è posizionata. Questa testina può essere paragonata ad un processore ed è governata da un programma(una serie di istruzioni) il quale dice alla macchina come comportarsi a seconda della configurazione in cui si trova e del simbolo che trova, ovvero può: leggere, scrivere, cancellare oppure spostarsi di una posizione alla volta verso destra o verso sinistra.

Ricapitolando una macchina di Turing è formata da un nastro illimitato, una testina e una sequenza di istruzioni. Forse sorprenderà sapere che un cosi semplice modello concettuale è, in teoria, capace di effettuare qualsiasi tipo di operazione matematica. Il computer più recente o il più veloce, in teoria, non riesce a fare nulla in più di questo semplice oggetto concettuale. Riesce solo a farlo più velocemente.

Nasce l’Informatica Teorica

Alan Turing immagine royalty free da flirck.com

A  Turing si deve la creazione di un formalismo capace di strutturare il concetto di algoritmo. Mediante l’utilizzo delle macchine da lui definite. Gli algoritmi non erano una novità, ma una loro rigorosa formalizzazione sì. In questo modo dimostra potenza e limiti del concetto di algoritmo. Turing lavora al problema della decidibilità dell’aritmetica, contemporaneamente ma in modo indipendente, da un altro matematico americano, Alonzo Church. I due Introducono due diversi concetti di calcolabilità. (Lambda) ʎ-calcolo un formalismo, in seguito, ampiamente usato per studiare la semantica dei linguaggi di programmazione. Turing intuisce subito che il ʎ-calcolo di Church, è del tutto equivalente al formalismo delle sue macchine.

Da qui la tesi Church-Turing. Essa suppone la possibilità dello sviluppo di un concetto di algoritmo anche con metodi diversi rispetto la Macchina di Turing e ʎ-calcolo o da qualsiasi altro formalismo. Ma questo nuovo concetto di algoritmo dovrà avere al più lo stesso potere di calcolo delle macchine astratte. È sorprendente notare come delle strutture teoriche così elementari nascondano un potere di calcolo così forte. Tra i molti formalismi ci sono tutti i linguaggi di programmazione sviluppati nel 900. Grazie al potere di calcolo delle sue macchine, Turing da risposta anche al quesito della decidibilità posto da David Hilbert. In breve, si chiede: È possibile scrivere un algoritmo che esaminando un altro algoritmo con il suo input sia in grado di stabilire se esso terminerà senza finire in un ciclo infinito e un punto di terminazione?

Tempi bui. La Guerra

1939, inizio della seconda guerra mondiale, Turing è reclutato dall’esercito britannico a Bletchley Park come crittoanalista per decifrare i codici tedeschi. Con l’ausilio del primo computer elettronico, a cui viene dato il nome di Colosso, costruito sotto la supervisione di Turing, e che entra in servizio nel 1943. Nel 1944, Turing fu incaricato di sviluppare un computer, l’Automatic Computing Engine (ACE), in grado di competere con il progetto americano EDVAC di von Neumann. Nel 1947, Turing concepì l’idea delle reti di computer, il concetto di subroutine software e ha anche descritto le idee di base delle reti neurali.

La fine della guerra e gli ultimi anni di Alan Turing

Alan Turing continuò a progettare computer secondo l’architettura di von Neumann. Il Mark I fu terminato nel 1948 prima dell’EDVAC. Progettandone anche il linguaggio di programmazione. Un altro dei campi di ricerca di Turing è stato l’intelligenza artificiale, disciplina nata dall’articolo intitolato “Computing Machinery and Intelligence” pubblicato da Turing nel 1950.

La prima frase di questo articolo è molto famosa: “Propongo di considerare la seguente domanda: le macchine possono pensare?” Successivamente Turing propose un metodo chiamato test di Turing per determinare se una macchina può avere un comportamento intelligente. La carriera di Turing subì uno stop improvviso dopo essere stato incriminato e condannato per comportamenti contro la morale di quei tempi.

Due anni dopo la condanna Turing si suicida mangiando una mela su cui era stato versato del cianuro. Mela ritrovata accanto al suo cadavere e che caso vuole incroci la strada di quella strofa che da ragazzo conosceva a memoria: l’incantesimo della strega malvagia di Biancaneve.