Filosofia dell'informatica/La nascita dell'informatica: differenze tra le versioni

Wikibooks, manuali e libri di testo liberi.
Contenuto cancellato Contenuto aggiunto
m Annullate le modifiche di 130.192.251.23 (discussione), riportata alla versione precedente di 87.11.74.214
Etichetta: Rollback
Corretto: "riguardo alla"
Riga 29: Riga 29:


Il primo tentativo di implementazione delle proprie idee, Babbage lo trovò nel concepimento della macchina differenziale. Il modello fu presentato alla [[w:Royal Astronomical Society|Royal Astronomical Society]] nel 1823, in un saggio intitolato “Note on the application of machinery to the computation of astronomical and mathematical tables”, e si basava sul cosiddetto [[w:Metodo delle differenze finite|metodo delle differenze]], in base al quale Babbage contava di creare tabelle di polinomi.
Il primo tentativo di implementazione delle proprie idee, Babbage lo trovò nel concepimento della macchina differenziale. Il modello fu presentato alla [[w:Royal Astronomical Society|Royal Astronomical Society]] nel 1823, in un saggio intitolato “Note on the application of machinery to the computation of astronomical and mathematical tables”, e si basava sul cosiddetto [[w:Metodo delle differenze finite|metodo delle differenze]], in base al quale Babbage contava di creare tabelle di polinomi.
La macchina sarebbe stata avviata meccanicamente da una maniglia, grazie alla quale Babbage avrebbe potuto mettere in movimento gli ingranaggi. Ottenuto un finanziamento di 1500 sterline dal governo britannico per l’idea brillante, lo studioso incorse, tuttavia, in una serie di errori tecnici nella realizzazione della macchina. Gli ingranaggi disponibili a quel tempo, infatti, risultarono poco adatti, e in particolare l’attrito generato dalle meccaniche creava una fastidiosa e costante vibrazione, che ne rese impossibile il funzionamento. Inoltre, le incomprensioni con gli operai assunti per la realizzazione del progetto, e i repentini cambi di idea riguardo la sua realizzazione, portarono Babbage a spendere invano circa 17.000 sterline, 6.000 delle quali di tasca propria.
La macchina sarebbe stata avviata meccanicamente da una maniglia, grazie alla quale Babbage avrebbe potuto mettere in movimento gli ingranaggi. Ottenuto un finanziamento di 1500 sterline dal governo britannico per l’idea brillante, lo studioso incorse, tuttavia, in una serie di errori tecnici nella realizzazione della macchina. Gli ingranaggi disponibili a quel tempo, infatti, risultarono poco adatti, e in particolare l’attrito generato dalle meccaniche creava una fastidiosa e costante vibrazione, che ne rese impossibile il funzionamento. Inoltre, le incomprensioni con gli operai assunti per la realizzazione del progetto, e i repentini cambi di idea riguardo alla sua realizzazione, portarono Babbage a spendere invano circa 17.000 sterline, 6.000 delle quali di tasca propria.
In seguito, il taglio dei finanziamenti da parte del governo inglese lo indusse a scrivere le celebri “Reflections on the Decline of Science in England, and some of its Causes”. La macchina differenziale rimase, purtroppo, soltanto un’idea brillante.
In seguito, il taglio dei finanziamenti da parte del governo inglese lo indusse a scrivere le celebri “Reflections on the Decline of Science in England, and some of its Causes”. La macchina differenziale rimase, purtroppo, soltanto un’idea brillante.



Versione delle 13:29, 5 feb 2021

Indice del libro

I pionieri dell'informatica

Passando dalle idee logiche che stanno alla base degli attuali calcolatori, alla loro costruzione effettiva, vengono in primo piano i problemi di ingegneria e le persone che sono riusciti ad affrontarli vittoriosamente. Vi sono versioni molto diverse della storia delle macchine calcolatrici. Tra i protagonisti vi sono Charles Babbage, Ada Lovelace, Claude Shannon (1916-2001, il fondatore della teoria matematica dell’informazione) e John von Neumann.

Ada Lovelace

Ada Lovelace

Ada Lovelace (1815-1852) fu la prima programmatrice di computer della storia. Figlia del celebre poeta George Gordon Byron e della matematica Anne Isabelle Milbanke, sin da piccola fu istruita dai piu importanti docenti del tempo, mostrando grande interesse per le scienze e la matematica.

Come di consuetudine per le giovani aristocratiche, a 18 anni Lovelace debuttò in società ed iniziò a frequentare i più facoltosi salotti grazie ai quali conobbe personalità come Charles Darwin, Charles Dickens, Michael Faraday e Charles Babbage che proprio in quegli anni stava lavorando alla macchina differenziale, un marchingegno in grado di fare somme e sottrazioni automaticamente. Ada, estremamente affascinata, iniziò a studiare i metodi di calcolo realizzabili con essa, e così nacque uno splendido rapporto di amicizia e di lavoro che durerà per anni. La macchina divenne sempre più grande ma, pur essendo concettualmente valida, non fu mai costruita a causa dei costi eccessivi e delle scarse competenze tecnologiche del tempo.

Dopo la macchina differenziale nacque la macchina analitica, una macchina ancora più complicata, capace di fare ulteriori operazioni quali moltiplicazioni, divisioni, comparazioni a radici quadrate. Babbage cercò di far conoscere la macchina all'estero, precisamente in Italia, dove incontrò il giovane matematico Luigi Federico Menabrea. Quest’ultimo scrisse nel 1842 un breve articolo in francese sulla macchina che fu pubblicato sulla rivista svizzera "Bibliothèque Universelle de Genève". Ada, sollecitata da un amico di Babbage, Charles Wheatstone, iniziò a tradurre l’articolo in inglese e vi aggiunge ben sette note, frutto di un lavoro durato interi mesi, e che firmò con le sole iniziali (A. A. L.). Le note descrivevano le caratteristiche strutturali e funzionali della macchina e, soprattutto, mostravano la possibilità da parte della MA di poter essere programmata. Questo, infatti, è ciò che la rende il più antenato dei nostri computer: a differenza della macchina differenziale, che poteva manipolare solo numeri, la macchina analitica era in grado di manipolare simboli sulla base di semplici regole. La nota più importante è senza dubbio l’ultima, la nota G, nella quale Lady Lovelace descrisse, a tal fine, un algoritmo per calcolare i numeri di Bernoulli, algoritmo che oggi viene riconosciuto come il primo programma informatico della storia.

Nonostante la macchina analitica, proprio come la macchina differenziale, non fu mai costruita, il contributo pionieristico di Ada Lovelace e Charles Babbage è stato di fondamentale importanza: dopo quasi un secolo, Alan Turing inventò i primi computer elettronici grazie alle note di Ada Lovelace. A partire dal 2009, negli Stati Uniti si celebra ogni anno l’Ada Lovelace Day, in onore di tutti i conseguimenti ottenuti dalle donne nelle scienze, nella tecnologia, nell’informatica e nella matematica.

Charles Babbage

Charles Babbage

Charles Babbage nacque a Londra il 26 dicembre 1791. Il connubio tra filosofia e matematica diede vita ad uno dei più influenti scienziati informatici del suo tempo nella regione inglese, che per primo concepì l’idea di un calcolatore programmabile.

Babbage fu studente al Trinity Colledge e successivamente al Penterhouse di Cambridge, dove discusse la laurea nel 1814, e dove nel 1828 rivestirà la cattedra lucasiana di matematica, che in passato aveva accolto il genio di Isaac Newton (1669). La storia dell'informatica lo ricorda per la progettazione della macchina differenziale, della quale venne realizzato un prototipo imperfetto, e per la macchina analitica, che, sebbene fosse rimasta soltanto un progetto, rappresentò storicamente il primo vero calcolatore meccanico. Babbage morì il 18 ottobre 1871 a Londra, all’età di 80 anni, e non gli fu possibile vedere il frutto del suo lavoro intellettuale. Le sue idee, però, troveranno una definitiva implementazione nel XX secolo, con l'invenzione degli elaboratori elettronici.

La macchina differenziale

Babbage constatò che i calcolatori umani erano soliti incorrere in molteplici errori, talvolta dovuti alla stanchezza, talvolta alla noia. Tali considerazioni portarono lo studioso a riflettere sul concepimento di un calcolatore sotto forma di macchina, così da aggirarne gli errori. Quindi, sulla base del lavoro svolto da Pascal e Leibniz, nel 1823, in una lettera a Sir Humphrey Davy discusse i principi di un motore di calcolo.

