Grace Hopper
Fiche rapide
- Nom : Grace Brewster Murray Hopper
- Naissance : 9 décembre 1906, New York
- Décès : 1er janvier 1992
- Formation : mathématiques et physique
- Doctorat : mathématiques, Yale University, 1934
- Premiers travaux informatiques : Harvard Mark I, à partir de 1944
- Contribution majeure : développement de systèmes de programmation automatique et de langages de haut niveau
- Langages et systèmes associés : A-0, A-2, MATH-MATIC, FLOW-MATIC, COBOL
- Carrière militaire : US Naval Reserve puis US Navy
- Grade final : Rear Admiral
Une mathématicienne avant l’informatique
Grace Brewster Murray naît à New York le 9 décembre 1906. Très tôt attirée par les sciences, elle étudie les mathématiques et la physique au Vassar College, où elle obtient son diplôme en 1928. Elle poursuit ensuite sa formation à Yale University et décroche un master en 1930, puis un doctorat de mathématiques en 1934.
Parallèlement, elle enseigne les mathématiques à Vassar à partir de 1931. Sa carrière semble alors devoir rester universitaire.
En 1930, elle épouse Vincent Foster Hopper. Le couple divorce en 1945, mais Grace conserve le nom de Hopper sous lequel elle restera connue.
La Seconde Guerre mondiale modifie profondément son parcours. Après l’entrée des États-Unis dans le conflit, elle souhaite participer à l’effort de guerre. Plusieurs obstacles compliquent cependant son engagement, notamment son âge et son poids, ainsi que l’importance de son activité d’enseignement.
Finalement, Hopper entre dans l’US Naval Reserve en décembre 1943 et suit la formation destinée aux officiers de réserve féminins. Quelques mois plus tard, ses compétences en mathématiques la conduisent vers une machine qui déterminera le reste de sa carrière.
1944 : face au Harvard Mark I
En juin 1944, Grace Hopper rejoint le Bureau of Ordnance Computation Project installé à Harvard University. Elle intègre l’équipe dirigée par Howard Aiken autour de l’Automatic Sequence Controlled Calculator, plus connu sous le nom de Harvard Mark I.
IBM a construit cette immense machine électromécanique pour Harvard. Le Mark I utilise des relais, des compteurs mécaniques et des kilomètres de câblage. Son fonctionnement reste très éloigné de celui d’un ordinateur moderne, mais la machine peut exécuter automatiquement de longues séquences d’opérations numériques.
Hopper doit alors apprendre à la programmer.
À cette époque, il n’existe ni langage de programmation moderne, ni environnement de développement, ni écran interactif. Programmer exige de connaître précisément les opérations disponibles, la représentation des nombres, les périphériques et l’enchaînement des instructions.
La frontière entre le programmeur et l’ingénieur reste donc étroite. Pour utiliser correctement la machine, il faut comprendre une grande partie de son fonctionnement interne.
Programmer lorsque les langages n’existent pas encore
L’expérience acquise sur le Mark I conduit Hopper à une conviction qui orientera toute sa carrière : les programmeurs consacrent trop de temps à des tâches répétitives que l’ordinateur pourrait accomplir lui-même.
À cette époque, ils doivent traduire manuellement un problème en une suite d’opérations adaptées à une machine particulière. Ils gèrent eux-mêmes les adresses, organisent les données et recopient régulièrement des routines déjà écrites.
Pour Hopper, cette organisation gaspille du temps et multiplie les risques d’erreur.
Dès lors, une question devient centrale : pourquoi demander à un programmeur de répéter des opérations parfaitement définies lorsque l’ordinateur peut les automatiser ?
Cette idée paraît simple aujourd’hui. Pourtant, elle remet en cause la manière même dont on envisage alors la programmation.
Le manuel du Mark I
Grace Hopper joue également un rôle important dans la documentation du Mark I. Après la guerre, Howard Aiken lui confie la coordination des connaissances accumulées autour de la machine.
En 1946 paraît ainsi A Manual of Operation for the Automatic Sequence Controlled Calculator. Hopper en assure l’édition générale.
L’ouvrage dépasse largement un simple manuel d’entretien. Sur plus de 500 pages, il décrit le fonctionnement du calculateur, ses circuits, ses opérations et les méthodes permettant de préparer un problème pour la machine.
À une époque où la programmation constitue encore une discipline nouvelle, cette documentation joue un rôle important. Elle transforme progressivement des pratiques acquises par quelques spécialistes en méthodes que l’on peut expliquer, transmettre et enseigner.
1947 : le véritable « bug »
L’une des anecdotes les plus célèbres associées à Grace Hopper concerne le Harvard Mark II.
En 1947, un dysfonctionnement conduit des membres de l’équipe à inspecter la machine. Ils découvrent alors un papillon de nuit coincé dans un relais.
Les techniciens retirent l’insecte et le collent dans le journal d’exploitation avec cette remarque humoristique : « First actual case of bug being found. », autrement dit « premier véritable cas où un bug a été trouvé ».
Le journal existe toujours et le Smithsonian National Museum of American History le conserve dans ses collections.
Cependant, cette histoire a donné naissance à deux légendes. Tout d’abord, Grace Hopper n’a pas inventé le mot « bug ». Les ingénieurs utilisaient déjà ce terme depuis le XIXe siècle pour désigner un défaut ou un problème technique.
Ensuite, rien ne permet d’affirmer qu’elle a elle-même découvert le papillon. L’incident concerne l’équipe travaillant sur le Mark II. Hopper racontera néanmoins souvent l’anecdote et contribuera ainsi à populariser les termes bug et debugging dans le monde informatique.
1949 : du Mark I à UNIVAC
En 1949, Grace Hopper quitte Harvard et rejoint l’Eckert-Mauchly Computer Corporation, fondée par J. Presper Eckert et John Mauchly, deux des principaux concepteurs de l’ENIAC.
L’entreprise développe alors l’UNIVAC I, l’un des premiers ordinateurs électroniques commerciaux américains.
Ce changement d’environnement est important. À Harvard, Hopper travaille principalement dans un contexte scientifique et militaire. Avec UNIVAC, elle entre dans un monde où l’ordinateur doit également répondre aux besoins des administrations et des entreprises.
Or ces nouveaux utilisateurs ne sont pas nécessairement des mathématiciens capables de manipuler directement les codes internes d’un ordinateur.
Par conséquent, si l’informatique veut se diffuser, sa programmation doit devenir plus accessible.
Faire programmer l’ordinateur par l’ordinateur
Hopper développe alors une idée qui paraît radicale : certaines étapes nécessaires à la construction d’un programme peuvent être confiées à l’ordinateur lui-même.
Les programmeurs réutilisent régulièrement les mêmes sous-programmes pour lire une donnée, effectuer un calcul ou produire un résultat. Au lieu de recopier ces routines à chaque nouveau programme, Hopper propose de les conserver dans une bibliothèque.
Le programmeur indique ensuite les routines dont il a besoin. L’ordinateur peut alors les retrouver et les réunir automatiquement.
Le principe nous paraît aujourd’hui évident. Pourtant, au début des années 1950, il modifie profondément la conception du logiciel : un programme peut désormais participer à la fabrication d’un autre programme.
1951–1952 : le système A-0
Entre 1951 et 1952, Grace Hopper développe pour UNIVAC le système A-0.
Le programmeur peut désigner des sous-programmes enregistrés dans une bibliothèque et leur fournir certains paramètres. A-0 recherche ensuite les routines nécessaires et les rassemble afin de construire le programme utilisable par la machine.
On présente souvent A-0 comme le premier compilateur de l’histoire. Cette formule demande toutefois une nuance.
Un compilateur moderne reçoit généralement un programme écrit dans un langage de haut niveau, analyse ses instructions puis produit du code adapté à un processeur. A-0 fonctionne différemment. Avec le vocabulaire actuel, il se rapproche davantage d’un chargeur et éditeur de liens capable de sélectionner puis d’assembler des routines préexistantes.
Cette différence de terminologie ne retire rien à son importance. A-0 matérialise une idée essentielle : l’ordinateur peut automatiser une partie du travail nécessaire à la préparation de ses programmes.
Pourquoi parler de « compilateur » ?
Le mot compiler possède alors un sens très concret. En anglais, to compile signifie notamment réunir plusieurs éléments afin de constituer un ensemble.
C’est précisément ce que réalise le système de Hopper : il récupère différentes routines dans une bibliothèque puis les rassemble pour fabriquer le programme demandé.
A-0 ouvre ainsi la voie à d’autres systèmes, notamment A-1 et A-2, qui perfectionnent progressivement cette approche.
L’essentiel n’est donc pas de savoir quel programme mérite exactement le titre de « premier compilateur ». L’innovation fondamentale réside ailleurs : la traduction et l’organisation d’un programme deviennent elles-mêmes des tâches que l’ordinateur peut automatiser.
Écrire avec des mots plutôt qu’avec des codes
Hopper pousse ensuite le raisonnement plus loin.
Même avec les premiers outils automatiques, les programmeurs restent fortement dépendants du fonctionnement interne des machines. Pourtant, les entreprises utilisent les ordinateurs pour gérer des factures, des salaires, des stocks ou des fichiers clients. Les personnes qui connaissent ces activités ne sont pas nécessairement des spécialistes de l’électronique.
Grace Hopper défend donc l’idée d’un langage utilisant des mots proches du vocabulaire courant.
Cette proposition rencontre beaucoup de scepticisme. Pour certains ingénieurs, une machine manipule des nombres et des codes ; il semble donc inutile de lui présenter des instructions ressemblant à de l’anglais.
Hopper inverse le problème. L’ordinateur n’a pas besoin de « comprendre » l’anglais. Un programme intermédiaire doit simplement traduire les instructions lisibles par l’être humain vers les codes compris par la machine.
Ainsi, l’outil de traduction effectue une fois un travail que chaque programmeur aurait autrement dû recommencer.
FLOW-MATIC : programmer avec un vocabulaire métier
Cette démarche conduit au développement de FLOW-MATIC, d’abord connu sous le nom de B-0.
Destiné au traitement des données commerciales sur les machines UNIVAC, FLOW-MATIC se développe au cours des années 1950 et devient opérationnel dans la seconde moitié de la décennie.
Sa principale originalité tient à son vocabulaire. Au lieu d’exiger uniquement des codes numériques ou des notations mathématiques, le langage utilise des mots anglais pour décrire les traitements.
Cela ne signifie pas que l’utilisateur puisse écrire librement une phrase en anglais. FLOW-MATIC possède toujours une syntaxe précise. Cependant, un programme devient plus proche de la manière dont une entreprise décrit ses propres opérations.
Cette évolution est importante : le logiciel peut désormais être lu et discuté par des personnes qui connaissent le métier sans maîtriser chaque détail électronique de l’ordinateur.
1959 : la naissance de COBOL
À la fin des années 1950, la multiplication des ordinateurs fait apparaître un autre problème. Chaque constructeur possède ses propres machines, ses instructions et souvent ses propres outils de programmation.
Une entreprise qui change de matériel risque donc de devoir réécrire une grande partie de ses logiciels.
En 1959, des représentants de constructeurs, d’administrations et d’organismes américains se réunissent dans le cadre de CODASYL, le Conference on Data Systems Languages.
Leur objectif consiste à définir un langage commun destiné au traitement des données commerciales.
Ces travaux conduisent à COBOL, pour Common Business-Oriented Language.
Le nouveau langage reprend plusieurs principes déjà expérimentés avec FLOW-MATIC : un vocabulaire proche de l’anglais, une orientation vers les données commerciales et surtout la volonté de rendre les programmes aussi indépendants que possible du matériel utilisé.
Grace Hopper a-t-elle créé COBOL ?
On présente parfois Grace Hopper comme la « créatrice de COBOL ». Cette formulation simplifie excessivement l’histoire.
COBOL résulte d’un travail collectif. Plusieurs comités réunissant des spécialistes issus de l’industrie informatique et de l’administration américaine participent à sa définition.
Hopper contribue à ce mouvement et défend activement les langages indépendants des machines. Surtout, FLOW-MATIC, développé auparavant par son équipe, influence directement certaines caractéristiques du nouveau langage.
Grace Hopper n’écrit donc pas seule COBOL. Son rôle est plus large : pendant plusieurs années, elle expérimente et défend les principes qui deviendront essentiels dans COBOL, notamment la lisibilité, le vocabulaire métier, l’automatisation de la traduction et l’indépendance vis-à-vis du matériel.
Cette distinction ne diminue pas son importance historique. Au contraire, elle permet de comprendre plus précisément sa contribution.
Le logiciel doit survivre au changement de machine
À mesure que l’industrie informatique se développe, le problème de la portabilité devient crucial.
Un programme représente désormais un investissement considérable. Une entreprise peut consacrer des mois ou des années au développement de ses applications. Si chaque changement d’ordinateur impose de tout réécrire, le coût du logiciel devient rapidement considérable.
Un langage standardisé apporte une réponse à ce problème. Le programme décrit ce qu’il faut faire, tandis qu’un compilateur adapté à chaque ordinateur traduit cette description vers les instructions propres à la machine.
Grâce à cette séparation, le logiciel devient progressivement moins dépendant d’un modèle précis d’ordinateur.
Cette évolution constitue l’une des transformations fondamentales de l’histoire de la programmation.
1967 : la Navy la rappelle
La carrière de Grace Hopper reste parallèlement liée à l’US Navy. Après plusieurs périodes de service, elle prend sa retraite de la réserve à la fin de 1966 avec le grade de commander.
Cependant, cette retraite dure peu.
Le 1er août 1967, la Navy la rappelle en service actif. L’informatique militaire connaît alors une forte croissance et doit gérer une multiplication des ordinateurs, des logiciels et des langages incompatibles.
Hopper travaille notamment sur la standardisation des langages de programmation et sur les méthodes permettant de vérifier leur conformité.
Désormais, l’enjeu dépasse la création d’un langage particulier. Il faut garantir qu’un programme respectant une norme produira un comportement cohérent sur plusieurs systèmes.
Cette recherche de compatibilité accompagnera toute la seconde partie de sa carrière.
Les « nanosecondes » de Grace Hopper
Grace Hopper devient également célèbre pour ses conférences. Elle possède un talent particulier pour transformer une notion abstraite en quelque chose de immédiatement compréhensible.
Son exemple le plus connu concerne la nanoseconde.
Une nanoseconde représente un milliardième de seconde. Cette durée est tellement courte qu’elle reste difficile à imaginer.
Pour la matérialiser, Hopper utilise des morceaux de fil d’environ 30 centimètres. Cette longueur correspond approximativement à la distance parcourue par la lumière dans le vide pendant une nanoseconde.
Elle distribue parfois ces fils à son auditoire.
La démonstration permet de comprendre pourquoi la taille physique d’un ordinateur influence ses performances. Même un signal électromagnétique ne se déplace pas instantanément. Plus les circuits sont éloignés, plus les délais de propagation deviennent importants.
Lorsque les machines deviennent encore plus rapides, Hopper utilise également de minuscules objets, notamment des grains de poivre, pour illustrer l’échelle de la picoseconde.
Une enseignante autant qu’une informaticienne
Cette manière d’expliquer résume une autre dimension importante de sa carrière.
Grace Hopper ne cherche pas seulement à développer de nouveaux outils. Elle veut également rendre l’informatique compréhensible et utilisable par davantage de personnes.
Cette volonté apparaît aussi bien dans ses conférences que dans ses travaux sur les langages.
Un programme constitué uniquement de codes numériques reste réservé à quelques spécialistes. En revanche, un langage plus lisible permet à davantage de personnes de comprendre le traitement réalisé.
De même, une durée d’un milliardième de seconde reste abstraite tant qu’elle demeure un simple nombre. Un morceau de fil permet immédiatement de la visualiser.
Dans les deux cas, Hopper poursuit la même démarche : réduire la distance entre la machine et celui qui doit la comprendre.
1986 : une retraite à 79 ans
Grace Hopper reste en service actif jusqu’au 14 août 1986. Elle a alors 79 ans et porte le grade de Rear Admiral.
Sa cérémonie de retraite se déroule à bord de l’USS Constitution, le plus ancien navire de guerre encore en service actif dans l’US Navy.
Cependant, Hopper ne cesse pas de travailler.
Après son départ de la Marine, elle rejoint Digital Equipment Corporation comme consultante. Elle y participe notamment à des conférences et continue de promouvoir l’enseignement de l’informatique et l’utilisation de standards.
Le rapprochement est intéressant : celle qui programmait le Mark I en 1944 termine sa carrière auprès de l’entreprise qui a construit les PDP et les VAX, deux familles de machines emblématiques de l’informatique interactive.
Grace Hopper restera liée à DEC jusqu’à sa mort.
Une carrière qui traverse plusieurs générations d’ordinateurs
La durée de sa carrière permet de mesurer l’ampleur des transformations qu’elle a connues.
Lorsqu’elle commence à programmer, les machines utilisent encore des relais, occupent des salles entières et offrent très peu de logiciels entre le programmeur et le matériel.
Lorsqu’elle quitte la Navy en 1986, les langages de haut niveau sont devenus courants, le micro-ordinateur s’est largement diffusé et des millions de personnes utilisent des logiciels sans connaître les instructions du processeur qui les exécute.
Grace Hopper n’est évidemment pas responsable à elle seule de cette évolution.
Néanmoins, une grande partie de son travail accompagne précisément ce mouvement : éloigner progressivement le programmeur des contraintes physiques de la machine afin qu’il puisse se concentrer sur le problème à résoudre.
Pourquoi Grace Hopper est une figure majeure
- Premiers ordinateurs : elle participe à la programmation du Harvard Mark I pendant la Seconde Guerre mondiale.
- Documentation : elle assure l’édition générale du manuel du Mark I publié en 1946.
- Programmation automatique : avec A-0 et ses successeurs, elle participe aux premières tentatives visant à automatiser la préparation des programmes.
- Langages de haut niveau : FLOW-MATIC montre qu’un langage destiné aux entreprises peut employer un vocabulaire proche de l’anglais.
- COBOL : ses travaux sur FLOW-MATIC et son action en faveur de langages indépendants des machines participent au mouvement qui conduit à COBOL.
- Portabilité : elle défend l’idée qu’un programme doit dépendre le moins possible de l’ordinateur sur lequel il fonctionne.
- Standardisation : son travail dans la Navy contribue à développer des normes communes pour les langages informatiques.
- Pédagogie : ses conférences, notamment ses célèbres démonstrations des « nanosecondes », rendent des notions complexes immédiatement compréhensibles.
L’importance de Grace Hopper ne repose donc pas sur une invention unique. Elle tient plutôt à une idée qu’elle poursuit pendant plusieurs décennies : le programmeur ne devrait pas consacrer son temps à effectuer des tâches que l’ordinateur peut accomplir à sa place.
Cette idée conduit des bibliothèques de sous-programmes à A-0, puis aux langages utilisant un vocabulaire plus lisible, à FLOW-MATIC et finalement à l’environnement intellectuel dans lequel apparaît COBOL.
Progressivement, de nouvelles couches logicielles s’interposent entre l’être humain et le matériel. Le programmeur n’a plus besoin de connaître chaque détail électronique de la machine pour lui demander d’effectuer un traitement.
C’est probablement là que se trouve l’héritage le plus profond de Grace Hopper : avoir contribué à faire du logiciel un intermédiaire entre la pensée humaine et le fonctionnement interne de l’ordinateur.
Repères chronologiques
- 1906 : naissance de Grace Brewster Murray à New York.
- 1928 : diplôme de Vassar College.
- 1930 : master de mathématiques à Yale University et mariage avec Vincent Hopper.
- 1934 : doctorat de mathématiques à Yale.
- 1943 : entrée dans l’US Naval Reserve.
- 1944 : arrivée dans l’équipe du Harvard Mark I.
- 1946 : publication du Manual of Operation for the Automatic Sequence Controlled Calculator.
- 1947 : découverte du célèbre papillon dans un relais du Mark II.
- 1949 : arrivée à l’Eckert-Mauchly Computer Corporation et participation aux travaux sur UNIVAC.
- 1951–1952 : développement du système A-0.
- Années 1950 : développement de FLOW-MATIC.
- 1959 : travaux de CODASYL conduisant à COBOL.
- 1966 : retraite de l’US Naval Reserve.
- 1967 : rappel en service actif par l’US Navy.
- 1986 : retraite définitive de la Navy avec le grade de Rear Admiral, puis arrivée chez Digital Equipment Corporation comme consultante.
- 1991 : National Medal of Technology.
- 1992 : décès de Grace Hopper le 1er janvier, à l’âge de 85 ans.
- 2016 : Presidential Medal of Freedom décernée à titre posthume.
Sources et pour aller plus loin
- Naval History and Heritage Command — Grace Murray Hopper.
- Smithsonian National Museum of American History — documentation consacrée à Grace Hopper et au célèbre « bug » du Mark II.
- Computer History Museum — documentation consacrée à Grace Murray Hopper et à l’histoire des langages de programmation.
- Harvard University — documentation consacrée au Harvard Mark I.
- Grace Murray Hopper — Compiling Routines, 1953.
Photo par Auteur inconnu — Flickr: Grace Hopper and UNIVAC, CC BY 2.0, Lien
