Macchina analitica
# Macchina analitica

La macchina analitica (analytical engine in inglese) è stato il primo prototipo di un computer meccanico sviluppato per eseguire compiti generici. Il progetto fu sviluppato dal matematico, filosofo e scienziato inglese Charles Babbage (1791–1871), che cercò anche di realizzarlo praticamente. Rappresenta un importante passo nella storia dell'informatica.

## Storia

La prima descrizione del progetto fu pubblicata il 26 dicembre del 1837 nella nota On the Mathematical Power of the Calculating Engine; in esso Babbage chiariva l'organizzazione di una macchina capace di effettuare calcoli generali sotto il pieno controllo automatico.

Babbage lavorò incessantemente al progetto fino alla propria morte, avvenuta nel 1871. Per motivi politici e finanziari, la macchina non fu però mai realizzata. È indubbio, comunque, che i moderni personal computer, pur essendo stati sviluppati quasi cento anni dopo, abbiano notevoli analogie con la macchina analitica.

Alcuni storici ritengono che con le competenze tecniche dell'epoca la macchina non avrebbe potuto affatto funzionare, mentre altri storici ribattono che un maggiore supporto politico e finanziario avrebbe permesso di superare i problemi tecnici e quindi avrebbe reso possibile la costruzione della macchina.

## Progetto

Babbage, durante lo sviluppo del suo primo progetto, la macchina differenziale, si era reso conto di poter ideare una macchina generica molto più potente e interessante dal punto di vista pratico. Una macchina, cioè, che non si limitasse solo a sviluppare dei calcoli matematici, ma che potesse elaborare complessi "ragionamenti". L'ispirazione veniva probabilmente anche dallo sviluppo che l'orologeria aveva avuto nel Settecento, che a sua volta aveva generato un artigianato degli "automi", usati solo per divertimento, e dalla possibilità di programmazione del telaio di Joseph-Marie Jacquard. Chiamò quest'ultimo sistema, appunto, macchina analitica.

Lo schema teorico di questa macchina è universalmente riconosciuto come il primo prototipo di calcolatore generico complesso. È infatti basato su un sistema di input, un sistema per l'elaborazione dei dati con un dispositivo chiamato "Mill" (mulino), e un sistema di output, lo stesso schema che verrà usato più di un secolo dopo nei laboratori statunitensi per creare il primo computer.

La macchina analitica doveva essere alimentata da un motore a vapore e doveva essere lunga più di 30 metri per 10 metri di profondità. I dati d'ingresso e il programma sarebbero stati inseriti tramite schede perforate, un metodo già utilizzato per programmare i telai meccanici dell'epoca e che sarà utilizzato in séguito anche nei primi computer mainframe, fino a tutti gli anni 70 del secolo XX. I dati di uscita sarebbero stati prodotti da uno stampatore e da un arco in grado di tracciare curve. La macchina sarebbe stata in grado di perforare delle schede per memorizzare dei dati da utilizzare successivamente. La macchina utilizzava un'aritmetica in base 10 a virgola fissa. La memoria interna sarebbe stata in grado di contenere 1000 numeri di 50 cifre. La componente "Mill", che costituiva l'idea di base dell'unità aritmetica e logica presente nelle moderne CPU, sarebbe stata in grado di svolgere le quattro operazioni aritmetiche.

Il linguaggio di programmazione utilizzato dalla macchina era un linguaggio molto simile al moderno assembly. In esso erano previsti cicli e salti condizionali che rendevano quel linguaggio (e quindi anche la macchina) Turing completo. Erano previsti tre differenti tipi di schede: una tipologia era riservata alle operazioni matematiche, un altro tipo era previsto per le costanti matematiche e il terzo tipo serviva a caricare e salvare i dati.

Nel 1842, durante un congresso, il matematico italiano Luigi Federico Menabrea ascoltò dalla voce di Babbage una descrizione del progetto della macchina analitica. Menabrea realizzò una descrizione in francese della macchina. Il suo lavoro fu tradotto in inglese e significativamente ampliato da Ada Lovelace. Lovelace, negli anni successivi, realizzò molti lavori teorici per la macchina analitica, ivi compreso quello che è considerato il primo programma informatico della storia, un algoritmo per il calcolo dei numeri di Bernoulli.

## Parziale costruzione

Nei suoi ultimi anni, Babbage si adoperò per costruire una versione semplificata della macchina, riuscendo ad assemblarne una piccola parte prima della sua morte nel 1871.

Nel 1878 un comitato dell'Associazione britannica per l'avanzamento della scienza (British Association for the Advancement of Science), nonostante avesse descritto la macchina come "una meraviglia d'ingegno meccanico", espresse una raccomandazione contro la sua costruzione, cosa che impedì l'accesso a eventuali fondi governativi per il completamento della macchina. Il comitato riconobbe l'utilità e il valore della macchina, ma non fu in grado di stimarne il costo di costruzione ed era incerto sul fatto che la macchina avrebbe potuto funzionare una volta completata.