Il primo tentativo di implementazione delle proprie idee, Babbage lo trovò nel concepimento della macchina differenziale. Il modello fu presentato alla Royal Astronomical Society nel 1823, in un saggio intitolato “Note on the application of machinery to the computation of astronomical and mathematical tables”, e si basava sul cosiddetto metodo delle differenze, in base al quale Babbage contava di creare tabelle di polinomi. La macchina sarebbe stata avviata meccanicamente da una maniglia, grazie alla quale Babbage avrebbe potuto mettere in movimento gli ingranaggi. Ottenuto un finanziamento di 1500 sterline dal governo britannico per l’idea brillante, lo studioso incorse, tuttavia, in una serie di errori tecnici nella realizzazione della macchina. Gli ingranaggi disponibili a quel tempo, infatti, risultarono poco adatti, e in particolare l’attrito generato dalle meccaniche creava una fastidiosa e costante vibrazione, che ne rese impossibile il funzionamento. Inoltre, le incomprensioni con gli operai assunti per la realizzazione del progetto, e i repentini cambi di idea riguardo alla sua realizzazione, portarono Babbage a spendere invano circa 17.000 sterline, 6.000 delle quali di tasca propria. In seguito, il taglio dei finanziamenti da parte del governo inglese lo indusse a scrivere le celebri “Reflections on the Decline of Science in England, and some of its Causes”. La macchina differenziale rimase, purtroppo, soltanto un’idea brillante.

La macchina analitica

Tra il 1833 e il 1842, Babbage ci riprovò. Questa volta, tentò di costruire una macchina che fosse, però, in grado di eseguire qualsiasi tipologia di calcolo, non soltanto quelli basati su equazioni polinomiali: la macchina analitica, riconosciuta come il primo prototipo di calcolatore generico complesso. Il progetto di Babbage si basava sul telaio di Joseph Marie Jacquard, il quale utilizzava alcune schede perforate per determinare come dovesse essere la trama del tessuto. Babbage unì le schede traforate ad un processore aritmetico atto a calcolare i numeri, ad un’unità centrale che controllasse lo svolgimento del lavoro, un meccanismo di uscita e una memoria, dove potessero essere conservati i dati in attesa della loro elaborazione. La riserva conteneva 1000 numeri, ognuno di cinquanta cifre, ma Babbage costruì la macchina in modo da donarle una riserva pressoché infinita, grazie alla rilettura delle stesse carte forate resa possibile per il futuro. La componente “Mill” (mulino), e cioè il sistema che permetteva l’elaborazione dei dati, che costituiva l’idea di base delle moderne CPU, sarebbe stata in grado di svolgere le quattro operazioni aritmetiche. La macchina, inoltre, lavorava su tre differenti tipi di schede: un tipo per le operazioni matematiche, un altro per le costanti matematiche, ed infine un terzo per il caricamento e il salvataggio dei dati. Tuttavia, anche l’implementazione di questa seconda idea, a causa delle quasi medesime complicazioni che Babbage aveva affrontato nella messa a punto della macchina differenziale, risultò fallimentare, e il progetto che era stato messo a punto nel 1837 terminò prima ancora di vedersi tramutato in macchina.

Claude Shannon

Claude Shannon

Claude Shannon (1916-2001) è il padre della Teoria dell'informazione, una disciplina dell'informatica e delle telecomunicazioni il cui oggetto è l'analisi e l'elaborazione su base matematica dei fenomeni relativi alla misurazione e alla trasmissione di informazioni su un canale fisico di comunicazione.

La grandezza che misura la quantità di dati prende il nome di entropia ed è solitamente espressa come numero di bit necessari per immagazzinare o trasmettere l'informazione. Ad esempio, se un alfabeto ha un'entropia pari a 4 bit, allora, preso un numero sufficiente di parole costruite con tale alfabeto, in media sono necessari 4 bit per rappresentare ogni lettera. L'applicazione dei concetti fondamentali della teoria dell'informazione include la compressione senza perdite dei file. L'impatto della teoria dell'informazione, che si pone a metà strada tra la matematica applicata, la statistica, la fisica applicata, le telecomunicazioni e l'informatica, è stato fondamentale nelle missioni spaziali, nell'invenzione del compact disc, dei telefonini, di Internet, nello studio della linguistica e in numerosissimi altri campi.

Shannon nel 1932 iniziò gli studi presso l'Università del Michigan, dove, nel 1936, conseguì due lauree: in matematica e in ingegneria elettronica. Shannon si iscrisse quindi al Massachusetts Institute of Technology, dove frequentò, tra l'altro, il laboratorio nel quale, sotto la direzione di Vannevar Bush, si lavorava alla realizzazione dell'analizzatore differenziale, un calcolatore analogico. Nel 1938 conseguì il titolo di Master of Science in ingegneria elettronica presentando la tesi Un'analisi simbolica dei relè e dei circuiti. In questo studio Shannon dimostrò che il fluire di un segnale elettrico attraverso una rete di interruttori - cioè dispositivi che possono essere in uno di due stati - segue esattamente le regole dell'algebra di Boole, se si fanno corrispondere i due valori di verità - VERO e FALSO - della logica simbolica allo stato APERTO o CHIUSO di un interruttore. Pertanto un circuito digitale può essere descritto da un'espressione booleana, la quale può poi essere manipolata secondo le regole di questa algebra. Shannon definì così un potente metodo, ancora oggi usato, per l'analisi e la progettazione dei sistemi digitali di elaborazione dell'informazione.

Nel 1948 pubblicò il saggio Una teoria matematica della comunicazione, un importante trattato scientifico che poneva la base teorica per lo studio dei sistemi di codificazione e trasmissione dell'informazione. In questo lavoro si concentrò sul problema di ricostruire, con un certo grado di certezza, le informazioni trasmesse da un mittente. Fu in questa ricerca che Shannon coniò la parola bit, per designare l'unità elementare d'informazione. La sua teoria dell'informazione pose le basi per progettare sistemi informatici, partendo dal presupposto che l'importante era cercare di memorizzare le informazioni in modo da poterle trasferire e collegare tra loro. Nel 1949 pubblicò un altro notevole articolo, La teoria della comunicazione nei sistemi crittografici, con il quale praticamente fondò la teoria matematica della crittografia. Shannon è inoltre riconosciuto come il "padre" del teorema del campionamento, che studia la rappresentazione di un segnale continuo (analogico) mediante un insieme discreto di campioni a intervalli regolari (digitalizzazione).

Alan Turing

File:Alan Turing Aged 16.jpg
Alan Turing (1927 circa)

Alan Mathison Turing nacque a Londra nel 1912 e morì suicida nel 1954, perseguitato dal governo di una nazione che, senza clamore, aveva contribuito a salvare. Fu un genio che con la crittografia aiuta a vincere la Seconda Guerra Mondiale e uno dei padri dei moderni computer e dell’intelligenza artificiale, ma anche un omosessuale che, bistrattato dalla storia, venne spinto al suicidio dopo un trattamento disumano, ordinato dalla giustizia inglese. Nel 2009, a distanza di 55 anni dalla sua morte, il primo ministro Gordon Brown formulò una dichiarazione di scuse ufficiali da parte del governo del Regno Unito: «Per conto del governo britannico, e di tutti coloro che vivono liberi grazie al lavoro di Alan, sono orgoglioso di dire: ci dispiace, avresti meritato di meglio». Il 24 dicembre 2013 la regina Elisabetta II ha poi elargito la grazia postuma per Alan Turing.

Il problema della decisione

Leibniz sognava una ragione umana ridotta a puro calcolo e a grandi macchine meccaniche che consentissero l’esecuzione dei calcoli. Frege fu il primo a produrre un sistema di regole capace di rendere conto in modo plausibile di tutti i ragionamenti deduttivi umani. Hilbert cercava un algoritmo di un'ampiezza senza precedenti, in grado di risolvere il problema della decisione (Entscheidungsproblem), ossia il problema della completezza del sistema di Frege. Questo algoritmo (ribattezzato poi l'algoritmo di Dio) avrebbe dovuto ridurre tutti i ragionamenti deduttivi umani a calcolo bruto, realizzando in buona misura il sogno di Leibniz. Dopo Gödel era difficile pensare che tale algoritmo potesse esistere. Alan Turing cominciò a chiedersi come si poteva dimostrare che un algoritmo del genere non esisteva.

