Ada Lovelace : comment programmer une machine qui n'existait pas encore ?
La machine de Babbage, la note G de 1843 et les nombres de Bernoulli : ce qu'Ada Lovelace a réellement apporté.
En 1843, Ada Lovelace publie un tableau décrivant comment calculer des nombres de Bernoulli avec une machine mécanique programmable. On y trouve les opérations à effectuer, les résultats à conserver et des instructions à répéter. Pourtant, cette machine n'a jamais été achevée.
Comment décrire aussi précisément un calcul destiné à une machine inexistante ? Pour le comprendre, il faut suivre trois contributions : Charles Babbage conçoit la machine analytique, Luigi Menabrea en présente les principes et Ada Lovelace traduit son article en y ajoutant ses propres notes. Reste à comprendre qui a conçu les procédures de calcul et ce que Lovelace leur a apporté.

Ada Lovelace et les mathématiques
Née en 1815, Augusta Ada Byron reçoit une formation scientifique privée, à une époque où les universités britanniques sont largement fermées aux femmes. Mary Somerville joue un rôle important dans son parcours ; le mathématicien Augustus De Morgan lui enseigne notamment l'algèbre et le calcul différentiel.
Leurs lettres montrent ses exercices, ses questions et parfois ses erreurs. Cette formation, que documente Adrian Rice pour la Mathematical Association of America, aide à comprendre sa contribution sans lui prêter un savoir inné.
En 1833, Somerville lui présente Charles Babbage, qui travaille sur des machines à calculer. Ada s'intéresse progressivement à leur fonctionnement mathématique.
Deux machines à ne pas confondre
La machine à différences : calculer des tables par additions
Pour fabriquer une table de carrés, on pourrait multiplier successivement 1 par 1, 2 par 2, 3 par 3, etc. Mais il existe une méthode fondée uniquement sur des additions.
| Nombre | Carré | Écart avec le carré suivant |
|---|---|---|
| 0 | 0 | 1 |
| 1 | 1 | 3 |
| 2 | 4 | 5 |
| 3 | 9 | 7 |
| 4 | 16 | 9 |
Les écarts valent 1, 3, 5, 7, 9… Ils augmentent toujours de 2. On peut alors produire les carrés en conservant deux valeurs : le dernier carré obtenu et l'écart à ajouter.
On part de et , puis on répète :
On obtient successivement . Le symbole signifie ici « prend la nouvelle valeur ».
Ce procédé est un exemple de différences finies. Pour les valeurs successives d'un polynôme de degré , les différences d'ordre sont constantes (avec un pas fixé). Une machine peut exploiter cette propriété pour calculer des tables numériques.
C'est le principe de la machine à différences (Difference Engine). Babbage en fit construire une partie, mais pas la version complète prévue initialement. Son projet ultérieur de machine à différences no 2 a été reconstruit au Science Museum en 1991, avec son imprimante en 2002.
Cette reconstruction n'est pas celle de la machine analytique.
La machine analytique : changer les opérations elles-mêmes
À partir des années 1830, Babbage imagine un dispositif bien plus général. Il veut pouvoir choisir une suite d'opérations, utiliser leurs résultats et répéter certaines instructions : c'est la machine analytique (Analytical Engine).
Elle reste un projet évolutif de plans et de mécanismes partiels. Aucun exemplaire complet et opérationnel n'est construit à l'époque. Mais le projet est suffisamment détaillé pour susciter des recherches sur la manière de lui donner des instructions.

Comment aurait-elle exécuté un calcul ?
Babbage distingue deux grandes parties.
Le magasin (Store) conserve les nombres. On peut imaginer plusieurs colonnes mécaniques, notées , contenant chacune une valeur.
Le moulin (Mill) effectue les opérations arithmétiques. Si contient 12 et contient 5, on peut décrire l'ordre suivant :
Le résultat, 60, est placé dans . Une instruction ultérieure peut l'utiliser : donne alors 65.
Ce petit exemple est une notation pédagogique actuelle, pas une reproduction des cartes originales.
Pour commander les calculs, la machine aurait utilisé différentes catégories de cartes perforées. Les cartes d'opérations indiquaient, par exemple, s'il fallait additionner ou multiplier ; les cartes de variables déterminaient les colonnes concernées. Le mécanisme prévoyait aussi la répétition de séries d'opérations et certaines décisions fondées sur des résultats.
L'idée de cartes commandant des gestes mécaniques n'était pas née avec Babbage. Le métier Jacquard utilisait déjà des cartes perforées pour piloter des motifs textiles. Là où le métier détermine quels fils doivent être soulevés, la machine analytique devait déterminer quelles opérations effectuer sur quelles valeurs.

