En savoir plus · Jour 5

Ada Lovelace

Fille du poète Lord Byron, elle a inventé le tout premier programme informatique de l'histoire, pour une machine qui n'existait pas encore - et entrevu, un siècle à l'avance, l'ordinateur créatif.

Deux portraits#

Ada Byron à dix-sept ans, en 1832
Ada Byron à dix-sept ans (1832), future inventeuse du premier programme, peu avant sa rencontre avec Charles Babbage.
Domaine public · Wikimedia Commons
Portrait d'Ada, comtesse de Lovelace
Ada, comtesse de Lovelace, inventeuse du premier programme de l'histoire (portrait vers 1840, A. E. Chalon).
Domaine public · Wikimedia Commons

Qui était-elle ?#

Augusta Ada King, comtesse de Lovelace (1815-1852), est la fille du poète Lord Byron. Sa mère, craignant l'héritage « poétique » du père, lui fait donner une éducation rare pour une femme de l'époque : mathématiques et sciences. À 17 ans, elle rencontre Charles Babbage et se passionne pour ses machines à calculer mécaniques.

En 1843, elle traduit en anglais un article du savant italien Luigi Menabrea décrivant la machine analytique de Babbage - un ordinateur mécanique jamais construit. Surtout, elle y ajoute ses propres Notes (A à G), trois fois plus longues que l'article d'origine. C'est là qu'elle invente le tout premier programme informatique de l'histoire.

Ce qu'elle a écrit#

Ada ne voyait pas seulement une machine à calculer : elle voyait une machine à manipuler des symboles, donc potentiellement de la musique, des images, de l'art. Quelques-unes de ses phrases, étonnantes de modernité :

« On peut dire très justement que la machine analytique tisse des motifs algébriques, tout comme le métier Jacquard tisse des fleurs et des feuilles. » "The Analytical Engine weaves algebraical patterns just as the Jacquard-loom weaves flowers and leaves." - Note A, 1843
« Supposons que les rapports fondamentaux des sons dans la science de l'harmonie soient traduisibles en notation : la machine pourrait alors composer des morceaux de musique élaborés et scientifiques, de n'importe quel degré de complexité ou d'étendue. » "...the engine might compose elaborate and scientific pieces of music of any degree of complexity or extent." - Note A, 1843
« La machine analytique n'a aucune prétention à créer quoi que ce soit. Elle peut faire tout ce que nous savons lui ordonner d'exécuter. » "The Analytical Engine has no pretensions whatever to originate anything. It can do whatever we know how to order it to perform." - Note G, 1843 (citée par Alan Turing en 1950)
« La science mathématique montre ce qui est. C'est le langage des relations invisibles entre les choses. » "Mathematical science shows what is. It is the language of unseen relations between things." - Correspondance d'Ada Lovelace

Son premier algorithme#

La Note G contient un tableau décrivant, pas à pas, comment la machine analytique calculerait les nombres de Bernoulli (une suite célèbre en mathématiques). Ce tableau est le tout premier programme informatique de l'histoire : une invention d'Ada Lovelace.

Le diagramme de la Note G pour le calcul des nombres de Bernoulli
Le diagramme de la Note G (1843) : le calcul du nombre de Bernoulli B7 par la machine analytique. Domaine public · Wikimedia Commons.

Comment lire ce tableau ? Chaque ligne est une opération numérotée (de 1 à 25), et les colonnes indiquent :

Colonne du tableau d'AdaCe qu'elle contient
N° de l'opérationL'ordre des étapes, de 1 à 25
Nature de l'opérationLe calcul à faire : ×, ÷, + ou
Variables en jeuLes « cases mémoire » (V1, V2, V3...) sur lesquelles on agit
Variable résultatLa case où ranger le résultat
Énoncé du résultatLa formule obtenue à cette étape

On y reconnaît tout ce qui fait un programme moderne : des variables (les V), une suite d'opérations ordonnées, et même une boucle - un groupe d'opérations répété pour produire chaque nombre de la suite. En Python d'aujourd'hui, son idée tiendrait en quelques lignes :

# L'esprit de la Note G, en Python moderne : on répète un bloc d'opérations def bernoulli_par_recurrence(rang): resultat = 0 for etape in range(rang): resultat = operation_suivante(resultat, etape) # la "boucle" d'Ada return resultat

Détail savoureux : la table publiée en 1843 contenait une petite erreur (une opération mal recopiée à l'impression). Le premier programme de l'histoire contenait donc aussi... le premier bug typographique. 🐛

Ce qu'elle a préparé pour la machine#

Le programme des nombres de Bernoulli est son chef-d'œuvre, mais ses sept Notes (A à G) forment un véritable mode d'emploi de l'informatique, écrit avant l'informatique. On y trouve :

IdéeCe qu'Ada y explique
La mémoireComment la machine stocke des variables sur des cartes et les réutilise.
Les opérationsComment enchaîner des calculs dans un ordre précis, automatiquement.
La répétitionComment répéter un même groupe d'opérations (l'ancêtre de la boucle) pour traiter une suite entière.
La généralitéQue la machine pourrait résoudre toutes sortes de problèmes (systèmes d'équations, séries...), pas seulement un calcul unique.
La portéeQue manipuler des symboles ouvre la porte à la musique et à l'art, au-delà des nombres.

C'est cette vision - une machine universelle qui suit des recettes (des algorithmes) pour manipuler n'importe quel symbole - qui fait d'Ada Lovelace bien plus qu'une calculatrice : l'inventeuse du tout premier programme informatique, et l'une des premières à imaginer ce qu'on appelle aujourd'hui l'informatique.

Pour continuer#

L'histoire des algorithmes (Euclide, Al-Khwarizmi, Turing) →  ·  retour au hub des algorithmes