Un algoritmo, ossia una procedura di calcolo destinato alla soluzione di un problema, è definito da un elenco di regole che una persona può seguire in modo meccanico e preciso. Turing dimostrò che una tale persona poteva limitarsi a poche azioni di base, molto semplici, senza che il risultato finale del calcolo cambiasse. Comprese poi che l’essere umano poteva essere sostituito da una macchina capace di eseguire quelle stesse azioni di base. Dimostrò infine che nessuna macchina in grado di eseguire solo tali azioni poteva stabilire se una data conclusione era derivabile da premesse date usando le regole di Frege. Concluse che non esisteva un algoritmo per il problema della decisione (Entscheidungsproblem).

La riflessione sul calcolo

Come corollario, Turing trovò un modello matematico di macchina calcolatrice onnifunzionale. Turing immaginò che la persona incaricata del calcolo lavorasse con un nastro di carta diviso in quadretti, e si rese conto che eseguire un calcolo complicato utilizzando un nastro unidimensionale non comportava nessun problema fondamentale. Turing scoprì alcuni aspetti cruciali di qualsiasi calcolo. Ogni persona che esegue un calcolo (aritmetico, algebrico, infinitesimale ecc.) è soggetta a due vincoli: 1) in ogni stadio del calcolo l’attenzione è rivolta solo a pochi simboli; 2) in ogni stadio l’azione intrapresa dipende solo da quei simboli su cui si focalizza la sua attenzione e dal suo stato mentale del momento. In conclusione ogni calcolo può essere inteso come un processo con le seguenti caratteristiche:

  • viene eseguito scrivendo dei simboli nelle caselle di un nastro di carta.
  • a ogni passo la persona che esegue il calcolo fa attenzione al simbolo scritto in una sola di queste caselle.
  • l’azione successiva dipenderà da questo simbolo e dallo stato mentale della persona.
  • tale azione consisterà nello scrivere un simbolo nella casella osservata ed eventualmente nello spostare l’attenzione sulla casella immediatamente a destra o a sinistra.

È facile vedere che la persona può essere sostituita da una macchina nella quale il nastro – che possiamo pensare come un nastro magnetico, ove i simboli scritti sono rappresentati da informazioni in codice – si muove avanti e indietro, mentre agli stati mentali dell’operatore corrispondono differenti configurazioni delle componenti interne della macchina. Quest’ultima va progettata in modo da scandire, istante per istante, uno solo dei simboli del nastro. A seconda della sua configurazione interna e del simbolo scandito, scriverà sul nastro un certo simbolo (che rimpiazzerà quello scandito), dopodiché o continuerà a scandire la stessa casella o si sposterà di un passo verso destra o verso sinistra. Ai fini del calcolo non importa come sia costruita la macchina e di che cosa sia fatta: conta solo che abbia la capacità di assumere un certo numero di configurazioni (dette anche stati) distinte e che in ognuna di esse si comporti in modo adeguato.

La macchina di Turing

Il punto non è la costruzione effettiva di una di queste macchine di Turing, che dopotutto sono solo astrazioni matematiche: ciò che importa è che questa analisi della nozione di calcolo abbia consentito di stabilire che tutto ciò che è calcolabile mediante un processo algoritmico può essere calcolato da una macchina di Turing. Se quindi si può dimostrare che un certo compito non può essere eseguito da una macchina di Turing, è certo che non esiste un processo algoritmico in grado di eseguirlo. Fu così che Turing dimostrò che non esisteva un algoritmo per il problema della decisione. La macchina di Turing è dunque un automa astratto, teorico, universale, il cui disegno logico fornisce una traduzione formale del concetto intuitivo di calcolabilità. La macchina di Turing è tuttora utilizzata, nelle sue numerose varianti, come modello astratto del calcolo automatico sviluppato da un elaboratore.

Inoltre Turing mostrò come creare una singola macchina di Turing capace di fare, senza aiuti esterni, tutto ciò che poteva essere fatto da una qualsiasi macchina di Turing: era un modello matematico di calcolatore generale. Dal punto di vista logico, ogni macchina di Turing può essere descritta da un elenco di quintuple, ossia da espressioni logiche espresse da cinque simboli: Quando la macchina si trova nello stato R e legge sul nastro il simbolo a, sostituisce a con b, si sposta di un casella a destra e passa nello stato S.

La teoria della computabilità

La teoria della computabilità, una branca della logica nata negli anni '30 del secolo scorso grazie al contributo di Alan Turing è fondamentale per comprendere l'intelligenza delle macchine. Tale teoria si occupa di capire se esistono o no algoritmi capaci di risolvere problemi. Una funzione infatti è computabile se esiste un algoritmo che la calcola. Si tratta quindi di procedimenti compiuti dalle cosiddette "Macchine di Turing." In altre parole si può dire che la teoria della computabilità alla cui nascita Turing diede un contributo cruciale, fu formulata nel contesto della fondazione della matematica attraverso strumenti logici.

L’insolubilità dell’Entscheidungsproblem

Essendo pure astrazioni matematiche, le macchine di Turing hanno il vantaggio, rispetto alle macchine fisiche, di poter usare una quantità di nastro illimitata. È possibile che il calcolo di una macchina di Turing non abbia mai fine anche se essa percorre solo una quantità prefissata di nastro.

Una rappresentazione grafica della macchina di Turing

Il comportamento della macchina è strettamente legato ai dati di ingresso. Alcune macchine di Turing, con certi dati in ingresso, si arrestano; altre no. L’applicazione a questi secondi casi (le macchine che non si arrestano) della diagonale di Cantor condusse Turing alla scoperta di problemi che le sue macchine non potevano risolvere, e, come passo successivo, alla dimostrazione dell’insolubilità dell’Entscheidungsproblem. Turing tradusse gli elenchi di quintuple in codici numerici e scoprì che con alcuni numeri la macchina finirà per fermarsi, mentre con altri può andare avanti per sempre: l’insieme dei numeri del primo tipo è il suo insieme di fermata.

Hilbert aveva capito che la soluzione dell’Entscheidungsproblem, il problema fondamentale della logica matematica, avrebbe fornito un algoritmo capace di rispondere a tutte le domande matematiche. Ma un algoritmo così non esiste. Pur nella sua grande potenza logica, la macchina di Turing ha infatti un limite intrinseco: data una configurazione iniziale di una macchina di Turing non è decidibile a priori la sua possibilità di giungere a un termine, cioè a una configurazione finale (indecidibilità della fermata di una macchina di Turing). L’Entscheidungsproblem è dunque algoritmicamente insolubile. Nei risultati di Turing c’era però qualcosa di problematico: egli aveva dimostrato che non si poteva usare una macchina di Turing per risolvere il problema della decisione, ma per passare da questo risultato alla conclusione che non esisteva nessun algoritmo, di nessun genere, capace di risolvere tale problema, aveva dovuto utilizzare la propria analisi di quello che accade quando un essere umano esegue un compito. Per consolidare la tesi che ogni compito di questo tipo può essere svolto da una macchina di Turing, egli escogitò la macchina universale.

La macchina universale

L’analisi di Turing mirava a dimostrare che qualunque calcolo poteva essere svolto da una macchina di Turing: questa macchina sarebbe stata così una macchina di Turing capace di svolgere, da sola, i compiti di qualunque macchina di Turing. Era dai tempi di Leibniz che si pensava alle macchine calcolatrici, ma prima di Turing si era sempre supposto che la macchina stessa, il programma e i dati fossero entità del tutto distinte. La macchina universale di Turing dimostrava che tale distinzione era illusoria. La macchina di Turing, infatti, è un congegno che ha componenti meccaniche (hardware), ma sul nastro della macchina universale il codice numerico funziona come un programma (software) che dà le istruzioni per l’esecuzione del calcolo alla macchina, mentre la macchina universale tratta le cifre del codice di una macchina come semplici dati sui quali lavorare. Questa fluidità dei tre concetti è fondamentale per l’informatica odierna. L’analisi di Turing offriva una visione nuova dell’antica arte del calcolo, rivelando che la nozione stessa di calcolo andava ben oltre i calcoli aritmetici e algebrici.

Mentre Turing lavorava a dimostrare che non esiste una soluzione algoritmica del problema della decisione, a Princeton (USA) Alonzo Church giungeva a conclusioni analoghe alle sue dimostrando che esistono problemi algoritmicamente insolubili[1]. Lo stesso Kurt Gödel era abbastanza scettico nei confronti delle idee di Church, e fu solo l’analisi di Turing, trasferitosi nel frattempo a Princeton, a convincerlo che erano corrette. L’analisi della nozione di calcolo e la scoperta della macchina calcolatrice universale sono invece idee completamente nuove.

