Le logiciel de vol d’Apollo 11 en libre utilisation

Le code qui a envoyé l’Amérique sur la lune vient d’être publié sur GitHub, c’est comme un voyage dans le temps vers 1960

Lorsque les programmeurs du MIT Instrumentation Laboratory ont entrepris de développer le logiciel de vol pour le programme spatial Apollo 11 au milieu des années 1960, la technologie nécessaire n’existait pas. Ils ont dû l’inventer.
Ils ont créé une nouvelle façon de stocker des programmes informatiques, appelé « rope memory », qui pourrait-être traduit par « mémoire de corde » ?? (si vous avez une meilleure traduction je suis preneur), c’est une version spéciale du langage de programmation assembleur. L’assembleur est déjà lui-même assez obscur pour beaucoup de programmeurs car il est très difficile à lire, il est destiné à être facilement compris par les ordinateurs, pas par les humains. Pour l’Apollo Guidance Computer (AGC), les programmeurs du MIT ont écrit des milliers de lignes de ce code ésotérique.

Voici une idée de l’ampleur du code datant des années 1960 à côté de Margaret Hamilton, directeur de l’ingénierie logicielle pour le projet, debout à côté d’une pile de papier contenant le logiciel :

code source programme apollo 11

Margaret Hamilton (NASA)

Le code AGC a été à la disposition du public pendant un certain temps, il a d’abord été offert par le chercheur technicien Ron Burkey en 2003, qui l’a réécrit à partir des images numérisées des copies papier originales du MIT qui les avait mises en ligne. Il a tapé manuellement chaque ligne, une par une !
« Elles ont été scannées par un pilote d’avion nommé Gary Neff dans le Colorado, » Ron Burkey a déclaré dans un courriel. « le MIT a mis la main sur les scans des pages et les a mis en ligne sous forme d’images, certaines avaient malheureusement été mutilées durant le processus au point d’être illisibles par endroits. » Ron Burkey a reconstruit les parties illisibles, disait-il, en utilisant ses compétences en ingénierie pour remplir les parties manquantes.

« Un peu plus tard, je suis parvenu à obtenir quelques scans de remplacement de Gary Neff des parties illisibles et j’ai découvert avec joie que les 1ères parties étaient 100% correctes ! » Dit-il.

Cet effort a rendu le code disponible à tout chercheur ou amateur qui voulait l’explorer. Ron Burkey a d’ailleurs utilisé lui-même le logiciel pour créer une simulation de l’AGC :

Aussi énorme et réussi que fut le projet de Ron Burkey, le code lui-même est resté quelque peu obscur pour beaucoup de développeurs de logiciels d’aujourd’hui, tout du moins jusqu’à jeudi dernier (7 Juillet 2016), lorsque l’ancien stagiaire de la NASA Chris Garry a envoyé le logiciel dans son intégralité sur GitHub, le site de partage de code où des millions de programmeurs traînent ces jours-ci.

En quelques heures, les codeurs ont commencé à disséquer le logiciel, en particulier en regardant les commentaires qu’on inséré les programmeurs de l’AGC dans le code d’origine. Dans la programmation, les commentaires sont des descriptions écrites en langue anglaise d’une tâche en cours d’exécution à un moment donné. Mais comme les codeurs-détectives sont de grands blagueurs, la section r/ProgrammerHumor de Reddit a trouvé un grand nombre de commentaires dans le code AGC qui vont au-delà des explications ennuyeuses du logiciel lui-même. Le code est farci de blagues et de messages légers, faisant référence aux années 1960.

Par exemple, un extrait du code source, appelé BURN_BABY_BURN--MASTER_IGNITION_ROUTINE, et les commentaires expliquent pourquoi :

code source programme apollo 11

TRADUCTION : Cela remonte à 1965 et les émeutes de Los Angeles, et a été inspiré par l’extraordinaire disc-jockey Magnificient Montague propriétaire d’une station de radio. Magnificient Montague utilisait la phrase « Burn, baby! BURN! » (Brûle, bébé ! BRÛLE !) quand il faisait tourner les nouveaux enregistrements les plus chauds. Magnificient Montague était la voix charismatique de la soul musique à Chicago, New York et Los Angeles, à partir du milieu des années 1950 jusqu’au milieu des années 1960.

A la ligne 900 environ de cette sous-routine, un lecteur peut voir l’aspect ludique original de l’équipe de programmation, dans les premiers et derniers commentaires de ce bloc de code :

code source programme apollo 11

Dans le fichier appelé LUNAR_LANDING_GUIDANCE_EQUATIONS.s, il semble que deux lignes de code soient destinées à être temporaires et ont finies par être permanentes, en dépit des espoirs du programmeur:

code source programme apollo 11

Dans le même fichier, il apparaît aussi dans le code une instruction pour l »astronaute de « jeter la chose idiote aux alentours » ?

code source programme apollo 11

« Ce code positionne l’antenne LR (radar d’atterrissage), » et Burkey explique « Je suppose que c’est l’affichage d’un code pour avertir l’astronaute de repositionner le LR. »

Et dans le fichier PINBALL_GAME_BUTTONS_AND_LIGHTS.s, qui est décrit comme « le programme du clavier et du système d’affichage… échangés entre l’AGC et l’opérateur de l’ordinateur, » il y a une citation de Shakespeare particulière :

code source programme apollo 11

Ceci fait probablement référence au langage de programmation AGC lui-même, un utilisateur de Reddit a souligné que le langage utilisait des « noms » et « verbes » prédéterminé pour exécuter des opérations. Le verbe 37, par exemple, signifie « Exécuter le programme », tandis le nom 33 signifie « Heure de contact ».
Maintenant que le code est sur GitHub, les programmeurs peuvent effectivement proposer des changements à des problèmes de fichiers. Et, bien sûr, ils ne se gênent pas pour le faire…

Articles Relatifs…

Commentaires Facebook