Il serait trompeur de dire que ce mécanisme possédait la mémoire et les langages d'un ordinateur actuel. Mais l'idée de séparer les instructions de la machine qui les exécute est bien au cœur du projet.
1843 : une traduction et sept notes
Après une présentation de la machine analytique par Babbage à Turin en 1840, Luigi Federico Menabrea publie en français, en 1842, Notions sur la machine analytique de M. Charles Babbage.
Lovelace traduit ce texte en anglais et lui ajoute les notes A à G, publiées en 1843. Elles sont bien plus longues que le texte traduit. La note A examine notamment ce que la machine pourrait faire au-delà des calculs numériques ; les notes B à F expliquent les colonnes mécaniques, les cartes et leur réutilisation. La note G donne un exemple détaillé : les nombres de Bernoulli.
Le texte complet de 1843 permet de retrouver ces sept notes.
Les nombres de Bernoulli : calculer les termes successifs
Les nombres de Bernoulli sont des nombres rationnels qui interviennent, entre autres, dans les formules de sommes de puissances. Ils permettent par exemple de généraliser les formules connues
Nous utilisons la convention moderne . Les premiers nombres sont :
Comment trouver ces valeurs ?
On part de . Pour calculer le nombre suivant, on utilise les précédents. Par exemple, les relations qui définissent cette suite donnent :
Puis :
En remplaçant les valeurs connues :
On peut poursuivre de la même façon. Chaque nouveau calcul exige de retrouver les résultats précédents : c'est ce qui rend cet exemple intéressant pour une machine programmable.
Pour aller plus loin : la formule générale
Avec , pour tout entier :
Le signe demande d'additionner les termes indiqués ; est un coefficient binomial (par exemple ). C'est cette relation que nous utiliserons en Python. Ce n'est pas la suite exacte d'instructions du tableau de 1843.
Une définition plus avancée, par le développement au voisinage de , est :
On prolonge le membre de gauche par continuité en ; désigne la factorielle de , avec . Cette définition redonne la même suite : notamment et , . Elle n'est pas nécessaire pour suivre le calcul historique.
La note G : comprendre le tableau de 1843