Il legame tra calcolo e ragionamento è autentico e profondo: il tentativo di ridurre il ragionamento logico a una serie di regole formali risale ad Aristotele, ed era alla base del sogno leibniziano di un linguaggio computazionale universale, nonché del successo di Turing nel dimostrare che la sua macchina universale poteva svolgere qualsiasi calcolo. La logica assicura all’informatica sia un impianto fondazionale unificante sia uno strumento per costruire modelli, svolgendo un ruolo fondamentale nell’intelligenza artificiale, nei sistemi di database ecc.

L'intelligenza delle macchine: il test di Turing

Nel 1950 Turing pubblicò un breve saggio ormai classico, Computing Machinery and Intelligence[2], in cui prevedeva (sbagliando) che per la fine del secolo vi sarebbero stati programmi di calcolatore capaci di sostenere una conversazione con tale disinvoltura che nessuno sarebbe stato in grado di dire se quello con cui stava parlando era una macchina o un essere umano. Turing cercava un modo per stabilire se il comportamento di un calcolatore fosse intelligente, e a tale scopo propose un test oggettivo e facile da somministrare.

In questo saggio, Turing descrive quello che è passato alla storia come il test di Turing, ossia un criterio per determinare se una macchina sia in grado di pensare. Il test consisteva in questo: se si riesce a programmare un calcolatore in modo che sappia conversare, su qualsiasi argomento gli venga proposto, tanto bene che nemmeno un interlocutore mediamente intelligente saprebbe dire se sta parlando con una persona o una macchina, allora si doveva ammettere che quel calcolatore mostrava una certa intelligenza. Tuttavia siamo ancora lontani dal saper produrre un programma di questo tipo, e molti sono convinti peraltro che un simile comportamento non sarebbe di per sé intelligente. Turing e von Neumann furono mossi a paragonare il calcolatore al cervello umano per un’ottima ragione: sapendo che gli esseri umani sono capaci di pensare secondo schemi molto diversi, ipotizzarono che la nostra capacità di fare tante cose diverse sia dovuta alla presenza, nel nostro cervello, di un calcolatore universale.

In questo articolo del 1950, Turing lanciò la domanda se una macchina possa pensare: il cosiddetto test di Turing, prende spunto dal “gioco dell’imitazione” , cui partecipano tre persone: un uomo A, una donna B e un esaminatore C, che è isolato dagli altri due. C può porre ad A e B domande arbitrarie e dalle risposte deve stabilire chi è la donna. A e B si sforzano entrambi di essere identificati nella donna, quindi B cerca di aiutare C e A cerca di ingannarlo, fornendo le risposte che a suo parere darebbe la donna. C può avere a disposizione soltanto le risposte e non altri indizi (che renderebbero facile l’identificazione) : quindi può comunicare con A e B solo mediante tastiera. Questa versione del gioco consente di affrontare il problema se le macchine possano pensare evitando di definire i termini “macchina” e “pensare”, il cui significato è difficile da precisare. L’utilità di questo esperimento concettuale sta non tanto nella risposta che esso consente di fornire al problema (non è scontato che la fornisca), quanto nella possibilità di analizzare concetti come mente, pensiero, intelligenza. Il gioco dell’imitazione presuppone che le risposte di una donna siano distinguibili da quelle di un uomo; ma anche che l’uomo sia in grado di simularle. Non bisogna dimenticare tuttavia che il gioco è a tre: l’identificazione di A e B è demandata a un giudice. Se il giudice è in gamba può prendere la decisione corretta nonostante gli sforzi di A per sviarlo. Il test di Turing si basa sul presupposto che una macchina si sostituisca ad A. In tal caso, se C non si accorgesse di nulla, la macchina dovrebbe essere considerata intelligente, in quanto, in questa situazione, è stata in grado di comportarsi come un uomo. Nell'articolo si legge: secondo la forma più estrema di questa opinione, il solo modo in cui si potrebbe essere sicuri che una macchina pensa è quello di essere la macchina stessa e sentire se si stesse pensando. [...] Allo stesso modo, la sola via per sapere che un uomo pensa è quello di essere quell'uomo in particolare. [...] Probabilmente A crederà "A pensa, mentre B no", mentre per B è l'esatto opposto "B pensa, ma A no". Invece di discutere in continuazione su questo punto, è normale attenersi alla educata condizione che ognuno pensi.

Quella di Turing, in un certo senso, è una provocazione filosofica, che ci costringe a fronteggiare e analizzare le nostre convinzioni in materia di pensiero. Se una macchina può sostenere una conversazione come farebbe un essere umano, possiamo dire che pensa.

Per Turing, se una macchina riesce nel gioco imitativo, dobbiamo concludere che in un qualche senso , quella macchina pensa.

Oltre metà dell'articolo originale di Turing è dedicato a rispondere alle principali obiezioni a questa posizione:

  • l'obiezione teologica (l'uomo è dotato di anima, le macchine no, quindi non possono pensare),
  • l'obiezione "testa nella sabbia" (speriamo che le macchine non arrivino mai a pensare, sarebbe terribile),
  • l'argomento della coscienza (solo se la macchina è consapevole di ciò che sta facendo, e non semplicemente manipolando simboli, possiamo dire che pensa),
  • l'argomento delle inabilità (la macchina sa conversare benissimo, ma non sa fare X, dove X è una caratteristica scelta in un insieme più o meno arbitrario di cose che sanno fare gli esseri umani),
  • l'argomento di Lady Lovelace (le macchine fanno solo quello che noi gli ordiniamo di fare).

L'idea di una macchina che impara può apparire paradossale ad alcuni lettori. Come possono cambiare le regole di funzionamento della macchina? Esse dovrebbero descrivere completamente come reagirà la macchina qualsiasi possa essere la sua storia, a qualsiasi cambiamento possa essere soggetta. Le regole sono quindi assolutamente invarianti rispetto al tempo. Questo è verissimo. La spiegazione del paradosso è che le regole che vengono cambiate nel processo di apprendimento sono di un tipo meno pretenzioso e intendono avere solo una validità temporanea. Possiamo sperare che le macchine saranno alla fine in grado di competere con gli uomini in tutti i campi puramente intellettuali. Ma quali sono i migliori per cominciare? Anche questa è una decisione difficile. Molta gente pensa che un’attività molto astratta, come giocare a scacchi sarebbe la migliore. Si può anche sostenere che è meglio fornire alla macchina i migliori organi di senso che si possano comprare e poi insegnarle a capire e parlare una lingua umana. Questo processo potrebbe seguire il metodo d’insegnamento normale per un bambino. Ancora una volta ignoro quale sia la risposta esatta, ma penso che bisognerebbe tentare ambedue le strade. Possiamo vedere nel futuro solo per un piccolo tratto, ma possiamo pure vedere che in questo piccolo tratto c’è molto da fare.

I primi calcolatori universali

Il calcolatore universale era un apparato concettuale meraviglioso, capace di eseguire da solo qualsiasi compito di natura algoritmica: ma era possibile costruirlo?

Konrad Zuse

Konrad Zuse: lo Z1 e la sua evoluzione

L'ingegnere tedesco Konrad Zuse (1910-1995) è stato l'inventore del primo computer moderno, il calcolatore Z1, la cui progettazione e costruzione è iniziata nel 1936, e venne completata nel 1938, anticipando di alcuni anni il Colossus, nonché i primi enormi calcolatori programmabili a valvole prodotti in Inghilterra e negli Stati Uniti nella seconda metà degli anni '40[3]. E' inoltre stato l'inventore del primo linguaggio di programmazione di alto livello, il Plankalkül. Zuse ricevette numerosi finanziamenti per la costruzione delle macchine da enti civili e militari sia negli anni del regime nazionalsocialista sia dopo la guerra.

Lo Z1 era programmabile, dotato di memoria (RAM di serie da 176 byte), di un'autonoma unità di calcolo in virgola mobile basata sul sistema binario, con istruzioni immesse tramite nastro di celluloide perforato. Era retto da una tecnologia elettromeccanica e possedeva un hertz di frequenza. Esso era solamente in grado di compiere operazioni semplici, quali addizioni e sottrazioni, fra valori in virgola mobile di 22 bit, e comprendeva una logica di controllo che gli permetteva anche di effettuare operazioni più complesse, ad esempio moltiplicazioni e divisioni. Nel 1939 Zuse riuscì a migliorare lo Z1 attraverso il meccanismo di calcolo a relè (un dispositivo elettromeccanico), dando vita così allo Z2. Nel 1941, grazie all'appoggio economico dell'Ufficio Centrale per la Ricerca Aeronautica, nacque lo Z3, la prima macchina da calcolo completamente funzionante, avente le caratteristiche generali del computer odierno. Sfortunatamente nel 1944 venne distrutto da un bombardamento, ma Zuse lo ricostruì subito dopo, denominandolo Z4.

