Les premiers ordinateurs n’exécutent pas des mots comme READ, ADD ou
PAYROLL. Ils comprennent des codes numériques étroitement liés à leur
matériel. Grace Hopper consacre sa carrière à réduire cette distance
entre l’intention humaine et les opérations de la machine.
Son apport ne se résume ni à une invention isolée ni à la création
solitaire de COBOL. Elle programme l’un des premiers grands calculateurs
automatiques, dirige des travaux précurseurs sur la traduction des
programmes, développe avec son équipe un langage destiné aux données
commerciales et défend la normalisation. Le fil commun est clair : un
programme devrait exprimer le problème à résoudre plutôt que les
particularités d’un ordinateur.
Apprendre à programmer avant que le métier existe
Grace Brewster Murray naît en 1906 à New York. Elle étudie les
mathématiques et la physique au Vassar College, puis obtient en 1934 un
doctorat de mathématiques à Yale. Elle enseigne ensuite à Vassar jusqu’à
ce que la Seconde Guerre mondiale transforme son parcours.
Elle rejoint la réserve de la marine américaine en 1943. L’année
suivante, elle est affectée à l’équipe de Howard Aiken à Harvard, qui
exploite l’IBM Automatic Sequence Controlled Calculator, plus connu
sous le nom de Harvard Mark I.
Le Mark I est une machine électromécanique longue de plusieurs mètres.
Il lit ses instructions sur bande perforée et automatise de longues
suites de calculs. Hopper apprend à le programmer, produit des tables
destinées à la marine et participe à la rédaction de son manuel.
Ce travail oblige l’équipe à formaliser une activité encore nouvelle :
décomposer un problème, organiser les instructions, vérifier les
résultats et réutiliser des séquences. Programmer commence à devenir un
métier distinct de la construction du matériel.
Ce que l’histoire du papillon explique réellement
En 1947, l’équipe du Harvard Mark II trouve un papillon de nuit coincé
dans un relais. L’insecte est fixé dans le journal du laboratoire avec
une note évoquant le premier cas réel de « bug ».
Cette anecdote est souvent transformée en affirmation selon laquelle
Hopper aurait inventé le mot. Le terme désignait pourtant déjà une
défaillance technique au XIXe siècle. Le journal n’établit pas non plus
qu’elle a personnellement retiré l’insecte. Le jeu de mots montre
surtout que bug et debugging appartenaient déjà au vocabulaire des
équipes informatiques.
La nuance correspond mieux à son influence. Hopper ne doit pas sa place
dans l’histoire à cette anecdote, mais à son travail pour rendre la
programmation compréhensible, transmissible et indépendante du matériel.
Pourquoi A-0 automatise une partie de la programmation
En 1949, Hopper rejoint l’Eckert-Mauchly Computer Corporation, bientôt
intégrée à Remington Rand, qui développe l’UNIVAC I. Les entreprises
veulent traiter des fichiers de clients, de stocks ou de paie, mais
programmer chaque opération en code machine reste lent et coûteux.
Hopper et son équipe développent au début des années 1950 le système
A-0. Le programmeur identifie des sous-programmes disponibles ; A-0
retrouve leur code, les charge et organise leur utilisation. Selon les
définitions modernes, ce système ressemble autant à un chargeur et à un
éditeur de liens qu’à un compilateur complet.
Il est donc plus précis de parler de l’un des premiers systèmes de
compilation que de « premier compilateur » sans nuance. Son importance
ne dépend pas de ce classement : A-0 montre qu’un programme peut
préparer automatiquement un autre programme pour son exécution.
Les systèmes A-1, A-2 puis MATH-MATIC prolongent cette démarche. Hopper
défend alors une idée contestée : un ordinateur peut traduire une
notation adaptée aux humains vers ses propres instructions avec assez de
fiabilité pour un usage réel.
FLOW-MATIC rapproche le code du travail des entreprises
Les langages scientifiques manipulent surtout des formules. Les
applications commerciales décrivent plutôt des opérations comme lire un
fichier, comparer des enregistrements, calculer un total ou imprimer un
rapport. Hopper estime que leur notation doit refléter ce vocabulaire.
Son équipe développe FLOW-MATIC au milieu des années 1950. Ses
instructions emploient des mots anglais et décrivent des flux de
données. Cette lisibilité ne dispense pas d’apprendre à programmer, mais
elle rapproche le code des procédures connues par les analystes et les
entreprises.
FLOW-MATIC apporte aussi une leçon de portabilité. Si une instruction
exprime une opération métier plutôt qu’une particularité matérielle, un
compilateur peut la traduire pour plusieurs ordinateurs. Les programmes
deviennent moins dépendants de leur constructeur.
Cette approche prépare directement les discussions qui mèneront à COBOL.
COBOL est une réalisation collective
En 1959, fabricants, administrations et utilisateurs se réunissent au
sein de CODASYL, le Committee on Data Systems Languages. Leur
objectif est de définir rapidement un langage commun pour les
applications de gestion, utilisable sur des machines de marques
différentes.
Hopper participe à la première réunion et les concepts de FLOW-MATIC
influencent fortement le projet. Elle défend depuis plusieurs années les
instructions proches de l’anglais et l’indépendance vis-à-vis des
machines. La spécification de COBOL est néanmoins produite par des
comités, avec une contribution directe du groupe chargé de sa rédaction
initiale.
Dire que Hopper a inventé COBOL seule efface cette coopération. Son rôle
est celui d’une pionnière, d’une source technique et d’une promotrice
déterminante. Elle contribue ensuite à l’adoption et à la normalisation
du langage, notamment au service de la marine.
COBOL permet aux organisations de conserver leurs programmes lorsque
leur matériel change. Cette stabilité explique sa longévité : banques,
assurances et administrations y ont accumulé des décennies de règles
métier coûteuses à remplacer.
Pourquoi la portabilité exige plus qu’un langage commun
Écrire une spécification ne suffit pas à rendre les programmes
portables. Deux constructeurs peuvent interpréter différemment une
règle, accepter des extensions incompatibles ou produire des résultats
divergents dans les cas limites. Pour une administration qui change de
machine, le coût de ces écarts peut annuler une partie des bénéfices
promis par COBOL.
Hopper insiste donc sur la validation des compilateurs. Des suites
de programmes contrôlent qu’une implantation reconnaît les constructions
prévues et leur donne le comportement attendu. Cette démarche ne
démontre pas qu’un compilateur est exempt de toute erreur ; elle établit
un niveau de conformité mesurable et comparable.
Le problème révèle la continuité de son travail. A-0 automatise
l’assemblage de sous-programmes. FLOW-MATIC rapproche les instructions
du vocabulaire des entreprises. COBOL fournit un langage partagé. Les
tests de validation cherchent enfin à garantir que ce langage partagé
conserve le même sens d’une machine à l’autre.
La normalisation peut paraître moins inventive que la création d’une
syntaxe. Elle détermine pourtant si une idée devient une infrastructure
durable ou reste attachée à un constructeur. L’influence de Hopper tient
aussi à cette transformation d’un prototype en pratique industrielle
contrôlable.
De la conception des langages à leur normalisation
Hopper poursuit ses responsabilités chez Remington Rand puis Sperry
Rand. Elle publie, forme des programmeurs et présente les langages comme
des outils permettant d’élargir l’accès aux ordinateurs.
Après avoir quitté la réserve en 1966, elle est rappelée en service
actif en 1967. La marine doit rendre ses programmes COBOL compatibles et
vérifiables sur plusieurs systèmes. Hopper travaille sur les procédures
de validation et de normalisation, problème moins visible que la
création d’un langage mais essentiel à sa portabilité réelle.
Elle reste en service jusqu’en 1986 et prend sa retraite avec le grade
de contre-amirale. Ses conférences rendent les échelles informatiques
concrètes : elle utilise notamment des morceaux de fil correspondant à
la distance parcourue par la lumière en une nanoseconde pour expliquer
le coût physique du temps de calcul.
Hopper meurt en 1992. Son héritage se trouve dans les compilateurs, mais
aussi dans une conviction devenue structurante : les langages doivent
rapprocher les programmes des problèmes humains, et les normes doivent
empêcher ce progrès de rester prisonnier d’une seule machine.
Chronologie
- 1906 : naissance de Grace Brewster Murray à New York.
- 1928 : diplôme de mathématiques et de physique au Vassar
College.
- 1934 : doctorat de mathématiques à Yale.
- 1943 : entrée dans la réserve de la marine américaine.
- 1944 : affectation à l’équipe du Harvard Mark I.
- 1947 : découverte du papillon dans un relais du Mark II.
- 1949 : arrivée chez Eckert-Mauchly pour travailler sur l’UNIVAC.
- 1952 : présentation des travaux sur A-0.
- 1955–1959 : développement de FLOW-MATIC avec son équipe.
- 1959 : participation aux premières discussions de CODASYL.
- 1960 : publication de la première spécification COBOL issue du
travail des comités CODASYL.
- 1967 : rappel par la marine pour contribuer à la normalisation
de COBOL.
- 1986 : retraite définitive avec le grade de contre-amirale.
- 1992 : décès à Arlington, en Virginie.
- Aujourd’hui : compilateurs, langages portables et normes
prolongent les problèmes auxquels elle a consacré sa carrière.
Questions fréquentes
Grace Hopper a-t-elle inventé le premier compilateur ?
Elle dirige le développement d’A-0, souvent présenté comme le premier
compilateur. Sa fonction correspond aussi à ce que l’on nommerait
aujourd’hui un chargeur ou un éditeur de liens. Il est plus exact de
parler de l’un des premiers systèmes de compilation.
A-t-elle créé COBOL seule ?
Non. COBOL est conçu collectivement par les comités de CODASYL. Les
idées de Hopper et FLOW-MATIC exercent une influence directe, et elle
joue ensuite un rôle important dans l’adoption, la validation et la
normalisation du langage.
A-t-elle inventé le mot « bug » ?
Non. Le mot était déjà utilisé pour les défauts techniques. Le papillon
découvert dans le Mark II a produit un jeu de mots mémorable sur le
premier « véritable » bug, mais il n’est pas à l’origine du terme.
Pourquoi FLOW-MATIC est-il important ?
FLOW-MATIC montre qu’un langage destiné aux entreprises peut employer
des mots proches de leurs procédures tout en restant traduisible par une
machine. Il influence directement COBOL.
Pourquoi COBOL est-il encore présent ?
De nombreuses organisations ont accumulé en COBOL des décennies de
règles métier éprouvées. Remplacer ces systèmes comporte des coûts et
des risques élevés. La portabilité recherchée dès l’origine a aussi
permis au code de survivre à plusieurs générations de matériel.
Quel lien unit Grace Hopper et John Backus ?
Tous deux cherchent à éloigner la programmation du code machine dans les
années 1950. Hopper s’oriente vers les traitements commerciaux avec
FLOW-MATIC et COBOL ; Backus dirige l’équipe de
FORTRAN pour le calcul scientifique.