# J. Halcombe Laning

J. Halcombe "Hal" Laning, Jr. (14 février 1920 à Kansas City, Missouri, 29 mai 2012) est un pionnier de l'informatique du Massachusetts Institute of Technology qui en 1952 invente un compilateur algébrique appelé George (également connu sous le nom de système Laning et Zierler (en) d'après les auteurs de l'article publié) qui fonctionne sur le Whirlwind I du MIT, le premier ordinateur en temps réel.
Laning conçoit George comme une alternative au langage d'assemblage plus facile à utiliser pour saisir des équations mathématiques dans un ordinateur.
Les concepts qu'il introduit avec George sont ensuite incorporés dans FORTRAN.
Plus tard, il devient un contributeur clé à la course à la Lune des années 1960, avec un travail de pionnier sur les systèmes de guidage spatiaux pour les missions lunaires Apollo. De 1955 à 1980, il est directeur adjoint du MIT Instrumentation Laboratory.
En 1956, il publie le livre Random Processes in Automatic Control (Série McGraw-Hill sur l'ingénierie des systèmes de contrôle), avec Richard Battin. Ce livre est encore vendu de nos jours et fait toujours référence.
En collaboration avec Phil Hankins et Charlie Werner du MIT, il initie des travaux sur MAC (MIT Algebraic Compiler), un langage de programmation algébrique pour l’IBM 650, achevé au début du printemps 1958.

## Le programme Apollo : la priorisation des tâches

Au delà de tous ces projets, il est aussi principalement connu pour avoir introduit et appliqué avec Margaret Hamilton, le principe de priorisation des tâches (révolutionnaire à l'époque, indispensable et toujours utilisé de nos jours), à bord du programme Apollo.
Avant ça, quand un ordinateur saturait en pile de traitements (stack), alors il plantait (erreur programme ou freeze complet).
Mais le système d'exploitation de Laning pouvait gérer les tâches, les prioriser et ne pas traiter celles qui n'étaient pas jugées comme "utiles" (affichage, etc) ou critiques lors de calculs intenses, ou de stacks quasi-pleins. Pour Laning, il faut s'assurer que les tâches importantes auront la priorité.
Comme cela a été le cas par exemple lors de l'alunissage du module lunaire de la mission Apollo 11. L'ordinateur de bord a fait des "bip" d'alerte établis, distinctifs et référencés par Laning, pour indiquer qu'il était surchargé par les très nombreux paramètres des capteurs, lors de la dernière phase d'alunissage.
Mais l'ordinateur de bord n'a pas planté. Il a priorisé et il pouvait continuer à dépiler son stack en éjectant ses tâches non prioritaires.
Ainsi, le programme d'alunissage écrit par l'équipe du Laboratoire Charles Stark Draper du MIT, a pu s'exécuter à bord avec succès sur son Apollo Guidance Computer. Sans cela, la probabilité de vie des astronautes aurait été très fortement réduite (un guidage inertiel manuel en vertical par quadri-réacteurs est extrêmement difficile, se résultant souvent par un crash de l'appareil, c'est pour cela que la décision d'automatiser cette tâche par ordinateur plus capteurs, a été retenue).
À la NASA et au MIT, Laning était vu comme un collègue discret, qui parlait très peu et qui était d'une timidité frappante. Aux laboratoires, tout le monde avait entendu parler de lui et le considérait comme une sorte de génie. Il fuyait les projecteurs, c'étaient les autres qui parlaient pour lui et faisaient étalage de son intelligence.
Laning dit bien plus tard, à sa retraite, que lors du programme Apollo, il a aussi été très difficile de créer son système, à cause de décisions lors de réunions en équipe. De savoir ce que l'on pouvait faire, de quoi l'on devait se passer, etc., sur cet ordinateur de bord. Puisque la taille et donc la puissance de cet ordinateur avait été décidée de façon complètement spéculative par des responsables de la NASA, avant même le lancement du projet, comme quoi il devait entrer dans un seul mètre cube : ce qui paraissait irréalisable à l'époque mais ce qui a pu être tout de même fait par l'équipe du MIT après un travail long et acharné.