Alan Turing e il Colossus

Turing era interessato alla possibilità di costruire fisicamente una macchina di questo tipo e mise insieme diverse parti della sua macchina costruendo personalmente i circuiti elettromeccanici di cui aveva bisogno. Tornato a Cambridge nel 1938, fu subito chiamato a lavorare alla decrittazione delle comunicazioni militari tedesche. Il sistema di comunicazione tedesco usava una versione modificata di una macchina per criptare già presente sul mercato, chiamata Enigma. Turing progettò una macchina efficientissima nell’usare alcune informazioni sfuggite ai tedeschi per dedurne le configurazioni giornaliere di Enigma. Nel frattempo non smise di riflettere sull’applicabilità del suo concetto di macchina universale: la sua ipotesi era che il segreto dell’enorme potenza del cervello umano fosse legato proprio a questa nozione di universalità, che in qualche modo il nostro cervello fosse realmente una macchina universale.

Negli anni Trenta le radio contenevano un certo numero di tubi elettronici (le cosiddette valvole termoioniche) che si bruciavano spesso e dovevano essere sostituite. Turing venne a sapere che le valvole termoioniche potevano eseguire le stesse operazioni logiche che fino ad allora si facevano coi circuiti elettrici, e in più erano molto rapide. Grazie al lavoro del suo maestro Max Newman, Turing potè assistere alla realizzazione del primo calcolatore elettronico del mondo, il Colossus, una meraviglia dell’ingegneria che conteneva 1500 valvole, che eseguiva calcoli di natura logica e non aritmetica e si dimostrò preziosa per elaborare i messaggi tedeschi intercettati.

John von Neumann

John von Neumann e l'EDVAC

Il grande logico e matematico ungherese, naturalizzato statunitense, John von Neumann (1903-1957) colse al volo l’occasione di partecipare al progetto della Moore School of Electrical Engineering di Philadelphia: la costruzione di un calcolatore elettronico potentissimo, l’ENIAC, una macchina enorme (occupava da sola una grande stanza) dotata addirittura di 18.000 tubi elettronici e costruita sul modello delle macchine calcolatrici meglio riuscite dell’epoca, gli analizzatori differenziali. Von Neumann passò subito a occuparsi dell’organizzazione logica di una nuova macchina, l’EDVAC (Electronic Discrete Variable Calculator).

Nel 1945 von Neumann presentò una bozza di proposta, intitolata First draft of a report on the EDVAC[4], che fece conoscere l'architettura hardware dell'EDVAC in tutto il mondo, suggerendo che il nuovo calcolatore fosse fisicamente realizzato sul modello della macchina universale di Turing. Questo rapporto delineava la progettazione di un calcolatore digitale elettronico ad alta velocità e a programma memorizzato, incluse le necessarie specifiche per la formulazione e l’interpretazione delle istruzioni codificate. Lo scopo primario era contribuire a chiarire e coordinare il pensiero del gruppo che ha lavorato sull’ EDVAC, testimoniò Von Neumann nel 1947, quando scorsero i primi contenziosi sulla paternità del brevetto. Lo scopo secondario è quello di pubblicare i risultati preliminari, il più in fretta possibile, “ per favorire lo sviluppo dell’ arte di costruire calcolatori ad alta velocità”. L’EDVAC avrebbe posseduto la capacità (memoria) di immagazzinare, come il nastro della macchina astratta, sia dati sia istruzioni in codice, avrebbe avuto anche una componente aritmetica in grado di effettuare ciascuna delle operazioni aritmetiche di base in un solo passo. L'EDVAC è uno dei primi computer elettronici digitali della storia, uno dei primi computer a programma memorizzato della storia e uno dei primi computer della storia basato sull'architettura di von Neumann. Una memoria interna veloce, abbinata a una memoria secondaria più grande e collegata a sua volta a una dotazione illimitata di schede perforate o nastro magnetico, garantiva quella memoria illimitata prescritta da Turing. Dopo un po’ di tempo Von Neumann decise di andarsene dalla Moore per costruire il suo calcolatore, concepito come uno strumento scientifico, da qualche altra parte. “ Se voleva davvero un calcolatore, l’unica cosa da fare era costruirselo” dice Arthur Burks.

Il progetto di un calcolatore elettronico

A John Von Neumann si deve il merito di aver descritto nel suo progetto l'architettura del primo calcolatore elettronico, valido ancora da un punto di vista logico nei moderni sistemi informatici. Il desiderio di Von Neumann era quello di creare un calcolatore elettronico, capace di contribuire allo sviluppo dei metodi matematici numerici di soluzione di problemi applicativi come quelli dell'idrodinamica o della programmazione lineare, e di svelare il mistero della mente umana, oggetto di psichiatria e neurofisiologia. Il calcolatore elettronico serviva per risolvere soprattutto un problema <<immateriale>>, ovvero il processamento dei segnali descritto attraverso relazioni di trasferimento fra input e output, formulate in termini matematici. La matematica stava acquisendo un ruolo centrale nella conoscenza, che non era più mediato dalla fisica. Lo scienziato Norbert Wiener e l'ingegnere Julian H.Bigelow, che diedero vita all'ingegneria matematica, ebbero uno scambio di idee con il fisiologo messicano Arturo Rosenblueth circa la possibile analogia fra i comportamenti dell'uomo e quelli delle macchine. In effetti il fine della costruzione di un calcolatore elettronico era proprio quello di creare una macchina in grado di reagire agli stimoli dell'ambiente, proprio come un essere umano. Anche il neuropsichiatra McCulloch aveva parlato, nel suo articolo A logical calculus of the ideas immanent in nervous activity, dei neuroni, e li aveva descritti come delle <<scatole>> articolate entro <<reti>>, all'interno delle quali si trasmettevano impulsi o segnali vincolati a leggi di tipo logico-matematico. Von Neumann, influenzato da Wiener, entrò a far parte del gruppo di ricerca interdisciplinare che si stava formando, intraprendendo la strada verso il suo grande progetto: il calcolatore elettronico, paragonato da egli stesso al sistema nervoso umano, in quanto sistema di trattamento dell'informazione. Nel progetto di Von Neumann il calcolatore elettronico avrebbe avuto cinque unità di base: un'unità aritmetica centrale, l'unità di memoria, l'unità centrale di controllo e le unità di input e di output. Il suo progetto, che rappresentava una spinta verso un ulteriore grado di astrazione dell'ingegneria elettronica, era il risultato di un'esigenza bellica ma anche industriale. L'influenza di Alan Turing su Von Neumann era stata fondamentale per la trattazione di un progetto riguardante una macchina molto simile al modello di macchina astratta dello stesso Turing, il quale aveva in mente un tale modello per risolvere il problema di computabilità teorica nei termini della logica costruttivista, analogo al problema che poneva la computabilità di una soluzione numerica in un numero ragionevole di passi entro un calcolatore elettronico. Von Neumann cercò di far capire ai suoi colleghi l'importanza e la necessità imminenti di un calcolatore elettronico e il progetto fu appoggiato dall'IAS nel 1945. In seguito Von Neumann iniziò a dar vita al suo lavoro, con la collaborazione di Goldstine, con il quale affrontò le differenze importanti che intercorrono fra la formulazione matematica di un problema e la sua codificazione sotto la forma di istruzioni che il calcolatore è chiamato a eseguire. Nel 1946 avveniva l'inaugurazione dell'ENIAC, avente una metodologia di programmazione completamente differente da quella utilizzata dai calcolatori precedenti. Il calcolatore venne utilizzato dai servizi militari, dalle grandi università e solo più tardi dalle industrie. Inoltre fu utilizzato in campo meteorologico, nell'ambito dell'ECP, con lo scopo di trasformare la meteorologia approssimativa in una scienza esatta.

L'architettura di von Neumann

Mentre l’ENIAC eseguiva le sue operazioni aritmetiche su numeri espressi per mezzo delle dieci cifre decimali, l’EDVAC avrebbe fruito della semplificazione resa possibile dalla notazione binaria, inoltre avrebbe contenuto una componente deputata al controllo logico che doveva trasferire le istruzioni da eseguire dalla memoria alla componente aritmetica. Questo tipo di organizzazione del calcolatore ha preso il nome di architettura di von Neumann, un modello sulla cui base sono costruiti ancora oggi i calcolatori.

