Giovedì 29 Giugno 2006

- Sezione 3 - Dal 1600 al 1945 - Approfondimenti

Babbage, Menabrea, Ada Lovelace

Fino a tutto il Medioevo, l’uomo ha inconsapevolmente lavorato per la nascita dell’Informatica: ha avvertito l’esigenza di definire metodi per la rappresentazione e la elaborazione dell’informazione che risultassero espliciti e non ambigui e che potessero essere eseguiti in modo meccanico da esseri umani.

ma non ha ancora ipotizzato che questi metodi potessero essere utilizzati in modo autonomo da macchine. Tutto il lavoro era stato fatto per rendere non ambigua la comunicazione fra umani e meno noiosa e più efficiente l’esecuzione di calcoli (aritmetici).

Fino agli inizi del diciassettesimo secolo, l’unico strumento costruito dall’uomo per facilitare l’esecuzione di calcoli è l’abaco [Inserire un riquadro]. Successivamente, all’abaco si aggiungono nuovi strumenti per facilitare l’esecuzione dei calcoli: le macchine di Schickard, la pascalina, la macchina di Leibniz,…. Una innovazione significativa è stata l’introduzione dei logaritmi che ha favorito la costruzione di regoli calcolatori.

Il vero salto di qualità verso la costruzione di macchine per la esecuzione di sequenze di operazioni è costituito dai progetti ideati da Charles Babbage (1791 – 1871). Babbage, ispirato dall’idea di Jacquard di pilotare il funzionamento di un telaio mediante un programma registrato su schede perforate, nel 1819 ha progettato una macchina (Differnce Engine o Macchina alle differenze) per eseguire calcoli secondo una sequenza definita da una codifica riportata su schede perforate. La Macchina alle differenze era in grado di tabulare un polinomio di grado n utilizzando la corrispondente tabella delle differenze. (Vedi riquadro con n=2). Il primo prototipo di questa macchina fu completato nel 1822 e ne fu data notizia ufficiale con una nota letta alla Royal Astronomical Society il 14 giugno del 1822. A proposito della efficienza di questa macchina, Babbage riferisce che la macchina, impegnata a tabulare il polinomio n2 +n +1, era capace di produrre 60 risultati in 5 minuti (vedi tabella).

n

y

D ’

D ’’

0

41

0

2

1

43

2

2

2

47

4

2

3

53

6

2

Assegnati i valori iniziali (n=0, y=41, D ’= 0 e D ’’=2), i valori delle righe successive si ottengono tutti con sole addizioni nel modo seguente

D ’(i+1) = D ’(i) + D ’’

y(i+1) = y(i) + D ’(i+1).

Una innovazione significativa contenuta nel progetto, ma non realizzata nel prototipo, era la possibilità di ottenere il risultato dei calcoli stampato direttamente dalla macchina (in tal modo venivano evitati i possibili errori di trascrizione).

"Although Babbage envisaged a machine capable of printing out the results it obtained, this was not done by the time the paper was written. An assistant had to write down the results obtained. Babbage illustrated what his small engine was capable of doing by calculating successive terms of the sequence n2 + n + 41. The terms of this sequence are 41, 43, 47, 53, 61, ... while the differences of the terms are 2, 4, 6, 8, .. and the second differences are 2, 2, 2, ..... The difference engine is given the initial data 2, 0, 41; it constructs the next row 2, (0 + 2), [41 + (0 + 2)], that is 2, 2, 43; then the row 2, (2 + 2), [43 + (2 + 2)], that is 2, 4, 47; then 2, 6, 53; then 2, 8, 61; ... Babbage reports that his small difference engine was capable of producing the members of the sequence n2 + n + 41 at the rate of about 60 every 5 minutes."

Quando ancora non aveva completato la costruzione del primo prototipo di questa macchina, Babbage ha iniziato a progettare una macchina più sofisticata (Analitycal Engine o Macchina analitica) che doveva essere in grado di tabulare (i valori approssimati di) una funzione utilizzando il suo sviluppo in serie troncato all’ordine n.