Le tableau décrit un calcul du de Lovelace, qui correspond à notre . À l'époque, les nombres notés correspondent à nos : il ne faut donc pas confondre les indices historiques avec les nôtres.
Les colonnes sont des emplacements mécaniques où des nombres sont conservés. Le tableau indique les opérations et l'évolution de ces emplacements. Pour l'exemple choisi, et les nombres de Bernoulli précédents sont supposés connus.
Quatre opérations, une erreur visible
Au début du calcul, les opérations 1 à 3 préparent deux nombres :
- On multiplie par 2 : on obtient 8, conservé dans plusieurs colonnes.
- Dans une de ces colonnes, on retire 1 : on obtient 7.
- Dans une autre, on ajoute 1 : on obtient 9.
L'opération 4 devrait alors calculer :
Mais, dans la colonne des instructions imprimées en 1843, l'ordre des deux nombres est inversé : on lit au lieu de . Or ces divisions donnent des résultats différents. Le lecteur peut donc repérer lui-même une incohérence entre l'instruction et le résultat attendu.
Une reconstitution moderne du calcul discute cette inversion et un autre problème de signe. On ne sait pas avec certitude à quel stade chaque erreur a été introduite. La machine analytique n'ayant pas été achevée, le tableau n'a pas été exécuté sur elle.
Pourquoi ce tableau fait-il penser à un programme ?
Il ne s'arrête pas à ces quatre opérations. Le document comporte 25 numéros d'opérations, dont certaines instructions sont réutilisées, notamment le groupe 13 à 23. Le nombre d'opérations effectivement effectuées peut donc être supérieur à 25.
Trois idées apparaissent : conserver une valeur, répéter des opérations et choisir la suite du calcul selon un résultat. Ces mécanismes sont prévus dans la machine de Babbage ; Lovelace en montre l'utilisation dans un calcul complexe. Le fac-similé est une description historique d'opérations et d'états successifs, pas un programme Python moderne.
Ada Lovelace : « première programmeuse » ?
Babbage avait déjà préparé des tableaux d'opérations avant 1843. Raúl Rojas a notamment étudié un calcul de 1837 destiné à la machine analytique. Il serait donc faux d'affirmer que Lovelace a été la première personne à imaginer des instructions pour cette machine.
En revanche, sa note G publie une description détaillée et commentée du calcul des Bernoulli. En 1864, Babbage raconte avoir proposé de prendre en charge la partie algébrique de ce travail ; il rapporte aussi que Lovelace avait repéré une erreur importante dans son procédé :
“detected a grave mistake which I had made in the process”.
Traduction : « avait repéré une grave erreur que j'avais commise dans le procédé ». Cela atteste une participation mathématique active, sans permettre d'attribuer chaque ligne à une seule personne.
L'historien Thomas J. Misa étudie cette collaboration, tandis que Raúl Rojas éclaire l'antériorité des travaux de Babbage. Le titre de « première programmeuse » reste discutable selon ce que l'on appelle un programme. La note G demeure l'une des premières descriptions publiées et développées d'un calcul destiné à une machine programmable générale.
Et si la machine manipulait autre chose que des nombres ?
Dans la note A, Lovelace remarque que des opérations pourraient porter sur d'autres objets que des quantités, si leurs relations peuvent être représentées par des règles adaptées. Elle évoque ainsi, à titre d'hypothèse, la composition musicale.
Elle compare la machine analytique à un métier Jacquard : le métier tisse des motifs selon des cartes perforées ; la machine pourrait, elle, produire des « motifs algébriques ». L'idée est que des instructions peuvent organiser des symboles, et non seulement fournir une table de résultats numériques.
Lovelace n'a pas inventé un logiciel musical ni un ordinateur actuel. Elle a néanmoins envisagé des usages plus généraux de la machine mécanique de Babbage.
Une machine peut-elle inventer ?
Au début de la note G, Lovelace écrit :
“The Analytical Engine has no pretensions whatever to originate any thing.”
Traduction : « La machine analytique ne prétend nullement créer quoi que ce soit par elle-même. »
Elle considère une machine exécutant des opérations que les humains ont su lui prescrire. Mais elle remarque aussi que la préparation de ces opérations pourrait conduire les mathématiciens à découvrir des relations nouvelles.
En 1950, Alan Turing discute cette position dans Computing Machinery and Intelligence, sous le nom d'« objection de Lady Lovelace ». Il souligne notamment qu'un résultat informatique peut surprendre son concepteur.
La question reste pertinente pour l'intelligence artificielle : un système peut produire une démonstration qui semble originale, sans que cela suffise à prouver qu'elle est correcte ou que le système la comprend. Nouveauté, validité et compréhension sont trois questions différentes. On ne peut pas non plus réduire directement les propos de 1843 à une théorie de l'IA contemporaine.
En Python : conserver et réutiliser les résultats
Adaptation moderne : ce code calcule les nombres de Bernoulli avec notre récurrence. Il n'a pas été écrit par Lovelace et ne reproduit pas ses cartes perforées.
Une liste Python peut conserver des résultats :
valeurs = [1, 3, 5]
valeurs.append(7) # la liste devient [1, 3, 5, 7]
Pour les Bernoulli, il faut répéter cette idée avec les fractions et les coefficients de la formule :
from fractions import Fraction
from math import comb
def bernoulli(n):
valeurs = [Fraction(1)]
for m in range(1, n + 1):
somme = 0
for k in range(m):
somme += comb(m + 1, k) * valeurs[k]
suivant = -somme / (m + 1)
valeurs.append(suivant)
return valeurs
for i, b in enumerate(bernoulli(8)):
print(f"B_{i} = {b}")
valeurscontient les nombres déjà calculés ;appendajoute le suivant.range(1, n + 1)parcourt les indices de 1 à ;range(m)parcourt ceux de 0 à .comb(m + 1, k)calcule le coefficient binomial ;Fractionconserve les fractions exactes.
Ainsi, quand , la boucle intérieure utilise seulement et pour obtenir . Le programme retrouve aussi , qui correspond au de la note G.
À chercher : pourquoi la boucle intérieure s'arrête-t-elle avant l'indice ? Parce que le terme est précisément celui que nous sommes en train de calculer.
Quelques repères chronologiques
- 1815 : naissance d'Ada Byron.
- 1833 : rencontre d'Ada et de Babbage.
- Années 1830 : conception de la machine analytique ; Babbage prépare notamment un tableau d'opérations en 1837.
- 1842–1843 : publication de l'article de Menabrea, puis de la traduction et des notes de Lovelace.
- 1852 : mort d'Ada Lovelace.
- 1950 : Turing reprend l'objection de Lady Lovelace.
Babbage a conçu la machine ; Lovelace a contribué à montrer comment décrire et analyser les instructions qu'elle devait exécuter. La machine analytique de Babbage n'a jamais été achevée, mais ses calculs pouvaient déjà être écrits, vérifiés et discutés.
Sources et lectures pour approfondir
Sources primaires
- Luigi Federico Menabrea, traduction anglaise et notes d'Ada Lovelace, Sketch of the Analytical Engine Invented by Charles Babbage, Esq., Scientific Memoirs, vol. III, 1843, p. 666–731. Texte intégral.
- Ada Lovelace, note G et tableau du calcul des Bernoulli (1843). Transcription de la note et fac-similé du tableau.
- Charles Babbage, Passages from the Life of a Philosopher, 1864. Texte numérisé.
- Alan M. Turing, « Computing Machinery and Intelligence », Mind, 1950, p. 433–460. DOI de l'article.
Études et collections historiques
- Adrian Rice, « Helping Ada Lovelace with her Homework », Convergence, Mathematical Association of America (2021). Lire.
- Thomas J. Misa, « Charles Babbage, Ada Lovelace, and the Bernoulli Numbers », dans Ada’s Legacy (ACM Books, 2015 ; dépôt arXiv en 2023). Texte de l’auteur.
- Raúl Rojas, « The First Computer Program » (2023). Recherche.
- Ayesha Afzal, « Programming Before Computers Existed: Ada Lovelace », ACM-W Europe.
- Science Museum Group, collections consacrées à Charles Babbage.
Les citations anglaises sont tirées des textes historiques indiqués. Leurs traductions françaises sont proposées pour cet article.