Nel Draft il nome di Turing non viene mai citato, ma la sua influenza è chiara: più di una volta von Neumann afferma che l’EDVAC dovrà essere di carattere generale, e lascia intendere che il cervello umano deve parte delle sue notevolissime capacità al fatto di saper funzionare come un calcolatore universale. Von Neumann si rendeva conto che i princìpi base della progettazione dei calcolatori elettronici si fondavano sulla logica. I calcolatori creati dopo la seconda guerra mondiale erano profondamente diversi dai precedenti calcolatori automatici poiché erano pensati come apparati universali capaci di eseguire qualsiasi processo simbolico.

Il carattere provvisorio del First Draft era testimoniato dai riferimenti a sezioni inesistenti. Secondo il documento l’EDVAC era una macchina che aveva come obiettivo l’esecuzione di calcoli secondo procedure espresse attraverso istruzioni univoche e non ambigue. L’innovazione principale rispetto all’ENIAC consisteva nella memorizzazione del programma che veniva poi eseguito senza un ulteriore intervento umano. Gli “Organi” della macchina dovevano essere: Centro Aritmetico (CA), Centro Logico o Centro Centrale (CC), Memoria (M), Unità di Input (I), Unità di Output (O). Inoltre era previsto un organo che trasferiva i dati esterni in R, che doveva essere la parte della memoria che ospitava i dati esterni e preparava i dati output. Von Neumann intendeva distinguere chiaramente istruzioni e dati, tanto che la prima cifra di ogni “parola” doveva indicare se si trattava di un dato, indicato con “0”, o di un’istruzione indicata con “1”. Nel caso delle istruzioni, una volta riconosciute come tali non era possibile modificarne il contenuto vero e proprio, ma solo la parte dedicata all’indirizzo delle variabili. Normalmente le istruzioni venivano eseguite in successione , ma era possibile usando un particolare indirizzo Z, fare si che l’unità centrale cercasse l’istruzione da eseguire nel registro di memoria Z e la eseguisse. In ciò consisteva il “salto incondizionato”. Inoltre era previsto anche un macchinoso meccanismo per il “salto condizionato” ottenuto attraverso il controllo sul segno di uno dei numeri contenuti nei registri ausiliari dell’unità aritmetica. Sulla base del valore di questa condizione veniva scelto il numero dell’istruzione successiva. Da ciò si possono intravedere le prime sostanziali differenze con l’ENIAC, infatti in quest’ultimo le operazioni aritmetiche venivano eseguite negli accumulatori usando una serie di componenti hardware della macchina che lavoravano separatamente. Mentre nell’EDVAC tutte le operazioni erano centralizzate nell’unità aritmetica che le svolgeva con l’aiuto dell’unità di controllo. Il tentativo di astrazione di von Neumann aveva i suoi limiti. Per esempio non c’era traccia dei dettagli tecnici delle linee di ritardo a mercurio, nonostante esse venissero indicate come il dispositivo tecnologico prescelto per la memoria. Alla fine l’EDVAC non fu realizzato come programmato nel First Draft , infatti era diversa nella struttura logica, nelle scelte tecnologiche, nelle dimensioni delle varie parti e nell’architettura. Comunque il modello di calcolatore descritto da von Neumann è stato considerato il capostipite dei calcolatori moderni.

Tuttavia una macchina reale poteva solo avvicinarsi a quella universale e ideale di Turing: era importante che essa avesse una memoria molto grande, corrispondente al nastro potenzialmente infinito di Turing, nella quale potessero coesistere istruzioni e dati. D’altro canto, i programmi da eseguire venivano memorizzati, per la prima volta, dentro la macchina. Ma l’aspetto veramente rivoluzionario di questi calcolatori era il loro carattere generale e universale, mentre il programma memorizzato era semplicemente un mezzo.

Analogia cervello-calcolatore: la teoria degli automi di John von Neumann

Verso gli anni quaranta e cinquanta del Novecento diventò sempre più evidente che i continui e costanti sviluppi nell’ambito dell’informatica o “scienza dei calcolatori” avrebbero presto portato a concepire il computer non più come una macchina capace di eseguire calcoli numerici sempre più velocemente rispetto ai modelli precedenti ma come ad un dispositivo che, messo in sinergia con altri sistemi tecnologici (come radar, telefono e servomeccanismi), fosse in grado di automizzare la maggior parte delle attività umane.

A questo scopo era necessario che l’informatica (computer science, scienza che riguarda le macchine) si evolvesse piuttosto in una information science, una scienza capace di comprendere profondamente i dispositivi tecnici, la loro interazione coordinata, le reti e le strutture di controllo che avrebbero assicurato il funzionamento automatico. Pertanto ne consegue che questo nuovo campo di studi avesse uno stretto legame tanto con la logica quanto con alcuni settori delle scienze della vita, quali la neurofisiologia e la biologia molecolare, dal momento che si sarebbe dovuto concentrare sulle questioni logiche della configurazione del calcolatore e dei suoi collegamenti e analogie con la struttura cerebrale umana.

John von Neumann fu sicuramente un pioniere in questo terreno inesplorato dell’informatica come testimonia il suo scritto pubblicato nel 1951 fra gli atti della conferenza tenuta nel settembre del 1948 a Pasadena nell’ambito del Simposio Hixon sui meccanismi cerebrali del comportamento, intitolata The general and logical theory of automata. Infatti il matematico statunitense, trattando di quanto la complessità o complicazione sia limitata negli automi artificiali, afferma che:

« Si sono già date due ragioni che pongono un limite in questo senso alla complicazione. Esse sono le grandi dimensioni e il limitato grado di affidabilità dei componenti di cui disponiamo. Entrambe sono dovute al fatto che adoperiamo materiali del tutto soddisfacenti in applicazioni più semplici, ma inferiori a quelli naturali in questa applicazione altamente complessa. Esiste tuttavia un terzo importante fattore limitante, al quale fa ora rivolta la nostra attenzione: fattore, peraltro, di carattere intellettuale e non fisico. Siamo ben lontani dal possedere una teoria degli automi degna di tale nome, cioè una teoria logico-matematica vera e propria. »
(Neumann 1951, in Somenzi 1965, pp. 222-23)

Il progetto di von Neumann era chiaro: costruire, sulla base del confronto fra cervello e calcolatore, una teoria logica generale che, tenendo conto, come risulta dal brano sopra citato, dell’inferiorità dei materiali artificiali rispetto a quelli naturali, comprendesse non solo entrambe le entità ma che fosse in grado di descrivere l’organizzazione e la dinamica dei processi percettivi e cognitivi di ciascuna di esse.

I presupposti fondamentali che portarono von Neumann al concepimento della teoria degli automi furono intensi contatti, confronti, scambi di idee e collaborazioni nell’ambiente accademico con scienziati interessati ad ambiti di studio diversi dal suo. Prima fra tutti, la corrispondenza epistolare negli anni 1939-41 con il fisico ungherese Rudolf Ortvay (1885-1945), il quale espose al collega diverse idee e intuizioni: la concezione del cervello come uno switching system, formato da una rete i cui nodi sono le cellule attraverso le quali si trasmettono gli impulsi, e diverse differenze e analogie fra il cervello e i sistemi di calcolo elettronico.

Ciononostante gli interessi di von Neumann non si limitarono all’ambito biomedico; infatti fra il 1944 e il 1953 organizzò con i suoi colleghi matematici Norbert Wiener (1894-1964) e Howard Hathaway Aiken (1900–1973) una serie di convegni dedicati al tema del trattamento dell’informazione, invitando, sotto il segno dell’interdisciplinarietà, non solo specialisti di ingegneria delle comunicazioni, di calcolatori e di neurofisiologia ma anche rappresentanti delle scienze umane come antropologi, sociologi e psicologi.

Tuttavia la figura che più spiccò nel corso di questi incontri fu quella di Wiener al quale si deve riconoscere il merito di aver battezzato il progetto con il nome di cibernetica (dal greco κυβερνήτης, “timoniere”) e di aver costituito il manifesto del gruppo con la pubblicazione, nel 1948, del suo libro Cybernetics: or control and communication in the animal and the machine nel quale, approcciandosi verso i problemi della struttura, dell’organizzazione e dell’informazione, esponeva i fondamenti matematici e filosofici dello studio dei comportamenti attivi e intenzionali, nei quali esiste un processo di “pilotaggio” o controllo, e illustrava quanto in questo fenomeno investisse un ruolo cruciale l’idea di retroazione o feedback.

