URL: https://linuxfr.org/news/delphine-demange-et-les-compilateurs Title: Delphine Demange et les compilateurs Authors: Ysabeau đ§¶ vmagnin, Julien Jorge et Arkem Date: 2025ćčŽ10æ07æ„T16:14:32+02:00 License: CC By-SA Tags: femme_de_science, ada_lovelace, compilateur, grace_hopper, frances_allen, lois_haibt et delphine_demange Score: 44 Cette annĂ©e, la date de la [journĂ©e Ada Lovelace](https://sti.eduscol.education.fr/si-ens-paris-saclay/actualites/journee-ada-lovelace-mardi-15-octobre-2025), une journĂ©e dont lâobjectif est dâaccroĂźtre la visibilitĂ© des contributions des femmes dans les domaines scientifiques, technologiques, mathĂ©matiques et ingĂ©nierie (STEM), est le 15 octobre 2025. Pour lâoccasion, en 2023, LinuxFr avait consacrĂ© une dĂ©pĂȘche Ă [Lorinda Cherry, Evi Nemeth et Jude Milhon](https://linuxfr.org/news/lorinda-cherry-la-programmeuse-unix-qui-aimait-la-course-automobile-et-les-chiens-et-ses-consĆurs). En 2024, cela avait donnĂ© lieu Ă une mini-sĂ©rie sur la participation des femmes Ă la [conquĂȘte de lâespace](https://linuxfr.org/news/la-conquete-de-l-espace-une-affaire-feminine-premiere-partie-du-naca-a-la-nasa). Cette annĂ©e, on se penchera sur les compilateurs, créés par Grace Hopper, et qui ont valu Ă [Frances Allen](https://linuxfr.org/news/hommage-a-frances-allen) un prix Turing en 2006 et on dressera le portrait de Delphine Demange, laurĂ©ate du prix [Gilles Kahn 2013](https://fr.wikipedia.org/wiki/Prix_Gilles-Kahn).  ---- [Page Delphine Demange sur le site de l'Irisa](https://people.irisa.fr/Delphine.Demange/index.php) [Entretien avec Delphine Demange ](https://www.ens-rennes.fr/actualites/prix-distinctions/entretien-avec-delphine-demange) ---- # Quâest-ce quâun compilateur ? ## La naissance des compilateurs Le premier compilateur, il sâappelait « translator » (traducteur) Ă lâĂ©poque, a Ă©tĂ© inventĂ© par [Grace Murray Hopper](https://aconit.inria.fr/omeka/exhibits/show/figures-de-l-informatique/pionniers/grace-hopper.html) pour lâUNIVAC 1 en 1951, lâA-O System. Soit aprĂšs la sortie de lâIBM 604 (1948), avant celle de lâIBM 650 (1954) et un peu avant le FORTRAN, langage compilĂ©, créé vers 1953 par [John Backus](https://datascientest.com/fortran) pour lâIBM 701 et lancĂ© en 1957. La mĂȘme annĂ©e oĂč IBM embauche [Frances Allen](https://linuxfr.org/news/hommage-a-frances-allen) pour former des scientifiques et des ingĂ©nieurs rĂ©ticents Ă lâutilisation du langage. Elle sera, en 2006, la premiĂšre femme Ă obtenir un prix Turing. Elle raconte, dans les _Annals of History of Computing_ (Volume 6, N°1, janvier 1984) que :>Lâune des façons dont le laboratoire de recherche a convaincu les gens Ă utiliser ce langage a Ă©tĂ© dâimposer son utilisation via un rĂšglement. Elle ajoutera :>le compilateur FORTRAN a Ă©tabli la norme en matiĂšre dâefficacitĂ© du code objet. Mais surtout, il a dĂ©montrĂ© la faisabilitĂ© de lâutilisation des langages de haut niveau. Lorsque jâai enseignĂ© le FORTRAN en 1957, lâutilisation de ce langage a rencontrĂ© une forte rĂ©sistance. Cette rĂ©sistance a rapidement Ă©tĂ© Ă©rodĂ©e par le type de code produit par le compilateur. John Backus, qui trouvait par ailleurs que Grace Murray Hopper Ă©tait difficile Ă Ă©galer, dĂ©taillait dans ces mĂȘmes annales les auteurs et lâautrice du compilateur. Peter Sheridan avait Ă©crit la section 1 qui analysait les expressions algĂ©briques, les traduisait en code et optimisait ce code. Pour la section 2, Harlan Herrick avait inventĂ© lâinstruction DO, rĂ©digĂ© : « la partie de la section 1 qui regroupe toutes les informations sources non utilisĂ©es dans les expressions algĂ©briques dans des tableaux nĂ©cessaires aux sections suivantes. ».>Câest Ă©galement Ă Herrick que lâon doit lâintroduction des mots clĂ©s GO TO ! Roy Nutt a conçu la majeure partie du langage dâentrĂ©e/sortie et rĂ©digĂ© la partie de la section 1 qui traduisait les instructions dâE/S en boucles DO. Il a Ă©galement rĂ©digĂ© la section 6, qui assemblait le programme symbolique final et complĂ©tait le traitement des instructions dâE/S. Câest Ă©galement Ă Nutt que lâon doit lâintroduction de lâinstruction FORMAT. Bob Nelson et Irv Ziller ont rĂ©digĂ© la section 2, qui sâest avĂ©rĂ©e ĂȘtre la plus grande section du compilateur. Elle analysait les rĂ©fĂ©rences aux tableaux dans les boucles DO et produisait un code hautement optimisĂ© pour le reste du programme source. Leur travail a eu un impact important sur le niveau global dâoptimisation que jâai mentionnĂ© prĂ©cĂ©demment. Dick Goldberg a rĂ©digĂ© la section 3, qui rassemblait le code compilĂ© par les sections 1 et 2 et produisait d'autres informations nĂ©cessaires aux sections suivantes. Les gens continuaient Ă se concerter et Ă demander aux auteurs des sections prĂ©cĂ©dentes de produire un peu plus, quelques tableaux supplĂ©mentaires dont ils avaient finalement besoin. Dick a Ă©galement jouĂ© un rĂŽle important dans le dĂ©bogage de la section 5. [Lois Haibt (en)](https://ethw.org/Oral-History:Lois_Haibt) a rĂ©digĂ© la section 4, qui effectuait une analyse statistique de la frĂ©quence d'exĂ©cution [...] Ici, la section 4 a Ă©galement prĂ©parĂ© de nombreux tableaux pour la section 5, si je comprends bien. Sheldon Best a Ă©crit la section 5, qui a converti le programme utilisant de nombreux registres d'index en un programme en utilisant trois. Ses mĂ©thodes ont eu un impact considĂ©rable sur les travaux ultĂ©rieurs dans ce domaine et ont eu un effet majeur sur le niveau d'optimisation du compilateur. Enfin, David Sayre a rĂ©digĂ© un manuel du programmeur exceptionnellement clair et concis et a aidĂ© Dick Goldberg Ă dĂ©boguer la section 5.  _SchĂ©ma de la structure du compilateur de lâordinateur IBM 704 adaptĂ© de celui fait par Frances Allen dans les « Annals of History of Computing », Volume 6, N°1, janvier 1984 (page 24)._ De leur cĂŽtĂ©, les SoviĂ©tiques, qui fabriquaient aussi des ordinateurs, utilisaient Ă©galement des compilateurs. Dans son article sur les [ordinateurs soviĂ©tiques](https://www.persee.fr/doc/receo_0338-0599_1987_num_18_4_1331#receo_0338-0599_1987_num_18_4_T1_0055_0000), Yves LogĂ© rapporte quâils utilisaient, en 1955, les langages de compilation : PP2 â PP et BESM. Le BESM Ă©tant un ordinateur sorti en 1953. La fondatrice de la programmation thĂ©orique en Ukraine, [Katerina Yushchenko (en)](https://www.icfcst.kiev.ua/MUSEUM/theoretical.html), y a fort probablement contribuĂ©. ## Ă quoi ça sert ? En aoĂ»t 2001, dans un [entretien (en)](https://ethw.org/Oral-History: Frances_%22Fran%22_Allen#On_the_Status_of_Compilers_Today) avec Janet Abbate qui lui demandait comment elle dĂ©finirait un compilateur, Frances Allen rĂ©pondait : > Je pense quâun compilateur sert Ă traduire ce que lâutilisateur de lâapplication [...] demande [...] Ă la machine de maniĂšre Ă obtenir la bonne rĂ©ponse, mais aussi Ă utiliser au mieux les ressources de la machine. Câest ça, lâoptimisation. On peut se contenter de transposer les choses sans tirer parti des registres et de nombreuses autres unitĂ©s de calcul, mais cela ne serait pas aussi efficace. Lâoptimisation consiste donc Ă tirer parti des ressources de la machine et Ă trĂšs bien connaĂźtre cette derniĂšre. Câest en quelque sorte combler un fossĂ©, afin que lâutilisateur nâait pas besoin de tout savoir ! Plus gĂ©nĂ©ralement, un compilateur est dĂ©crit comme un programme dans un langage de haut niveau qui traduit le code-source en code objet pour le rendre exĂ©cutable en dĂ©tectant les erreurs et en lâoptimisant par la mĂȘme occasion.  _Le code source est envoyĂ© au compilateur qui le traduit en langage machine._ Les compilateurs sont des outils essentiels et trĂšs complexes qui interviennent dans tous les programmes, notamment des logiciels trĂšs critiques :>Par exemple, les programmes embarquĂ©s dans les systĂšmes bancaires, dans les systĂšmes de contrĂŽle de vol des avions, ou mĂȘme dans la chirurgie assistĂ©e par ordinateur ou les centrales nuclĂ©aires [...] : la prĂ©sence dâerreur durant leur exĂ©cution pourrait avoir des consĂ©quences dĂ©sastreuses, que ce soit en termes de vies humaines, de dĂ©gĂąts Ă©cologiques, ou de coĂ»t financier. (Delphine Demange, Semantic foundations of intermediate program representations, ThĂšse soutenue le 19 octobre 2012.) ## Comment ça marche ? RĂ©ponse rapide : avec beaucoup de mathĂ©matiques. RĂ©ponse un peu plus dĂ©taillĂ©e : Ă partir de diffĂ©rents types dâanalyses aprĂšs une phase de prĂ©-traitement qui permet de dĂ©terminer comment traiter les informations. 1. Lâ**analyse lexicale** : dĂ©coupe le code en unitĂ©s lexicales ou « tokens » qui vont permettre au compilateur de traiter les donnĂ©es par la suite. Ce faisant le compilateur sĂ©pare les diffĂ©rents types dâĂ©lĂ©ments : variables, opĂ©rateurs, sĂ©parateurs, mots-clĂ©s, etc. 1. Lâ**analyse syntaxique** : vĂ©rifie que le programme source ne contient pas dâerreur de syntaxe et que le code source est correct et, Ă©videmment le compilateur signale les erreurs quâil a pu trouver Ă ce stade. 1. Lâ**analyse sĂ©mantique** : aprĂšs la syntaxe, câest le sens du code qui est examinĂ©. Le compilateur va ainsi vĂ©rifier sâil y a des erreurs de logique, passant, que le code fait bien ce quâil est censĂ© faire. Ă ce stade, le compilateur va aussi signaler les erreurs, voire, rejeter un code incorrect. 1. Lâ**optimisation** : permet de nettoyer le code pour le rendre plus rapide Ă exĂ©cuter. Ă lâheure actuelle avec des processus trĂšs gourmands en ressources, câest une Ă©tape-clĂ©, ça nâa pas toujours Ă©tĂ© forcĂ©ment le cas. 1. La **gĂ©nĂ©ration du code final** : câest la derniĂšre phase dont le rĂ©sultat est le code exĂ©cutable. # Delphine Demange : comment vĂ©rifier que les compilateurs font leur travail correctement ## Parcours Delphine Demange entre en licence dâinformatique Ă lâuniversitĂ© de Rennes 1 en 2004. Elle y obtiendra un magistĂšre Informatique et tĂ©lĂ©communications en 2006 puis fera le mastĂšre de recherche en informatique de la mĂȘme universitĂ© en 2008. Elle achĂšvera cette partie de ses Ă©tudes par un stage de master Ă lâIRISA (Ă©quipe Celtique), en vĂ©rification de programme. Au bout des cinq mois de stage, en 2009, elle sâinscrira en thĂšse. Une thĂšse, [Fondements sĂ©mantiques des reprĂ©sentations intermĂ©diaires de programmes (en)](https://hal.science/tel-00905442v1), soutenue en 2012 et qui lui vaudra le [prix de thĂšse Gilles Kahn 2013](https://www.socinfo.fr/recherche3/prix-de-these-gilles-kahn/) de la SIF, et qui porte sur :> _la vĂ©rification formelle de logiciel_, câest-Ă -dire Ă lâensemble des techniques et dâoutils scientifiques qui permettent dâassurer quâun logiciel remplit ces exigences [de qualitĂ© des systĂšmes critiques]. (RĂ©sumĂ© Ă©tendu de sa thĂšse). Elle part ensuite pour les USA, Ă lâUniversitĂ© de Pennsylvanie pour une annĂ©e de post-doctorat. LĂ , elle travaillera sur un projet alliant vĂ©rification et sĂ©curitĂ©. De retour en France, elle passe des concours. Elle est, depuis 2013, maĂźtresse de confĂ©rence Ă lâuniversitĂ© Rennes 1. En fĂ©vrier 2024, elle donnait un cours au CollĂšge de France : [ReprĂ©sentations intermĂ©diaires pour la compilation : sâaffranchir du graphe de flot de contrĂŽle](https://www.college-de-france.fr/fr/agenda/seminaire/structures-de-controle-de-goto-aux-effets-algebriques/representations-intermediaires-pour-la-compilation-affranchir-du-graphe-de-flot-de-controle). On peut retrouver ses communications et articles ainsi que sa thĂšse, toutes en anglais, sur [HAL science ouverte](https://hal.science/search/index/?q=%2A&rows=30&authFullName_s=Delphine+Demange&sort=publicationDate_tdate+asc). ## La vĂ©rification des logiciels Comme elle le dit en rĂ©sumĂ© de sa thĂšse :>Nos vies quotidiennes dĂ©pendent de plus en plus, sans mĂȘme parfois que nous nous en rendions compte, de lâutilisation de programmes informatiques. Ces programmes nâont toutefois pas tous le mĂȘme niveau de criticitĂ©. Par exemple, les programmes embarquĂ©s dans les systĂšmes bancaires, dans les systĂšmes de contrĂŽle de vol des avions, ou mĂȘme dans la chirurgie assistĂ©e par ordinateur ou les centrales nuclĂ©aires sont appelĂ©s systĂšmes critiques : la prĂ©sence dâerreur durant leur exĂ©cution pourrait avoir des consĂ©quences dĂ©sastreuses, que ce soit en termes de vies humaines, de dĂ©gĂąts Ă©cologiques, ou de coĂ»t financier. Ce type de programme requiert donc de fortes garanties : leur exĂ©cution ne devrait pas Ă©chouer, et leur correction fonctionnelle devrait ĂȘtre garantie. Elle ajoute plus loin que les compilateurs Ă©tant des logiciels, ils sont Ă leur tour susceptibles dâavoir des bugs comme nâimporte quel autre programme. Il est donc nĂ©cessaire quâils rĂ©pondent aux mĂȘmes exigences infaillibilitĂ© que les systĂšmes critiques sur lesquels ils travaillent. Dans un [entretien](https://www.ens-rennes.fr/actualites/prix-distinctions/entretien-avec-delphine-demange#) accordĂ© au site de lâuniversitĂ© de Rennes en 2014, elle prĂ©cise que son travail a pour but final :>dâassurer, par une preuve mathĂ©matique et assistĂ©e par ordinateur, que les compilateurs compilent correctement les programmes (i.e. ils nâajoutent pas de nouveaux comportements aux programmes), et que les vĂ©rifieurs calculent des propriĂ©tĂ©s sur des modĂšles corrects des programmes (si le modĂšle du programme ne comporte pas dâerreur, alors le programme dâorigine nâen comporte pas non plus). Ses travaux de thĂšse portant les reprĂ©sentations intermĂ©diaires (IR) des programmes sur lesquels travaillent les compilateurs et vĂ©rificateurs. Ces IR simplifient les analyses de ces outils qui peuvent analyser des programmes trĂšs complexes. Elle continue, depuis, ses recherches dans le mĂȘme domaine avec :> la vĂ©rification des techniques de compilation optimisantes pour les langages de haut-niveau, en y incluant les aspects les plus difficiles des langages modernes, comme la gestion de la mĂ©moire, la concurrence et les modĂšles de mĂ©moire faibles. (entretien, UniversitĂ© de Rennes). Tout cela demande beaucoup de mathĂ©matique, parfait pour quelquâun qui a hĂ©sitĂ© entre les maths et lâinformatique. # Quelques autres sources dâinformation Sur les compilateurs, internet est bien pourvu en ressources en français sur le sujet, par exemple : â [Compilation informatique : dĂ©finition concrĂšte et rĂŽle](https://www.journaldunet.fr/web-tech/dictionnaire-du-webmastering/1445284-compilation-informatique-definition-concrete-et-role/), Journal du net, 2016, â [Comment fonctionnent les compilateurs](https://www.ibm.com/fr-fr/think/topics/compiler), IBM, [sd], â [Quâest-ce quâune conception de compilateur ? Types, outils de construction, exemple](https://www.guru99.com/fr/compiler-design-tutorial.html), Kaia CĂ©rulĂ©en, GURU99, [septembre 2025 ?], â [Cours de compilation](http://gallium.inria.fr/~maranget/X/compil/poly/poly001.html), [sd], â [Compilation](https://elearning.centre-univ-mila.dz/a2026/course/view.php?id=1331), pdf Ă tĂ©lĂ©charger, â [Langages de programmation et compilation](https://usr.lmf.cnrs.fr/~jcf/ens/compil/2016-2017/cours/cours2-handout.pdf), Jean-Christophe FilliĂątre, septembre 2016, â [ReprĂ©sentations intermĂ©diaires pour la compilation : sâaffranchir du graphe de flot de contrĂŽle](https://www.college-de-france.fr/fr/agenda/seminaire/structures-de-controle-de-goto-aux-effets-algebriques/representations-intermediaires-pour-la-compilation-affranchir-du-graphe-de-flot-de-controle), cours au CollĂšge de France, 15 fĂ©vrier 2024 â [Fondements sĂ©mantiques des reprĂ©sentations intermĂ©diaires de programmes](https://hal.science/tel-00905442v1), thĂšse, en anglais, de Delphine Demange. Sinon on peut aussi lire ou relire [lâhommage Ă France Allen](https://linuxfr.org/news/hommage-a-frances-allen) sur LinuxFr. Il y a aussi, en anglais, cet article [Early Computers and Computing Institutions (en)](https://ieeexplore.ieee.org/document/4392948) qui raconte les dĂ©buts de FORTRAN. Câest trĂšs intĂ©ressant. Mais il faut soit lâacheter (15,50 dollars pour les membres ou 30 dollars pour les non-membres) ou faire partie dâune structure adhĂ©rente. # Questions et remerciements Compte de tenu de lâimportance des compilateurs, la question se pose de la raison pour laquelle la personne qui a Ă©tĂ© Ă lâorigine du premier compilateur et du COBOL, Grace Murray Hopper (1906-1992) nâa pas reçu le prix Turing pourtant créé de son vivant, en 1966, et Ă une Ă©poque oĂč elle Ă©tait encore active. Le rĂ©cipiendaire du prix Turing 1966 ayant dâailleurs Ă©tĂ© Alan J. Perlis pour la construction de compilateurs. Question complĂ©mentaire, pourquoi France Allen nâa reçu son prix Turing quâen 2006 « pour ses contributions pionniĂšres Ă la thĂ©orie et Ă la pratique des techniques utilisĂ©s par les compilateurs optimiseurs qui ont jetĂ© les bases des compilateurs optimiseurs modernes et de lâexĂ©cution parallĂšle automatique. » [Frances ("Fran") Elizabeth Allen. A.M. Turing Award 2006 (en)](https://amturing.acm.org/award_winners/allen_1012327.cfm), alors quâelle avait pris sa retraite depuis 2002. Elle reste toujours aussi importante : un de ses textes de 1970 fait partie de la bibliographie de la thĂšse de Delphine Demange. DerniĂšre question, dans son discours de remise du prix Turing en 2007, Frances Allen disait quâaprĂšs une phase de stagnation des compilateurs, on devrait avoir une phase de progrĂšs significatifs dans le domaine. Est-ce que vous avez une idĂ©e de ce Ă quoi elle aurait pu penser ? Un trĂšs grand merci Ă [vmagnin](https://linuxfr.org/users/vmagnin) pour son aide et les documents quâil mâa envoyĂ©s pour mâaider Ă rĂ©diger cette dĂ©pĂȘche.