Ada Lovelace e il primo programma di calcolo della storia

Un ritratto di Ada Lovelace del 1840. (Alfred Edward Chalon)

Un ritratto di Ada Lovelace del 1840. (Alfred Edward Chalon)

Ada Lovelace e il primo programma di calcolo della storia

Augusta Ada Byron nasce a Londra il 10 dicembre del 1815, dal poeta Lord Byron e la matematica Anne Isabella Milbanke.E’ conosciuta come Ada Lovelace, nome che assunse dopo il matrimonio con William King, conte di Lovelace. Era una matematica ed è considerata una pioniera dell’informatica, è nota infatti per il suo contributo alla costruzione della macchina analitica ideata da Charles Babbage.

Quando Ada ha appena un mese la madre è già stanca del burrascoso poeta e ottiene la separazione dal marito e l’affidamento della piccola. Il poeta non rivendicò mai la custodia della figlia, anche se, la legge inglese del tempo dava la piena custodia ai padri in caso di separazione.

Anne Isabella Milbanke era una donna molto severa ossessionata dall’ordine e la disciplina, come madre ebbe come scopo principale quello di educare la figlia allo studio della scienza e la matematica e di allontanarla dal retaggio poetico del padre.

Nel 1833 all’età di 18 anni, Ada incontrò Charles Babbage inventore della Macchina Analitica. Ada si appassionò subito all’ambizioso progetto di Babbage e alle possibili prospettive di calcolo e dal 1842 al 1843 si dedicò alla traduzione dal francese all’inglese delle teorie di sviluppo proposte dall’italiano Luigi Federico Menabrea, che Babbage aveva conosciuto a Torino nel settembre del 1840. Ne nacque una fitta e visionaria corrispondenza tra Ada e Babbage.

Ada intuì l’idea di loop e di sequenza ripetuta di passi [sottoprogramma] Durante il lavoro di traduzione all’articolo di Manabrea, Ada aggiunse delle note personali [molto più lunghe dello stesso articolo], tra queste note c’è un particolare algoritmo che è storicamente riconosciuto come il primo programma della storia: L’algoritmo del numeri di Bernoulli.

Oltre ad aver scritto il primo software della storia, Ada Byron anticipò molti altri aspetti dell’informatica: pare sia stata lei a consigliare a Babbage l’utilizzo di schede perforate per la sua macchina analitica; fu la prima ad intuire che oltre al semplice calcolo i computer avrebbero avuto infinite applicazioni espressive come, ad esempio, la musica. Nonostante la rigida educazione scientifica, la contessa di Lovelace [è questo il nome di Ada da sposata] si dedicò ad una scienza poetica, condita di sogni e visioni, tanto che Babbage l’aveva soprannominata “incantatrice di numeri”. Ada Lovelace morì prematuramente, all’età di 37 anni, per un tumore uterino.

Per anni è stata dimenticata, a malapena citata nelle note biografiche del padre, ma recentemente è stata notevolmente rivalutata. A lei sono dedicati: il nome di un linguaggio di programmazione ADA del 1979, una giornata speciale per i blogger [ADA LOVELACE DAY], un simpatico fumetto e un interessante libro ricco di bellissime illustrazioni “Numeri e poesia. Storia e storie di Ada Byron”.

ada_lovelace

“The Analytical Engine weaves algebraic patterns,

just as the Jacquard loom weaves flowers and leaves.

Il programma per il calcolo dei numeri di Bernoulli

L’algoritmo di Ada permette di calcolare i numeri di Bernoulli, senza dover conteggiare tutti quelli ad essi precedenti. Tuttora, questo algoritmo è considerato un risultato brillante, non soltanto per la valenza computazionale, quanto nella coniugazione di Matematica e Informatica. Noto è soprattutto per essere stato il primo programma della storia.

Gli algoritmi di Ada Byron e di Bernoulli a confronto

Secondo alcune fonti storiche, per la costruzione del suo programma Ada Lovelace si servì della seguente funzione generatrice esponenziale:

(1) <br /><br /><br /> \sum_{k=0}^n B_k {{x^n}\over n!}<br /><br /><br />

opportunamente semplificata e modificata nell’espressione:

(2) <br /><br /><br /> {1\over 2} {{2x-1}\over {2x+1}}= B_2 {{2x}\over 2}- B_4 {{2x(2x-1)(2x-2)}\over 4!} + B_6 {{2x(2x-1)...(2x-4)}\over 6!} + ...<br /><br /><br />
Altre fonti non concordano con tale versione per diverse ragioni. In primo luogo perché, pur essendo vero che lo sviluppo della (1), insieme ad altri sviluppi in serie di funzioni trascendenti, contiene numeri di Bernoulli, come osservato dallo stesso Bernoulli nell’Ars conjectandi e successivamente anche da Eulero e Stirling, non esiste tuttavia alcuna relazione matematica in grado di trasformare la (1) nella (2). In secondo luogo, pare esistere una lettera della Byron scritta nel luglio del 1843, nella quale chiedeva a Babbage di inviarle la formula generatrice dei numeri di Bernoulli e non uno sviluppo che li contenesse (il che prevede anche una lista dei numeri). Infine, sempre in base a tali fonti, la formula (2) utilizzata dalla Byron non è altro che una rielaborazione della seguente formula utilizzata da Bernoulli:

(3) <br /><br /><br /> 2n=(-1)^{k-1}\sum_{k=1}^n {{{2n+1}\choose {2k}}2^k B_{2k}}<br /><br /><br />

e che Ada fra l’altro aveva studiato qualche anno prima, sotto la guida di De Morgan. Per confrontare la formula effettivamente utilizzata dalla Byron con la (3), è sufficiente riscrivere lo sviluppo di quest’ultima sostituendo n con x e sottraendo 1 da entrambi i membri dell’uguaglianza:

<br /><br /><br /> 2x-1={{2x+1}\choose {2}}2^2 B_2 - {{2x+1}\choose {4}} 2^4 B_4 +<br /><br /><br /> {{2x+1}\choose {6}}2^6 B_6- ...<br /><br /><br />

da cui, dividendo ciascun termine per il fattore 2(2x+1), si ottiene:

(4) <br /><br /><br /> { {2x-1}\over {2(2x+1)} }= {{ {{2x+1}\choose 2} 2^2 B_2}\over {2(2x+1)} }- {{{{2x+1}\choose 4} 2^4 B_4}\over {2(2x+1)} }+{{{{2x+1}\choose 6 }2^6 B_6}\over {2(2x+1)}}- ...{-1\over{2(2x+1)}}<br /><br /><br />

È possibile riscrivere ciascun coefficiente binomiale che compare nella (4) in modo più semplice. Ad esempio per il primo coefficiente si ha:

<br /><br /><br /> { {2x+1}\choose 2 }= {{(2x+1)!}\over{2!(2x+1-2)!}} = {{(2x+1)(2x) (2x-1)!}\over{2!(2x-1)!}}<br /><br /><br /> = {{(2x+1)2x }\over 2 }<br /><br /><br />

oppure per il secondo si ha:

<br /><br /><br /> { {2x+1}\choose 4 }= {{(2x+1)!}\over{4!(2x-3)!}} = {{(2x+1)(2x) (2x-1)(2x-2)}\over{4!}}<br /><br /><br />

Dunque, semplificando la (4), si perviene in definitiva alla:

(5) <br /><br /><br /> {{2x}\over {2(2x+1)}} = 2^3 B_4 {{2x(2x-1)(2x-2)}\over{4!}} + 2^5 B_6 {{2x(2x-1)(2x-2)(2x-3) (2x-4)}\over{6!}} - ...<br /><br /><br />

dalla quale, per ricorsività e grazie al supporto di una macchina quale l’Analithycal Engine di Babbage, è assai facile generare progressivamente i numeri di Bernoulli B_n con n>1 , come Ada stessa propose.

In realtà, la Byron usò la formula (2) che differisce leggermente dalla (5) sia per l’alternanza dei segni sia per la presenza delle potenze dispari di 2, oltre che nel numeratore dell’uguaglianza, dove il fattore 2x compare al posto del fattore 2x-1 della (5).

Mediante una congettura piuttosto geniale per quell’epoca, la Byron riuscì a generare i coefficienti incogniti B_n semplicemente mediante iterazioni successive, attribuendo ad x valori interi via via crescenti 1, 2, 3, … In questo modo, sostituendo x=1, tanto nella (2) quanto nella (5), tutti i termini dello sviluppo contenenti (2x-2) si annullano, ossia tutti i termini dal secondo in poi. Ad esempio, per la (5) si ottiene:

<br /><br /><br /> {{2\cdot 1}\over {2(2\cdot+1)}} = 2^1 B_2 {{2\cdot 1}\over{2!}}<br /><br /><br />
dalla quale risulta agevole ricavare B_2={1\over 6}. In modo analogo, attribuendo ad x il valore 2 si annullano invece tutti i termini che contengono il fattore (2x-4) , ovvero tutti quelli a partire dal terzo:

<br /><br /><br /> {{2\cdot 2}\over {2(2\cdot 2+1)}} = 2^1 B_2 {{2\cdot 2}\over{2!}} - 2^3 B_4 {{2\cdot 2(2\cdot 2-1)(2\cdot 2-1)}\over{4!}}<br /><br /><br />
da cui, una volta noto B_2 , si ottiene il secondo coefficiente dello sviluppo B_4 . Per x=3 spariscono tutti i termini a partire dal quarto e così via per valori sempre crescenti di x. Anche Bernoulli, un secolo prima della Byron, propose un procedimento analogo in base al quale partendo dallo sviluppo (3) e ponendo di volta in volta n = 1, 2, 3, … si riesce ad arrestare la somma e a calcolare ricorsivamente i coefficienti B_n . Così ad esempio per n=1 , e di conseguenza k=1 , si ha:

<br /><br /><br /> 2 = {3 \choose 2} 2^2 B_2<br /><br /><br />

da cui si ricava immediatamente B_2={1\over 6} . Ovviamente il numero successivo significativo B_4 si ottiene arrestando lo stesso sviluppo per n=2 e dunque facendo variare k da 1 a 2

<br /><br /><br /> 4 = {5 \choose 2} 2^2 B_2 - {5 \choose 4} 2^4 B_4<br /><br /><br />

sapendo che B_2={1\over 6}, si ottiene:

<br /><br /><br /> 4 = {{20} \choose 3} - 80 B_4<br /><br /><br />

cioè B_4={1\over 30}. Dunque la vera innovazione introdotta dall’algoritmo della Byron rispetto al metodo di Bernoulli sta nell’aver usato ad ogni iterazione la stessa formula, riuscendo a semplificarla di volta in volta al variare del valore dell’incognita x. Il calcolo di ciascun numero, uno alla volta, costituisce il ciclo esterno del programma, mentre per calcolare ogni valore frazionario successivo si fa ricorso ad un ciclo secondario. Riportiamo qui di seguito gli algoritmi proposti dalla Byron e da Bernoulli:

Algoritmo di Ada Byron

<br /><br /><br /> {1\over 2}{{2x-1}\over {2x+1}}= B_2 {{2x-1}\over{2!}} + B_4 {{2x(2x-1)(2x-2)}\over{4!}}+ B_6 {{2x(2x-1)(2x-2)(2x-3) (2x-4)}\over{6!}} + ...<br /><br /><br />

Algoritmo di Bernoulli

<br /><br /><br /> {{2x}\over {2x+1}} = 2^1 B_2 {{2x}\over{2!}} -2^3 B_4 {{2x(2x-1)(2x-2)}\over{4!}}+ 2^5 B_6 {{2x(2x-1)(2x-2)(2x-3) (2x-4)}\over{6!}} - ...<br /><br /><br />

Ada Lovelace Day

Negli Stati Uniti il 15 ottobre si festeggia l’Ada Lovelace day, giornata in cui si celebra il contributo delle donne nello sviluppo delle tecnologie informatiche, della matematica e della scienza.

“Quando Ada aveva 12 anni voleva volare. Cercò di affrontare il problema da un punto di vista metodico, esaminando gli uccelli e provando a capire vari materiali che potevano essere in grado di diventare delle ali: carta, seta. Nel corso della sua ricerca, cominciata nel febbraio del 1828, Ada tenne traccia dei suoi studi in una guida illustrata che chiamò Flyology“, racconta il New Yorker. La ragazza aveva un talento sin da bambina per l’aritmetica, la musica, il francese secondo quanto riportato da una biografia che è stata pubblicata il 16 ottobre intitolata A Female Genius, scritta da James Essinger.

La sua carriera come programmatice cominciò il 5 giugno 1833, quando incontrò quello che divenne il suo amico e mentore, Charles Babbage, un matematico. Babbage stava lavorando a una macchina di calcolo: una struttura fatta con diversi ingranaggi numerati capaci di fare calcoli. Ada fu affascinata dal progetto che era solo un prototipo e cominciò una collaborazione intensa con il matematico.

C’è perfino chi dice che la macchina analitica, il primo prototipo di un computer meccanico sviluppato per eseguire compiti generici, ideata da Babbage, in realtà fosse frutto soprattutto del lavoro e degli studi di Ada. Negli Stati Uniti Ada Lovelace è diventato il simbolo “di quello che le donne possono fare se ne hanno l’opportunità”.

Secondo le autorità negli Stati Uniti le donne che lavorano nelle discipline scientifiche sono diminuite negli ultimi vent’anni. Se nel 1990 le donne occupavano il 34 per cento dei lavori in discipline scientifiche, nel 2011 solo il 27 per cento dei lavori scientifici è fatto da donne.

Per festeggiare la pioniera della tecnologia Ada Lovelace The Atlantic ha raccolto i pezzi più interessanti che parlano di tecnologia e genere.



Categorie:N00- [STORIA DELLA TECNICA]

Tag:

Lascia un commento