Lo studio di von Neumann approdò a nuovi sviluppi nel dicembre del 1949 quando, durante una serie di cinque conferenze sulla teoria e sull’organizzazione degli automi “complicati” tenute presso l’Università dell’Illinois, elaborò ed approfondì alcune questioni sull’argomento già esposte in fieri durante la conferenza di Pasadena del 1948. Infatti, partendo da una descrizione comparativa e da un’analisi della struttura e della complessità dei principali esempi di automi, il calcolatore e il sistema nervoso umano, il matematico statunitense adottò come modello “assiomatico” su cui poggiare la propria teoria le reti neuronali formali di McCulloch e Pitts ed organizzò lo studio in due diversi filoni: complessità e autoriproduzione e l’affidabilità.

Il tema della complessità e autoriproduzione degli automi è esposto in due libri rimasti incompleti, concepiti poco dopo le conferenze nell’Illinois, pubblicati nel 1966 con i titoli Theory of self-reproducing automata e The theory of automata: construction, reproduction, homogeneity. L’argomento viene trattato da von Neumann utilizzando il concetto della macchina di Turing come strumento per ottenere la descrizione di un sistema astratto di automi capaci di costruire altre macchine identiche, ossia di riprodursi, e di realizzare perfino un automa più complesso di quello iniziale; inoltre, tenendo presente come modello la teoria biologica dell’evoluzione, implementò altri aspetti come l’aumento di efficienza per adattamento all’ambiente e mutazione.

Il problema dell’affidabilità degli automi venne affrontato da von Neumann in una serie di conferenze tenute al CalTech nel gennaio del 1952 i cui atti vennero pubblicati nel 1956 con il titolo Probabilistic logics and the synthesis of reliable organisms from unreliable components. La trattazione parte da una constatazione intuita già negli scritti del 1948: tanto negli automi naturali quanto in quelli artificiali si verificano errori e disfunzioni delle varie parti. Tuttavia mentre i sistemi naturali non necessitano di interventi esterni dal momento che sono capaci di diagnosticare l’errore e contenerne gli effetti, le macchine, invece, sono costruite in modo da amplificare ogni errore permettendone la localizzazione e la risoluzione da parte dell’uomo. Pertanto von Neumann auspica ad una compilazione di codici per la trasmissione di informazioni dotati di alta affidabilità anche quando la trasmissione dei segnali è poco affidabile ed è soggetta a rumori, come nel caso di errori ed anomalie. Tuttavia, il lavoro più noto e più studiato oggigiorno nel campo della teoria degli autonomi rimane The computer and the brain, pubblicato postumo e incompleto nel 1958, un testo che rappresenta non solo una summa dei precedenti lavori ma anche il testamento intellettuale di John von Neumann al mondo della scienza e della cultura.

Alan Turing e l'ACE

Dopo aver scritto un articolo seminale nel 1936, intitolato On Computable Numbers, with an Application to the Entscheidungsproblem[5], Turing scrisse un altro lavoro nel 1945, il rapporto sull’Automatic Computing Engine (ACE) presso il National Physics Laboratory (NPL) che presenta una descrizione completa di un calcolatore. L’ACE di Turing era una macchina molto diversa dall’EDVAC di von Neumann: mentre quest’ultimo metteva al primo posto il calcolo numerico, Turing pensava ad una macchina da adibire anche a molte altre mansioni, quindi la immaginava più minimalista e più vicina alle macchine astratte.

Per Turing le operazioni aritmetiche andavano affidate alla programmazione, al software più che all'hardware. Turing era convinto che l’era dei calcolatori avrebbe potuto influenzare la logica e la filosofia della matematica dal momento che, il linguaggio per comunicare con la macchina doveva essere preciso. Egli riteneva che la logica simbolica avrebbe potuto ricoprire questo ruolo: infatti, nel ruolo di simulare l’intelligenza umana attraverso i calcolatori, la logica avrebbe trovato nuova linfa, occupandosi non solo dal punto di vista teorico della questione, ma anche e soprattutto pratico mediante la stesura di un codice simbolico che fosse quanto più vicino possibile al linguaggio matematico e che stesse alla base dell'ACE.

Nel 1947 Turing parlò dei calcolatori elettronici digitali, e in particolare dell’ACE, davanti alla London Mathematical Society. Turing si chiedeva in che misura fosse possibile, in linea di principio, per una macchina calcolatrice simulare attività umane e questo lo portò a considerare la possibilità di una macchina programmata per imparare e alla quale fosse permesso di commettere errori: “se ci si aspetta che la macchina sia infallibile, allora essa non può essere anche intelligente”. Questo perché, secondo Turing, una caratteristica fondamentale dell'intelligenza umana, era proprio la capacità di commettere errori, e tramite essi, apprendere come risolvere i problemi in maniera sempre differente. Affinché si potesse realmente considerare un calcolatore intelligente, si doveva dunque investire sulla sua capacità di adattamento, e dunque, bisognava fornirgli la facoltà di commettere errori.

Durante la Seconda guerra mondiale anche in Gran Bretagna si diffuse l’esigenza di calcoli su lunga scala. Di questo progetto, si occupò l’NPL che sviluppò una divisione apposita (Mathematics Division) per centralizzare tutte le risorse da impiegare per lo sviluppo di nuovi strumenti di calcolo. John Womersley ne fu il primo responsabile e si occupò, in primo luogo, dell’arruolamento del team di collaboratori che lo avrebbe assistito nel progetto di costruzione di un calcolatore elettronico; pensò immediatamente a Turing.

La proposta di Turing era strutturata in due parti: una “Descriptive Account” e un “Technical Proposal”. In questo documento venivano descritti sia gli aspetti ingegneristici, sia gli aspetti riguardanti la programmazione. L’idea di fondo era quella di ridurre al minimo la complessità parte tecnologica e lasciare che i problemi fossero risolti dalla programmazione. Per Turing la memoria era l’elemento fondamentale, e le dimensioni previste andavano da 50 a 500 linee di ritardo a mercurio. Ogni linea doveva avere la capacità di 1024 cifre che dovevano circolare a 1024 millisecondi. Per garantire l’efficienza della macchina la memoria non doveva essere soltanto grande, ma anche facilmente accessibile; proprio per questo il modello a nastro della “Macchina Universale” non poteva essere adottato senza modifiche. Turing quindi inventò un metodo di programmazione che ottimizzava l’accesso ai dati contenuti nelle linee di ritardo. Se prima le istruzioni venivano codificate in fila dentro una stessa linea di ritardo , quindi bisognava aspettare un millisecondo per eseguire l’istruzione successiva. Se invece si memorizzavano le istruzione tenendo conto dei ritmi di accesso alla diverse parti del dispositivo, era possibile attribuire alle istruzioni un indirizzo relativo, in modo da farle emergere dalla linea di ritardo esattamente al momento in cui dovevano essere eseguite. Questo metodo di programmazione chiamato “Optimun Coding” consisteva nel dichiarare per ogni istruzione l’indirizzo della successiva e migliorava le prestazioni del calcolatore, a patto di conoscere esattamente la struttura e il funzionamento della memoria, e di eseguire elaborati calcoli per anticipare correttamente la successione dei cicli delle linee di ritardo. L’esperienza della “Macchina Universale” spingeva Turing a considerare prioritaria la definizione del sistema di programmazione della macchina che avrebbe guidato e controllato le sue operazioni. Il metodo di programmazione si basava sula trasformazione delle operazioni complesse in una lunga successione di passi semplici. Le uniche azioni eseguibili direttamente dall’hardware erano:

  • Il trasferimento da una zona della memoria ad un’altra.
  • Le operazioni aritmetiche su due registri di memoria temporanea.
  • Alcune operazioni logiche sempre su due registri di memoria temporanea.
  • Un'operazione di trasferimento della memoria alle schede perforate (Dispositivo usato per l’output e per l’input) e viceversa.
  • Il salto incondizionato verso una istruzione successiva specificata evitando di eseguire le istruzioni in stretta sequenza con le precedenti.

