Ada Lovelace, la première programmeuse de l'histoire

Ada Lovelace (1815-1852) est une femme britannique scientifique pionnière de la science informatique.
Elle est connue pour avoir écrit le premier programme informatique, lors de son travail sur la machine analytique de Charles Babbage, une sorte de super-calculatrice.
C'était une visionnaire qui est la première à avoir imaginé qu'une machine pouvait à la fois manipuler des chiffres et des symboles abstraits, et tout cela 100 ans avant l'invention de l'ordinateur par Alan Turing.
Machine Analytique de Charles Babbage, exposée au Science Museum de Londres
Pourtant, à l'époque victorienne, on estimait que les femmes ne pouvaient pas à la fois procréer et développer leur capacités intellectuelles. Pour expliquer ses capacités scientifiques les médecins de l'époque ont diagnostiqué le syndrôme de l'uterus sauteur, ridicule !
En tant que femme scientifique, elle est assez vite tombée dans l'oubli jusqu'à la fin fin du XXème siècle, mais aujourd'hui son apport pour l'informatique et son talent sont désormais reconnus :
- un langage de programmation porte son nom : le langage Ada,
- une école informatique porte son nom : Ada Tech School, qui est la première école d'informatique inclusive avec 70 % de femmes,
- le Ada Lovelace Day, célébré le deuxième mardi du mois d'octobre promeut le rôle des femmes en sciences,
- elle est l'une des figures de proue des femmes scientifiques, qui sont désormais mises à l'honneur après avoir été invisibilisées par les hommes pendant des centaines d'années.
Deuxième partie de l'énigme
La seconde partie de l'énigme est en lien avec le premier programme informatique écrit par Ada Lovelace.
Le premier programme de l'Histoire
Voici une courte vidéo qui retrace l'histoire du premier programme informatique écrit par Ada Lovelace.
Et voici la désormais très célèbre note G écrite par Ada Lovelace dans laquelle on trouve le premier programme informatique de l'Histoire, en 1843 :
Le programme d'Ada Lovelace avait pour objectif de calculer les nombres de Bernoulli, une suite de nombres étudiée à l'origine par le mathématicien Jacques Bernoulli. Ces nombres apparaissent ou sont utilisés dans d'autres domaines des mathématiques, mais cela va bien au-delà du niveau lycée et ce n'est pas le propos ici.
Analyse rapide du programme
Son programme pose des bases qui sont aujourd'hui toujours d'actualité dans nos programmes et éditeurs de code informatique du XXIème siècle :
- Chaque ligne est numérotée (première colonne) pour pouvoir y faire référence, cette fonctionnalité est présente aujourd'hui dans tous les éditeurs de code informatique
- Ada Lovelace a utilisé des variables (nommées
V1
,V2
, ...,V24
) qui sont à la base de tous les programmes informatiques actuels. On voit sur la ligne d'en-tête (colonne Data.) que les variablesV1
,V2
etV3
valent au départ respectivement1
,2
etn
- Les troisième et quatrième colonnes indiquent respectivement à quelles variables il faut appliquer les opérations et dans quelles variables il faut stocker le résultat. Par exemple, la première ligne indique qu'il faut effectuer la multiplication
V2 * V3
et stocker le résultat dans les variablesV4
,V5
etV6
.
- Entre les lignes 23 et 24, Ada a noté qu'il faut répéter les instructions des lignes 13 à 23, ce qui correspondrait aujourd'hui à un bloc d'instructions à placer dans une boucle pour.
Pour en savoir plus
La vidéo ci-dessous résume l'histoire d'Ada Lovelace et de tous les préjugés de l'époque sur les femmes scientifiques :
Vous noterez qu'Ada Lovelace, en plus de ces talents scientifiques, était bilingue !
Les 8 notes ajoutées à la traduction était bien plus longues que l'article lui-même !
🔎 Énigme 🔎
La réponse à cette énigme est la valeur finale de la variable v22
dans le programme Python ci-dessous qui traduit en partie celui d'Ada Lovelace.
Attention, la réponse, qui est un nombre fractionnaire, doit être saisie sous la forme NumerateurDenominateur (exemple : si la réponse attendue est 3/14, il vous faut saisir 314)
n = 2
v1 = 1
v2 = 2
v3 = n
v21 = 1 / 6
v4 = v2 * v3
v5 = v2 * v3
v6 = v2 * v3
v4 = v4 - v1
v5 = v5 + v1
v11 = v4 / v5
v5 = 0
v4 = 0
v11 = v11 / v2
v13 = 0 - v11
v11 = 0
v10 = v3 - v1
v7 = v2 + 0
v11 = v6 / v7
v12 = v21 * v11
v13 = v12 + v13
v12 = 0
v10 = v10 - v1
v22 = v13 + 0