Nel 1906 Henry P. Babbage, figlio di Charles Babbage, costruì una parte della macchina e del sistema di stampa e la utilizzò per calcolare una lista (errata) di multipli del pi greco. La parte costruita era una piccola parte del progetto completo, non era programmabile e non era dotata di unità di memorizzazione. La "Macchina analitica" di Henry è ora in mostra nel Museo della scienza di Londra. Henry si mostrò disposto a costruire anche un prototipo dell'intera macchina, con una minore capacità di memorizzazione: "forse per una prima macchina dieci (colonne) andranno bene, con quindici ruote ciascuna". Questa versione avrebbe potuto lavorare con 20 numeri di 25 cifre ciascuno e ciò che avrebbe potuto fare con questi numeri era, ai tempi, impressionante. "È solo una questione di schede e tempo", scrisse Henry Babbage nel 1888,"... e non c'è alcuna ragione per cui (ventimila) schede non dovrebbero essere usate, se necessario, in una macchina analitica per gli scopi di un matematico.".

Nel 1991 il Museo della scienza, lavorando a partire dai suoi progetti originali, costruì un modello completo e funzionante della seconda macchina differenziale che Charles Babbage presentò nel 1823. La versione del Museo della scienza includeva vari perfezionamenti rispetto a quella di Babbage, che furono pensati durante lo sviluppo della macchina analitica. Il Museo della scienza si è impegnato a realizzare la sua macchina utilizzando solo materiali, tolleranze e accoppiamenti dimensionali che sarebbero stati utilizzabili anche dal matematico britannico nella sua epoca, dimostrando, in questo modo, che la macchina avrebbe potuto funzionare. Gli ingegneri svedesi Edvard Scheutz e Per Georg Scheutz hanno costruito nel 1853 un modello funzionante della macchina differenziale, ma su diversa scala: le dimensioni di un tavolo anziché le dimensioni di una stanza.

## Istruzioni

Non è noto se Babbage abbia scritto delle istruzioni esplicite sul come programmare la macchina manualmente. Tuttavia ha mostrato come i programmi stessi siano formati da una serie di stati, e quali operatori venissero utilizzati durante l'esecuzione di ognuno di essi.

Allan G. Bromley ha ipotizzato che le varie schede potessero essere lette anche in ordine inverso, cosa che renderebbe la macchina Turing equivalente:

   "... le schede potevano essere ordinate in modo da muoversi sia in avanti che indietro (e dunque creare dei cicli)...
   Questo permise l'introduzione per la prima volta, nel 1845, di operazioni per una grande varietà di funzioni tra cui, innanzitutto, un sistema efficace di controllo da parte dell'utente dei cicli nella programmazione. "

Il programmatore Fourmilab, che ha realizzato un emulatore della macchina, afferma:

   "Il lettore di schede della macchina non è limitato a processare le schede semplicemente una dopo l'altra dall'inizio alla fine. Infatti può, in aggiunta, essere reindirizzata alle stesse carte che legge e, in base a come la levetta del mulino è attivata, può sia andare avanti nella catena di lettura, saltando alcune schede, o tornare indietro e ri-processare le carte già lette in precedenza."

Questo emulatore contiene un set scritto di istruzioni in simboli, che però è stato ideato dai suoi autori piuttosto che essere basato sul lavoro originale di Babbage. Per esempio il programma per calcolare un fattoriale sarebbe scritto:

dove CB è la condizione usata per far retrocedere la lettura, in questo caso di 11 schede.

## Influenze

### Informatica

La macchina analitica venne completamente dimenticata, salvo poche eccezioni: Percy Ludgate, ad esempio, scrisse della macchina analitica nel 1915 e progettò a sua volta una propria versione della macchina (che non realizzò mai). La macchina analitica di Ludgate era molto più piccola di quella di Babbage, difatti doveva occupare solo 0.22 metri cubi, e teoricamente doveva essere in grado di moltiplicare due numeri di 20 cifre in 6 secondi. Leonardo Torres y Quevedo e Vannevar Bush conoscevano i lavori di Babbage sebbene, probabilmente, non si conoscessero reciprocamente.

I lavori di Babbage ispirarono profondamente i lavori di George Stibitz dei Bell Laboratories di New York prima della seconda guerra mondiale e di Howard Aiken di Harvard durante e dopo la seconda guerra mondiale. Entrambi costruirono dei calcolatori elettromeccanici con un disegno simile al progetto di Babbage, sebbene fossero concettualmente molto diversi da un moderno computer programmabile. La macchina di Aiken fu fortemente finanziata dall'IBM e fu chiamata Harvard Mark I.

Dalla autobiografia di Babbage:

«Quando la macchina analitica verrà realizzata, necessariamente guiderà lo sviluppo futuro della scienza.»

### Finzione

William Gibson e Bruce Sterling, scrittori cyberpunk, sono coautori di un romanzo del genere steampunk intitolato La macchina della realtà (The Difference Engine). In questo romanzo, ambientato nella Londra del 1855, si esplora un passato alternativo in cui la macchina analitica è stata già costruita e la sua realtà, unita a quella della Rivoluzione industriale, ormai avviata, influenza notevolmente i personaggi e le scene dell'era vittoriana.