Non potendo lavorare contemporaneamente alla realizzazione di due macchine, nel 1834 Babbage interrompe il lavoro sulla Macchina alle differenze dopo aver speso 17.000£ concessegli dal governo inglese e 6000£ del suo patrimonio. A questa data Babbage aveva già delineato un progetto sufficientemente dettagliato della Macchina analitica dal quale risultavano chiaramente cinque componenti essenziali:

  • la memoria, per contenere i valori su cui operare: i dati di input, quelli di output e gli eventuali valori intermedi;

  • il mill (equivalente alla CPU dei computer attuali);

  • il controllo costituito dal pacco di schede perforate contenenti informazioni sulle operazioni da eseguire (l’equivalente del programma per i computer); Babbage prefigura l’esistenza di una biblioteca di programmi costituita da insiemi di pacchi di queste schede.

La memoria, anche se limitata nella macchina fisica, poteva di fatto contenere una quantità illimitata di valori perché i dati intermedi potevano essere registrati su nastro perforato ed essere letti al bisogno in un secondo momento.
Babbage non è riuscito a costruire effettivamente la Maccina analitica; il progetto di Babbaga è stato conosciuto a livello europeo attraverso due pubblicazioni: la prima di Luigi Federico Menbrea e la seconda di Ada Lovelace.

Luigi Federico Menabrea

I rapporti fra Babbage e l’Italia (in particolare con il Regno Sabaudo) sono documentati da una lettera all’Accademia delle Scienze di Torino in cui Babbage dice esplicitamente di voler descrivere la macchina da lui inventata per la parte esecutiva dell’analisi; di aver scelto il congresso dei matematici italiani di Torino (15 – 30 settembre 1840) particolarmente per la celebrità della sua Accademia e per la speciale stima a Plana. La relazione sulla macchina analitica è stata scritta da Menabrea; essa rappresenta una delle più chiare descrizioni funzionali della macchina analitica e (forse) l’unica scritta in lingua non inglese (Bibliothèque universelle de Genève, 1840) .
Nell’articolo su "la macchina analitica inventata da Charles Babbage", pubblicato presso la Bibliothèque de Genève, ottobre 1842 No 82, Menabrea per descrivere il funzionamento della macchina utilizza una scrittura simbolica tipica dei linguaggi di programmazione. La tabella in cui è descritta a titolo di esempio la sequenza di operazioni che la macchina deve eseguire per risolvere un sistema lineare di due equazioni in due incognite è strutturalmente identica a un foglio contenente la descrizione dei medesimi calcoli fatta usando il linguaggio di programmazione Bell disponibile per il calcolatore IBM 650. Menabrea individua chiaramente che una istruzione deve contenere due tipi di informazione: una sulla operazione da eseguire e una sugli operandi coinvolti: questi ultimi sono indicati con il nome "variabili" nel senso dato a questo termine dall’Informatica. Nell’articolo è poi chiaramente indicato che il meccanismo per eseguire una data sequenza di calcoli preventivamente programmati è quello inventato da Jacquard per governare il funzionamento dei telai meccanici. Con riferimento al seguente sistema
m·x + n·y = d
m’·x + n’·y = d’

nella tabella è riportato il programma scritto da Menabrea per calcolare i valori di x e y (con V0 = m, V1 = n, V2 = d, V3 = m’, V4 = n’, V5 = d’).

Codice operativo    Primo operando    Secondo operando    risultato    commenti
·    V0    V4    V6    V = m·n’
·    V3    V1    V7    V = m’·n
·    V2    V4    V8    V = d·n’
·    V5    V1    V9    V = d’·n
·    V0    V5    V10    V = d’·m
·    V2    V3    V11    V = d·m’
-    V6    V7    V12    V = m·n’-m’·n
-    V8    V9    V13    V = d·n’-d’·n
-    V10    V11    V14    V = d’·m-d·m’
/    V13    V12    V15    d·n’-d’· V15= ------------- = x m·n’-m’·n
/    V14    V12    V16    d’·m-d·m’ V16= ------------ = y m·n’-m’·n

Per illustrare la somiglianza fra la scrittura adottata da Menabrea e il linguaggio di programmazione Bell usabile con il calcolatore IBM 650, nella tabella seguente viene riportata la versione scritta in
questo linguaggio del programma per la soluzione del sistema precedente, con l’ipotesi di memorizzare i valori dei coefficienti come indicato dalla seguente corrispondenza:
m in 100, n in 101, d in 102, m’ in 103 n’ in 104 e d’ in 105.

3    100    104    106
3    103    101    107
3    102    104    108
3    105    101    109
3    100    105    110
3    102    103    111
2    106    107    112
2    108    109    113
2    110    111    114
4    113    112    115
4    114    112    116

Home Tour virtuale Sezione 3 Approfondimenti