Le radici filosofiche dell’informatica
Fin dai primi pensatori greci (Parmenide, Socrate, Platone, Aristotele, ecc.) la filosofia
occidentale si è interrogata sui modi migliori di acquisire informazioni (filosofia della
conoscenza), codificarle, organizzarle, rielaborarle e trarne conseguenze corrette (logica). Col
tempo, tale ricerca si sarebbe posta l’ambizioso obiettivo di codificare regole (algoritmi) che
guidassero passo passo la ricerca e il trattamento delle informazioni, permettendo a chiunque di
procedere senza errori e nel modo più efficiente sulla strada del conoscere (problema del metodo
in Bacone, 1561-1626, e Cartesio, 1596-1650). Si aspirava dunque a procedimenti automatici,
ma ciò significava anche (in una prospettiva che solo in seguito si poté meglio apprezzare)
eseguibili meccanicamente: ecco perché il successo (per quanto tuttora parziale) di tale
programma ci ha condotto all’informatica (= informazione automatica).
La matematica fu la prima a progredire in questa direzione, grazie alla sua natura formale e
simbolica, e al rigore logico conferitole di Euclide: presto apparvero dunque le prime calcolatrici
meccaniche, come quelle di Pascal (1642) e Leibniz (1673), finché Charles Babbage progettò
una macchina programmabile con schede perforate in grado di eseguire ogni genere di calcolo
(1833). Ma si sarebbe potuto passare dalla semplice automazione del calcolo aritmetico alla vera
e propria informatica solo con la realizzazione di due condizioni: primo, la formalizzazione di
tutte le forme di conoscenza, che permettesse di codificarle in numeri o simboli trattabili come i
numeri; secondo, la scoperta di un supporto fisico adatto, cioè di un tipo di macchina e di
materiali in grado di svolgere senza errori e in tempi accettabili operazioni di complessità
immensamente superiore a quella di semplici funzioni aritmetiche (nessuna macchina fatta di
ruote, ingranaggi e schede perforate potrebbe infatti svolgere i più elementari compiti di uno dei
nostri personal computer: sarebbe di dimensioni ingestibili, impiegherebbe tempi lunghissimi e
sarebbe continuamente bloccata da guasti meccanici).
Quanto alla prima condizione, già Pitagora e Platone avevano teorizzato che l’intera realtà
ha struttura matematica. Raimondo Lullo (1235-1316) intuì che tutto il sapere si può analizzare
in contenuti elementari, rappresentare simbolicamente e trattare secondo regole (ars
combinatoria), mentre Cartesio sostenne che ogni problema si poteva scomporre in problemi più
elementari, fino a giungere a questioni talmente semplici da trovare una soluzione immediata.
Secondo Hobbes (1588-1679) il pensiero non era che un calcolo, e Spinoza (1632-1677) pensava
alla mente come “automa spirituale” e al sistema dei concetti come a una macchina governata da
regole combinatorie.
Leibniz iniziò a dar corpo a queste idee progettando un calculus ratiocinator (1666) che
algebrizzava la logica dei predicati di Aristotele: ad esempio, “tutti gli A sono B” si scriveva
“A/B”, e “Tutti i B sono C” si scriveva “B/C”; a questo punto, la congiunzione “tutti gli A sono
B” e “tutti i B sono C” era l’operazione “A/B · B/C”, che dava come risultato “A/C”. Il suo
progetto fu ripreso e realizzato due secoli dopo da George Boole e Augustus De Morgan, che
tradussero la logica in un’algebra di classi (1847). Grazie ad essa, e ispirandosi anche a Babbage,
Stanley Jevons realizzò nel 1870 una prima macchina per inferenze logiche.
La definitiva formalizzazione e aritmetizzazione dell’informazione venne poi dalla
filosofia della matematica, con le discussioni sulla natura dei numeri, sulla coerenza e la
completezza dei sistemi matematici, e sulla computabilità. Nell’affrontare tali problemi Gottlob
Frege unificò definitivamente calcolo logico e calcolo numerico trattando i concetti come
funzioni, e formalizzò i procedimenti logici con la completa esplicitazione delle definizioni e
delle regole, che in prospettiva li rendeva effettivamente eseguibili da una macchina
(Begriffschrift, 1879). L’unificazione di logica e matematica fu perfezionata dai filosofi Alfred
Whitehead e Bertrand Russell (Principia mathematica, 1910), mentre il processo di
formalizzazione era completato da David Hilbert (1862-1943), che trattò anche i simboli logici
come simboli non interpretati e definiti solamente dalle regole d’uso; affrontando il problema
della coerenza, inoltre, egli mostrò come rappresentare le proposizioni con formule aritmetiche, e
con un analogo espediente il logico e matematico Kurt Gödel dimostrò teoremi fondamentali sul
problema della completezza e della computabilità (1931).
Infine, proprio per chiarire la nozione di computabilità, nel 1936 Alan Turing la visualizzò
nel modello logico di una macchina capace di risolvere qualunque problema algoritmico (ossia
risolubile in un numero finito di operazioni elementari come scrivere un simbolo, leggerlo,
cancellarlo ecc.) Diveniva dunque evidente come le regole per manipolare l’informazione, una
volta pienamente generalizzate e formalizzate, si traducessero facilmente in una struttura
meccanica. Turing, in particolare, ebbe l’intuizione che calcolare fosse solo un caso particolare
della più generale attività di manipolazione di simboli, e tale intuizione fu alla base del carattere
virtuale del calcolatore, cioè della sua capacità di emulare qualsiasi altra macchina le cui
operazioni fossero rappresentabili attraverso una successione di istruzioni.
La seconda condizione per l’emergere dell’informatica fu lo sviluppo di macchine adatte
al trattamento fisico dell’informazione, favorito da una serie di intuizioni convergenti: anzitutto
si comprese che con la notazione binaria (la trascrizione di qualunque simbolo logico o
matematico per mezzo dei soli simboli 0 e 1, già nota a Leibniz, e forse addirittura ai Cinesi in
epoca pre-cristiana) qualunque informazione poteva esser rappresentata per mezzo di stati fisici
semplicissimi, come ad esempio l’apertura o chiusura dei circuiti elettrici; ma già Charles
Sanders Peirce (1866) aveva suggerito che coi circuiti elettrici si possono realizzare le operazioni
della logica di Boole. Pertanto nel 1937 Claude Shannon (lo stesso che doveva poi descrivere
matematicamente la trasmissione delle informazioni) sviluppando l’idea di Peirce rese possibile
il passaggio dalle calcolatrici meccaniche ai calcolatori elettronici, e il prevalere dei computer
digitali su quelli analogici. Infine nel 1945 von Neumann, muovendo dal concetto della
macchina di Turing, e consapevole che dati e istruzioni non sono che diversi modi di
rappresentare informazioni, progettò l’ EDVAC, il primo modello degli attuali computer con un
programma immagazzinato in memoria al pari dei dati e articolato in quattro unità: processore,
memoria, unità di controllo e unità di input-output.
Più in generale, anche la Seconda Guerra Mondiale aveva avuto un ruolo non
sottovalutabile per la nascita dei calcolatori della nuova generazione: non soltanto imponendo
l’invenzione di strumenti per effettuare velocemente calcoli complessi, ma anche e soprattutto
favorendo l’interazione tra scienziati provenienti da discipline differenti, che condivisero
l’obiettivo della sconfitta del nemico comune. L’abbattimento degli steccati tra le singole scienze
aveva consentito alla comunità degli studiosi di incontrarsi ai confini delle aree già strutturate del
sapere e di inventare una macchina veramente innovativa come il calcolatore a programma
memorizzato. Anche in seguito il progetto di von Neumann non si sviluppò nel vuoto, e dal 1945
al 1953 egli partecipò a un ciclo di conferenze (le Macy’s Conferences, a New York), in cui
specialisti provenienti da ogni area del sapere (antropologia, linguistica, filosofia, psicologia,
sociologia, economia, neurofisiologia, matematica, fisica, ingegneria, ecc.) discussero le
opportunità e le prospettive di una nuova scienza: chiamata “Cibernetica” da Norbert Wiener
(1948), la nuova disciplina non aveva uno statuto epistemologico preciso, ma si occupava di
meccanismi a retroazione (feed-back) animali e artificiali. Le discussioni di questo gruppo, che
comprendeva tra i suoi membri il meglio degli scienziati di punta degli Stati Uniti, ebbero un
ruolo di primo piano nell’evoluzione dell’informatica.