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). ![Bandeau JournĂ©e Ada Lovelace, la photo vectorisĂ©e d’Ada sur fond d’un de ses manuscrits dans des tons sĂ©pia](https://img.linuxfr.org/img/68747470733a2f2f692e6962622e636f2f5a634e36306d392f6a6f75726e65652d6164612d6c6f76656c6163652e77656270/journee-ada-lovelace.webp) ---- [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. ![Structure d’un compilateur : 1 dĂ©clarations identifieur et traducteur, 2 analyse indice et dĂ©claration DO, 3 Interface entre 1 et 4, 4 anlyseur de flux de contrĂŽle, 5 allocateur de registre global, 6 assemblage final ](https://i.ibb.co/99Z4jYpX/compilateur-allen.webp) _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. ![SchĂ©ma d’un compilateur](https://i.ibb.co/yzGXCGP/compilateur.webp) _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.

AltStyle ă«ă‚ˆăŁăŠć€‰æ›ă•ă‚ŒăŸăƒšăƒŒă‚ž (->ă‚ȘăƒȘă‚žăƒŠăƒ«) /