Fin dall’inizio, il team di sviluppo dell’ACE incontrò serie difficoltà organizzative: nonostante le grandi capacità tecniche dei singoli componenti del gruppo, mancava una figura di coordinamento che lo gestisse in maniera adeguata. Probabilmente, però, la difficoltà maggiore da dover fronteggiare, fu proprio la scarsa competenza in ambito elettronico che caratterizzava la maggior parte dei membri dell'equipe (Turing escluso). Dunque si optò, almeno inizialmente, per richiedere il supporto di istituzioni esterne che potessero collaborare alla realizzazione del calcolatore; vennero dunque contattati il Post Office Research Station (PORS) e il Telecommunications Research Establishment (TRE). I primi incontri organizzativi avvennero proprio con il PORS e, in quella sede, si stabilì anche la cifra da stanziare perché il progetto potesse partire (circa cinquemila sterline). Tuttavia, al PORS il progetto ACE non era considerato prioritario e venne concessa solo un decimo della cifra che doveva essere stanziata e per questo la collaborazione si interrusse poco dopo. Anche con il TRE le trattative, purtroppo, non andarono meglio e ben presto, anche con questa organizzazione, le trattative si interruppero.

Il National Physics Laboratory, dal quale Turing si allontanò, una volta incluso nel team Harry Huskey, noto esperto di informatica, riuscì a costruire una versione ridotta dell’ACE, il cosiddetto ACE pilota, che funzionò egregiamente per anni. Mentre von Neumann chiamava il lavoro di programmazione “codifica” e lo considerava una mansione da impiegato che non richiedeva grande intelligenza, Turing considerava programmare un calcolatore un lavoro molto affascinante, anche perché qualunque processo che sia davvero meccanico può essere passato alla macchina. È probabile che von Neumann abbia ripreso l’idea di un calcolatore universale utilizzabile nella pratica dall’opera di Turing. In definitiva, tutti gli odierni calcolatori sono “macchine di von Neumann”, ossia varianti dell’architettura di base che von Neumann, proseguendo il lavoro di Alan Turing, elaborò negli anni Quaranta. Nel suo rapporto sull’ACE, Turing aveva proposto una macchina relativamente semplice nella quale moltissime cose erano affidate al software, ma in compenso il programmatore aveva un forte controllo delle operazioni di base: era una macchina che aveva tutte le potenzialità per funzionare, ma Turing non ebbe il piacere di vederla realizzata.

La cattedrale di Turing: George Dyson e le origini dell'universo digitale

In questo moderno capolavoro, il divulgatore scientifico George Dyson, figlio del fisico Freeman Dyson che opera a Princeton nel dopoguerra, si impegna nel ricoprire il ruolo di storico in quanto descrive la straordinaria esperienza di numerosi personaggi, seguendoli passo dopo passo in quel percorso culminato nella realizzazione di scoperte eccezionali (e senza precedenti) ed evidenziando quanto il lavoro dell'équipe di Princeton sia intenzionato a cambiare il mondo, soprattutto quello digitale. Alla nascita del calcolatore digitale non sono tributati approfondimenti paragonabili a quelli riconosciuti ad altre grandi scoperte. Pertanto, Dyson cerca di riportare i fatti accaduti adottando un approccio cronologico-analitico, al fine di colmare il vuoto di conoscenza su questa vicenda. Come si evince dal titolo del libro, la realizzazione del calcolatore non è da attribuirsi esclusivamente al matematico inglese Alan Turing ma esso è, in realtà, il prodotto di un vero lavoro collettivo. Il titolo del libro, non a caso, rivela che la nascita del computer sia il frutto di una grande collaborazione, realizzato da personaggi tanto geniali quanto, purtroppo, ignoti: proprio come accade nella costruzione delle cattedrali, grazie a cui l’architetto riscuote maggior successo rispetto agli artigiani che invece restano anonimi, lo stesso accade nel periodo successivo alla seconda guerra mondiale. Ciascun di loro ricopre un ruolo importante nella realizzazione del medesimo scopo: la ricerca si trasforma ben presto in un progetto terribile e largamente dettato da esigenze pratiche. Il luogo in cui si delinea questo percorso, il quale si estende da prima a poco dopo il secondo conflitto mondiale, è l'Università di Princeton in cui tutti gli ospiti-studiosi si impegnano nel fornire all'esercito americano ed alla forze alleate gli strumenti adatti a combattere ed a vincere la guerra, dapprima, contro il nazismo tedesco e successivamente contro l'Unione Sovietica, nel secondo dopoguerra, con cui gli Stati Uniti iniziano una corsa agli armamenti dando vita al periodo storico conosciuto come ‘Guerra Fredda'. Infatti verso la fine del 1945, John von Neumann organizza un ristretto gruppo di ingegneri per cominciare a progettare, a costruire ed a programmare un calcolatore elettronico digitale, il quale non è che un’implementazione fisica di un concetto teorico già elaborato nel 1936 da Alan Turing. Grazie alla collaborazione ottenuta da Norbert Wiener, Flexner, Eckert e Mauchly (per quanto riguarda la costruzione), il matematico ungherese partecipa e coordina la realizzazione dell’ENIAC (Electronic Numerical Integrator And Computer), originariamente chiamato MANIAC, presso il Ballistic Research Laboratory. Questo primitivo prototipo del moderno computer è utile nei calcoli balistici, meteorologici o sulle reazioni nucleari, ma si rivela una macchina limitata. Pertanto, si rivela utile e necessaria l'intuizione di Alan Turing che consiste nel permettere al computer (l'hardware) di eseguire istruzioni codificate in un programma (software) inseribile e modificabile dall'esterno, intuizione che fonda le basi della stragrande maggioranza dei computer odierni. Ed ecco che nasce l'EDVAC (Electronic Discrete Variables Automatic Computer), la prima macchina digitale programmabile tramite un software basata su quella che è poi definita l'architettura di von Neumann. Altri importanti personaggi che hanno contribuito a dar vita all'universo digitale sono Gödel, le cui teorie fondano l'architettura logica del calcolatore, Zvorykin che lancia anche la quarta fase dell’evoluzione mediante l'introduzione delle valvole termoioniche, Veblen che usa un modello matematico per elaborare una tavola di tiro completa e Nicholas Metropolis che introduce il Metodo di Monte Carlo, un algoritmo capace di rivolvere complicati problemi computazionali. George Dyson crea, in questo modo, un mito fondativo moderno perché percorre passo dopo passo la partecipazione di ciascuno di questi studiosi alla straordinaria avventura di Princeton.

Riferimenti bibliografici

  • M. Davis, The Universal Computer. The Road from Leibniz to Turing, 2000; tr. it. Il calcolatore universale, Milano 2003, pp. 174-242 (nuova ed. 2012, pp. 182-251).
  • T. Numerico, Alan Turing e l'intelligenza delle macchine, Milano 2005.
  • L'eredità di Alan Turing. 50 anni di Intelligenza artificiale, Milano 2005.
  • D. Leavitt, The man who knew too much: Alan Turing and the invention of the computer, 2006; tr. it. L'uomo che sapeva troppo: Alan Turing e l'invenzione del computer, Torino 2008.
  • M. G. Losano, Il centenario di Konrad Zuse (1910-1995): il computer nasce in Europa, in Atti della Accademia delle scienze di Torino. Classe di scienze morali, storiche e filologiche, 145 (2011), pp. 61-82.
  • Alan Mathison Turing: l'indecidibilità della vita, a cura di C. Petrocelli, Milano 2014.

Note

[6]

  1. (EN) Alonzo Church, An Unsolvable Problem of Elementary Number Theory, in American Journal of Mathematics, vol. 58, n. 2, The Johns Hopkins University Press, aprile 1936, pp. 345–363. URL consultato il 6 maggio 2016.
  2. (EN) Alan M. Turing, Computing Machinery and Intelligence (PDF), in Mind, vol. 59, october 1950, pp. 433-460. URL consultato il 6 maggio 2016.
  3. Konrad Zuse Internet Archive
  4. First draft of a report on the EDVAC by John von Neumann – Contract No. W-670-ORD-4926 between the United States Army Ordnance Department and the University of Pennsylvania – Moore School of Electrical Engineering, University of Pennsylvania – June 30, 1945. Il documento è disponibile anche nel seguente libro: Nancy Stern, From ENIAC to UNIVAC – An appraisal of the Eckert-Mauchly computers, Digital Press, 1981.
  5. (EN) Alan M. Turing, On Computable Numbers, with an Application to the Entscheidungsproblem (PDF), in Proceedings of the London Mathematical Society, ser. 2, vol. 42, 12 novembre 1936, pp. 230-265. URL consultato il 6 maggio 2016.
  6. Alan M. Turing, Computing Machinery and Intelligence in Mind, vol. 59, october 1950, pp. 167-193.