InformatiqueExplication
Margaret Hamilton (1936-2026), du code d’Apollo 11 au génie logiciel
Margaret Hamilton, qui dirigea au MIT l’équipe du logiciel de vol d’Apollo, est morte le 30 septembre à 90 ans. Son héritage tient à une idée : un programme doit survivre aux erreurs, comme lors de l’alunissage de 1969.

En juillet 1969, 102 heures et 38 minutes après le lancement d’Apollo 11, Neil Armstrong signale au centre de contrôle de Houston une « alarme programme », puis précise : « C’est une 1202. » Le module lunaire Eagle est en pleine descente, et ce code n’est pas de ceux que l’équipage a vus en simulation. Vingt-trois secondes plus tard, Charlie Duke répond depuis le sol : « On est Go pour cette alarme. » Trois autres alarmes 1201 ou 1202 suivent en un peu plus de quatre minutes, d’après la transcription annotée publiée par la NASA. L’équipage se pose quand même.
C’est l’épisode le plus souvent associé à Margaret Hamilton, morte le 30 septembre à 90 ans, a annoncé le MIT le 7 octobre. Embauchée comme première programmeuse du projet Apollo au laboratoire d’instrumentation du MIT, elle était en 1968 directrice adjointe chargée de l’équipe du module de commande et de service, quand plus de 400 personnes travaillaient sur le logiciel d’Apollo. Le récit habituel, un logiciel qui sacrifie l’accessoire pour sauver l’alunissage, se vérifie dans les témoignages des ingénieurs et dans le code, aujourd’hui public. Avec quelques nuances.
Un radar inutile qui volait du temps de calcul
La panne ne venait pas du logiciel. Don Eyles, qui avait programmé la commande de poussée du module lunaire, l’a reconstituée en 2004 devant l’American Astronautical Society. Le radar de rendez-vous, inutile pendant la descente, était relié à l’ordinateur par des convertisseurs d’angle alimentés par une tension distincte de la sienne. Leurs compteurs, affolés par des signaux qui « n’indiquaient aucun angle connu », consommaient « environ 15 % » du temps de calcul. Ce défaut de phase avait été repéré et documenté lors d’essais du module LM-3 sur le site de lancement, « mais il n’a jamais été corrigé ».
La marge restante était mince. Selon Eyles, l’ajout d’un affichage de surveillance comme le « verbe 16, nom 68 » la réduisait « à 10 % ou moins ». Buzz Aldrin l’avait remarqué en direct : la même alarme, dit-il à Houston, « semble apparaître quand on a un 16/68 affiché ».
Sept cases pour toutes les tâches
Peter Adler, autre programmeur du module lunaire, décrit le système d’exploitation de l’ordinateur dans une note publiée par la NASA : 36 864 mots de mémoire figée, 2 048 mots de mémoire vive. Chaque tâche lancée par le répartiteur, l’« Executive », reçoit une zone de travail de 12 mots, un « core set » ; celles qui en ont besoin réclament en plus une zone de 44 mots, dite « accumulateur vectoriel » (VAC). Il existe sept core sets et cinq zones VAC, et les tâches s’exécutent par ordre de priorité.
Pendant la descente, des tâches de traitement de données radar « qui n’existaient pas vraiment » étaient programmées à répétition à cause de la mauvaise configuration des commutateurs du radar, écrit Adler. Les core sets se sont remplis. Le code du module lunaire, Luminary099, assemblé le 14 juillet 1969, montre la suite. Dans le fichier EXECUTIVE.agc, quand aucun core set n’est libre, le programme appelle la routine BAILOUT1 avec le code 1202, commenté « NO CORE SETS AVAILABLE » (plus de core set disponible) ; faute de zone VAC, c’est 1201, « NO VAC AREAS ». Les deux alarmes ne signalaient donc pas une panne : elles disaient que la file d’attente était pleine.
Redémarrer sans perdre le fil
BAILOUT ne fige pas la machine : il provoque un redémarrage logiciel. Après celui-ci, le programme relance certaines tâches « à un point de leur exécution proche de celui où elles se trouvaient », sans reprendre les calculs radar parasites, explique Adler. Chaque tâche protégée reprend « au dernier point de passage enregistré », précise Eyles. Le guidage continue, le superflu disparaît.
Margaret Hamilton décrivait ce comportement dès 1971, dans une lettre au magazine Datamation citée par le Computer History Museum. L’ordinateur, « ou plutôt le logiciel qu’il contenait », avait été « assez intelligent pour reconnaître qu’on lui demandait plus de tâches qu’il n’aurait dû en accomplir ». Le message de l’alarme revenait à dire : « Je suis surchargé de plus de tâches que je ne devrais en effectuer en ce moment, et je ne vais garder que les plus importantes, c’est-à-dire celles nécessaires à l’alunissage. » Sans cette reprise, ajoutait-elle, « je doute qu’Apollo 11 aurait été l’alunissage réussi qu’il a été ».
Restait à décider de continuer. À Houston, Steve Bales, l’expert du guidage du module lunaire en salle de contrôle, avait jugé que la surcharge ne compromettait pas l’alunissage, rapporte le journal de la NASA. Armstrong résumera : en simulation, l’équipage était d’ordinaire « prêt à basculer vers l’abandon » ; en vol réel, « vers l’atterrissage ».
Une œuvre collective, une idée défendue
Le résumé du MIT, selon lequel « Houston a fait confiance au logiciel d’Hamilton », condense une histoire plus collective. Eyles attribue la conception de l’Executive et du « Waitlist », le système qui organise les tâches de l’ordinateur, à Hal Laning, qui les a imaginés au milieu des années 1960 « sans aucun exemple pour le guider ». Il juge aussi inexacte l’explication par une « erreur de check-list », qu’il reconnaît avoir lui-même employée.
Les deux récits ne s’excluent pas, et la part d’Hamilton est documentée. En lui remettant la médaille présidentielle de la Liberté en 2016, la Maison-Blanche indiquait qu’elle avait dirigé l’équipe du logiciel de vol des modules de commande et des modules lunaires, et contribué aux concepts de « logiciel asynchrone, d’ordonnancement par priorités et d’affichages prioritaires », ainsi qu’à la décision laissée à l’humain dans la boucle. Le MIT rappelle aussi l’« erreur Lauren » : sa fille de quatre ans avait lancé sur le simulateur, en plein vol simulé, le programme de prélancement P01. Le correctif proposé par Hamilton fut refusé : des astronautes aussi entraînés ne commettraient jamais cette erreur. Pendant Apollo 8, en 1968, Jim Lovell l’a commise, effaçant des données de navigation. Prévoir les fausses manœuvres, y compris celles des meilleurs : c’est le fil de sa carrière.
« Génie logiciel », un mot sans acte de naissance
Hamilton a longtemps défendu l’expression software engineering. « Je me suis battue pour donner sa légitimité au logiciel, pour qu’il soit respecté, lui et ceux qui le construisent, et j’ai donc commencé à employer le terme de génie logiciel pour le distinguer du matériel et des autres ingénieries », disait-elle à El País en 2018, propos repris par le MIT. Au début, ajoutait-elle, la formule « amusait beaucoup ». Elle ne datait pas sa première utilisation.
L’expression a d’autres repères. Du 7 au 11 octobre 1968, une conférence du comité scientifique de l’OTAN se tient à Garmisch, en Allemagne, sous le titre « Software Engineering » ; son rapport, édité par Peter Naur et Brian Randell, paraît en 1969. En 2012, sur une liste d’historiens de l’informatique, Randell en citait une phrase : le terme avait été « délibérément choisi pour être provocateur ». Les organisateurs, menés par Fritz Bauer, voulaient exprimer un besoin, non décrire une réalité. Randell signale un usage antérieur, en 1965, attribué à l’ingénieur J. P. Eckert, mais juge peu contestable que la conférence a mis en vogue un terme « jusque-là pratiquement inconnu ». Les sources consultées ne désignent pas d’inventeur unique ; il est établi qu’Hamilton l’a employé et défendu quand il faisait encore sourire.
Une carrière contre l’erreur
Née Margaret Heafield le 17 août 1936 à Paoli, dans l’Indiana, selon le Computer History Museum, elle obtient en 1958 un diplôme de mathématiques, avec une mineure en philosophie, à l’Earlham College, retrace le MIT. Installée à Boston en 1959, elle écrit au MIT des logiciels de prévision météorologique pour le météorologue Edward Lorenz, puis rejoint en 1961 le Lincoln Laboratory, où elle travaille sur SAGE, le système de défense aérienne des États-Unis : c’est là, selon le musée, qu’elle commence à s’intéresser à la fiabilité du logiciel. En 1965, elle se prépare à un troisième cycle universitaire quand son mari repère une petite annonce, raconte le MIT : le laboratoire d’instrumentation cherche des gens pour développer le logiciel destiné à « envoyer l’homme sur la Lune ».
Après Apollo, Hamilton a fondé Higher Order Software en 1976, puis Hamilton Technologies, toujours autour de la prévention des erreurs, rappelle le MIT. Son travail d’alors reste vérifiable : le dépôt public des programmes du module de commande (Comanche055) et du module lunaire (Luminary099), numérisés à partir des listings du MIT Museum et versés dans le domaine public, la crédite comme « Colossus Programming Leader ». Les lignes qui ont produit les alarmes de 1969 y sont : quelques instructions et un commentaire en majuscules.
Les citations en anglais ont été traduites par la rédaction.

