Delphine Demange et les compilateurs

38
17
oct.
2025
Science

Cette annĂ©e, la date de la journĂ©e Ada Lovelace, 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. En 2024, cela avait donnĂ© lieu Ă  une mini-sĂ©rie sur la participation des femmes Ă  la conquĂȘte de l’espace. Cette annĂ©e, on se penchera sur les compilateurs, créés par Grace Hopper, et qui ont valu Ă  Frances Allen un prix Turing en 2006 et on dressera le portrait de Delphine Demange, laurĂ©ate du prix Gilles Kahn 2013.

Bandeau JournĂ©e Ada Lovelace, la photo vectorisĂ©e d’Ada sur fond d’un de ses manuscrits dans des tons sĂ©pia

Sommaire

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 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 pour l’IBM 701 et lancĂ© en 1957. La mĂȘme annĂ©e oĂč IBM embauche 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) 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
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, 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), y a fort probablement contribuĂ©.

À quoi ça sert ?

En août 2001, dans un entretien (en) 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
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.
  2. 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.
  3. 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.
  4. 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.
  5. 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), soutenue en 2012 et qui lui vaudra le prix de thĂšse Gilles Kahn 2013 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.

On peut retrouver ses communications et articles ainsi que sa thĂšse, toutes en anglais, sur HAL science ouverte.

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 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, Journal du net, 2016,
— Comment fonctionnent les compilateurs, IBM, [sd],
— Qu’est-ce qu’une conception de compilateur ? Types, outils de construction, exemple, Kaia CĂ©rulĂ©en, GURU99, [septembre 2025 ?],
— Cours de compilation, [sd],
— Compilation, pdf Ă  tĂ©lĂ©charger,
— Langages de programmation et compilation, Jean-Christophe Filliñtre, septembre 2016,
— ReprĂ©sentations intermĂ©diaires pour la compilation : s’affranchir du graphe de flot de contrĂŽle, cours au CollĂšge de France, 15 fĂ©vrier 2024
— Fondements sĂ©mantiques des reprĂ©sentations intermĂ©diaires de programmes, thĂšse, en anglais, de Delphine Demange.

Sinon on peut aussi lire ou relire l’hommage Ă  France Allen sur LinuxFr. Il y a aussi, en anglais, cet article Early Computers and Computing Institutions (en) 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), 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 pour son aide et les documents qu’il m’a envoyĂ©s pour m’aider Ă  rĂ©diger cette dĂ©pĂȘche.

Aller plus loin

  • # Prix Turing et Grace Hopper

    Posté par  . Évalué à 10 (+12/-0).

    Sommaire

    De l'attribution du prix Turing

    Pourquoi Alan Perlis et pas Hopper ? Parce que c'est lui qui a fourni un premier compilateur fonctionnel (qui prend un programme de « haut niveau » — si j'ai bien compris, il s'agissait de formules mathĂ©matiques — en entrĂ©e et gĂ©nĂšre du code machine en sortie).

    Grace Hopper a proposĂ© le premier langage (et le compilateur associĂ©) « pour humains » je dirais, et que je qualifierais de « gĂ©nĂ©raliste » (mĂȘme si je pense que le langage créé par Perlis Ă©tait aussi Turing-complet). C'est l'une des premiĂšres personnes Ă  insister sur la notion de lisibilitĂ© des programmes (au sens d'avoir un programme Ă©crit « en anglais », ou quelque chose d'approchĂ©), et trĂšs clairement la premiĂšre Ă  avoir menĂ© Ă  bien ce projet.

    Par contre, il existe un prix Hopper (et Ă  ma connaissance pas de Prix Perlis), qui rĂ©compense une contribution unique et majeure accomplie avant 35 ans. Bon, il a Ă©tĂ© créé aprĂšs la mort de Grace Hopper, et ça fait un peu guise de mea culpa de la part de l'ACM, mais peu de personnes peuvent se targuer d'avoir un prix Ă  leur nom (mĂȘme de façon posthume). Il y a aussi un Prix Hopper dĂ©cernĂ© « en interne » par la marine US pour les femmes qui ont des contributions majeures dans le numĂ©rique/l'informatique.

    Concernant le cĂŽtĂ© tardif des remises de prix, honnĂȘtement ça dĂ©pend aussi parfois de l'Ăšre du temps. L'un des deux co-rĂ©cipiendaires en 2025, Charles Sutton, rĂ©compensĂ© pour ses travaux sur l'apprentissage renforcĂ© (sur lequel il publie depuis les annĂ©es 70, et qui a de vraies applications depuis longtemps), est bien plus vieux que Yann Le Cun (2015), rĂ©compensĂ© pour son travail sur l'apprentissage profond de rĂ©seaux de neurones artificiels (et de mĂ©moire, il a commencĂ© Ă  publier dessus vers 1989).

    Enfin, concernant les progrÚs en compilation, il y a beaucoup de choses en ce qui concerne les compilateurs optimisants. La parallélisation automatique « générale » ne fonctionne pas (ou pas bien), ou bien est limitée au cas « triviaux » (sur des programmes qui respectent des propriétés facilement déterminées à la compilation). Je vais BEAUCOUP simplfier dans ce qui suit.

    ModÚle polyédrique

    Par contre, il y a eu beaucoup de travaux sur l'optimisation et la parallélisation automatique de certains types de programmes, en particulier l'optimisation sur des nids de boucles imparfaits. Il s'agit d'optimisations reposant sur le modÚle polyédrique. L'idée est que si des boucles imbriquées dans un programme respectent certaines propriétés bien spécifiques (notamment qu'on peut garantir le « sens » dans lequel les tableaux utilisés dans ces nids de boucles est « monotone », c'est-à-dire que l'accÚs est toujours croissant ou décroissant), alors il est possible de créer une représentation de l'espace d'itération de ces boucles sous forme de polyÚdre, et les points qui le composent sont les points de l'espace d'itération. On peut ensuite « tordre » ce polyÚdre pour changer l'ordre des boucles, dérouler certaines boucles, fusionner certaines instructions, etc., en fonction des contraintes d'optimisation voulues (taille du code, rapidité du programme, etc.).

    Le modÚle (et les premiÚres implémentations semi-automatisées) a été proposé par Paul Fautrier dans les années 80. Il a co-écrit un article dans « Encyclopedia of Computer Science » qui résume l'approche. On peut trouver une version complÚte sur ResearchGate.

    Il y a eu beaucoup de recherche en France, mais tout Ă©tait trĂšs thĂ©orique, et quand c'Ă©tait vraiment implĂ©mentĂ©, c'Ă©tait surtout des implĂ©mentations faites Ă  la main pour montrer que les algos marchaient. Courant des annĂ©es 2000, certaines implĂ©mentations dans des compilateurs (GCC avait une branche dĂ©diĂ©e, mais qui a mis beaucoup de temps a ĂȘtre fusionnĂ© avec le tronc commun ; clang/llvm a eu des implĂ©mentations trĂšs rapidement). Ironiquement, pas mal de profs qui travaillent Ă  Ohio State University ont fait leur postdoc dans des labos français fin des annĂ©es 80/courant 90, et ont fait ce que les français n'ont pas su : ils ont implĂ©mentĂ© le modĂšle polyĂ©drique dans un compilateur dĂšs le dĂ©but des annĂ©es 2000. Depuis, le modĂšle est disponible dans LLVM, et il me semble qu'il n'est plus nĂ©cessaire d'activer explicitement une option pour que ce soit utilisĂ©.

    Le modĂšle polyĂ©drique permet non seulement l'optimisation du code concernĂ©, mais aussi la parallĂ©lisation automatique lorsqu'il s'applique. Cependant, pour paraphraser Feautrier, « Malheureusement le modĂšle polyĂ©drique ne s'applique qu'aux polyĂšdres. » Un programme qui fait des accĂšs indirects Ă  une liste ou un tableau (A[B[i]]) ne peut ĂȘtre optimisĂ© grĂące au modĂšle polyĂ©drique, car le compilateur est a priori incapable de garantir la monotonie des accĂšs au tableau A dans mon exemple. Il existe des compilateurs (commerciaux) qui proposent d'annoter le code pour donner les infos nĂ©cessaires aux compilateurs optimisants reposant sur le modĂšle polyĂ©drique pour l'aider Ă  savoir quand il est possible de l'utiliser.

    Renouveau des langages fonctionnels pour exploiter le parallélisme

    Parmi les autres choses que je peux voir, c'est qu'avec la gĂ©nĂ©ralisation du parallĂ©lisme dans les ordinateurs (Ă  cause de la venue des processeurs multicƓurs vers 2004, et leur gĂ©nĂ©ralisation vers la fin des annĂ©es 2000), tout un tas de langages, notamment fonctionnels, ont vu leur utilisation augmenter, mais aussi la recherche liĂ©e aux langages fonctionnels a aussi repris du poil de la bĂȘte (au moins Ă  l'Ă©poque). La raison Ă©tant que les langages fonctionnels ont tendance Ă  moins s'appuyer sur un Ă©tat global du programme, ce qui veut dire que lorsqu'on crĂ©e des tĂąches pour s'exĂ©cuter en parallĂšle sur un systĂšme multiprocesseurs/multicƓurs, alors il y a moins de risques de conflits, car les zones mĂ©moires partagĂ©es sont moins grandes et moins nombreuses.

    LLVM en général

    LLVM est Ă  la base un projet de compilateur financĂ© par la NSF aux US (dĂ©but des annĂ©es 2000). Bien qu'il y ait des contributions au domaine de la compilation qui en sont dĂ©rivĂ©s, le projet en lui-mĂȘme Ă©tait innovant en termes d'architecture logicielle (et de gĂ©nie logiciel) : il s'agissait d'intĂ©grer dans un mĂȘme cadre toutes les techniques d'optimisation ayant un impact positif significatif, et de proposer une architecture modulaire permettant de facilement intĂ©grer de nouvelles passes de compilation (il y a aussi eu pas mal de publications sur la reprĂ©sentation interne du graphe de reprĂ©sentation des programmes donnĂ©s en entrĂ©e Ă  LLVM).

    L'impact de LLVM sur la recherche en compilation est extrĂȘmement important. En proposant un logiciel raisonnablement bien documentĂ©, et trĂšs bien architecturĂ©, cela a permis Ă  beaucoup de gens (Ă©tudiant-e-s en info « éclairĂ©s », technicien-ne-s/ingĂ©nieur-e-s, et bien entendu chercheurs et chercheuses dont c'est le mĂ©tier) d'explorer et d'expĂ©rimenter pour l'optimisation de code, lĂ  oĂč franchement, avec GCC, c'Ă©tait bien plus galĂšre.

    C'en est au point que les compilateurs d'Intel et Nvidia/PGI, et je crois aussi celui de Microsoft, sont tous basés sur LLVM (bien entendu il y a des histoires de licences aussi, mais pas que).

    LLVM innove beaucoup grĂące Ă  son systĂšme de reprĂ©sentation intermĂ©diaire. L'IR de base reprend les « bonnes pratiques » pour un compilo, mais est aussi super facilement extensible (toutes proportions gardĂ©es — on parle d'un compilateur quand mĂȘme). RĂ©cemment (vers 2019 ?) il a Ă©tĂ© proposĂ© MLIR, qui est une sorte de moyen de crĂ©er ses propres reprĂ©sentations intermĂ©diaires dans LLVM, exprimĂ©es Ă  partir de l'IR de LLVM. Ça permet de rajouter des opĂ©rations et opĂ©rateurs utiles pour certains domaines (par exemple, la prise en compte de tenseurs pour des programmes qui s'en servent, comme les logiciels gĂ©nĂ©rant des modĂšles d'apprentissage profond).

    Je suis pas mal Ă  la ramasse sur tout ce qui s'est passĂ© depuis 10-15 ans, du peu que j'ai suivi, Fran Allen avait bien raison en 2007 : il y avait un gros bouillonnement liĂ© Ă  l'arrivĂ©e des multicƓurs et manycores. :-)

    • [^] # Re: Prix Turing et Grace Hopper

      Posté par  (site web personnel, Mastodon) . Évalué à 5 (+3/-1). DerniĂšre modification le 18 octobre 2025 Ă  16:49.

      Merci pour ce commentaire. Je ne suis pas trĂšs convaincue par les explications, prĂ©cautionneuses, sur le prix Turing cela dit 🙂

      J'apprécie vraiment le topo sur l'évolution des compilateurs et de l'optimisation que je pense avoir à peu prÚs compris. Sachant que les compilateurs sont quelque chose de trÚs complexe, avec des langages de trÚs haut niveau, j'imagine bien que c'est trÚs trÚs simplifié. Mais je pense que cela est une bonne base pour avoir envie d'en apprendre plus au besoin et pour savoir de quoi on parle le reste du temps.

      Et enfin, un grand merci pour enfin avoir rĂ©pondu Ă  cette question qui me turlupinait depuis 2020 sur les progrĂšs des compilateurs Ă  venir en 2007 aprĂšs une phase de stagnation (ça ne m'a pas empĂȘchĂ© de dormir, mais c'est bien de le savoir).

      Je n’ai aucun avis sur systemd

    • [^] # Re: Prix Turing et Grace Hopper

      Posté par  (site web personnel) . Évalué à 3 (+1/-0).

      Lire la partie dĂ©diĂ©e Ă  LLVM de votre commentaire m’évoque l’idĂ©e que le succĂšs de ce compilateur est aussi liĂ© Ă , si j’ai bien compris, une rare forme d’enshittification « pour la bonne cause : » la direction de gcc ne souhaitant pas adopter une architecture plus moderne qui aurait facilitĂ© les travaux et intĂ©grations diverses. Comme quoi, mĂȘmes causes mĂȘmes effets, position dominante -> dĂ©gradations volontaires. Ce n’est pas rĂ©servĂ© aux amis de Donald.

      « IRAFURORBREVISESTANIMUMREGEQUINISIPARETIMPERAT » — Odes — Horace

      • [^] # Re: Prix Turing et Grace Hopper

        Posté par  (site web personnel) . Évalué à 4 (+1/-0).

        une rare forme d’enshittification « pour la bonne cause

        Cela parait un peu abusif de qualifier ainsi un comportement assez passif, si j'ai bien suivi. Je ne qualifierai pas le vieillissement de merdification ou l'accumulation de la poussiĂšre : parce qu'il suffit de ne rien faire. Pour gcc ça semblerait plus Ă  une sclĂ©rose, quelle que soit la raison (ou les raisons), entre manque de contributions, rĂ©trocompatibilitĂ©, dette technique, gouvernance, feuille de route, prioritĂ©s diffĂ©rentes, etc. À noter que llvm a aussi fait progresser gcc en rĂ©action.

        • [^] # Re: Prix Turing et Grace Hopper

          Posté par  (site web personnel) . Évalué à 2 (+0/-0).

          OK. Vous en savez sûrement plus long que moi sur le sujet. J'avais cru lire quelque part dans ces colonnes qu'il y avait eu refus explicite et répété de la part de la direction du projet pour les raisons évoquées ci-avant ? Mais j'aurais bien du mal à citer la moindre source, et le sujet sort totalement de mon domaine de compétences.

          « IRAFURORBREVISESTANIMUMREGEQUINISIPARETIMPERAT » — Odes — Horace

          • [^] # Re: Prix Turing et Grace Hopper

            Posté par  (site web personnel, Mastodon) . Évalué à 6 (+3/-0).

            Le développement de llvm a accéléré surtout suite au passage de gcc à la license GPL version 3. Apple (gros utilisateur et contributeur historique de gcc) n'a pas validé l'utilisation de cette license pour l'intégration dans Mac OS, les clauses sur les brevets étant jugées trop contraignantes pour eux.

            Pour d'autres parties de leur systÚme ils ont pu trouver un remplacement (par exemple, bash a été remplacé par zsh). Mais pour le compilateur, il n'y avait pas d'autre choix que llvm, projet peu connu à l'époque mais qui fournissait un point de départ acceptable.

            Ce n'est pas la peine de chercher une raison plus loin, même si les critiques sur gcc Ă  l'Ă©poque (refus d'intĂ©grer du C++ dans la base de code pour mieux la structurer, par exemple) peuvent être justifiĂ©es.

            • [^] # Re: Prix Turing et Grace Hopper

              Posté par  (site web personnel) . Évalué à 4 (+2/-0).

              « Le développement de llvm a accéléré surtout suite au passage de gcc à la license GPL version 3. Apple (gros utilisateur et contributeur historique de gcc) n'a pas validé l'utilisation de cette license pour l'intégration dans Mac OS, les clauses sur les brevets étant jugées trop contraignantes pour eux. »

              Histoire d'ĂȘtre certains qu'il n'y ait pas de quiproquo, ce que mon commentaire qualifie --- peut-ĂȘtre Ă  tort --- d''enshittification de gcc ce n'est assurĂ©ment pas le passage Ă  la GPL v3 ; bien au contraire. Que le libre fasse hurler et fuir les acteurs principaux et acharnĂ©s de ce phĂ©nomĂšne, comme la lumiĂšre les vampires, est tout sauf un corollaire inattendu.

              « IRAFURORBREVISESTANIMUMREGEQUINISIPARETIMPERAT » — Odes — Horace

              • [^] # Re: Prix Turing et Grace Hopper

                Posté par  (site web personnel) . Évalué à 3 (+1/-0).

                ce que mon commentaire qualifie --- peut-ĂȘtre Ă  tort --- d''enshittification de gcc

                ce Ă  quoi on te rĂ©pond qu'il n'y en a pas — contrairement Ă  ce que tu affirmes — de merdification : il y a au contraire une volontĂ© de gĂ©rer la dette technique (avec ses limites, mauvaise volontĂ© parfois, trop d'impacts, structure de greffons rajoutĂ©e en surcouche et non pensĂ©e dĂšs le dĂ©but : qui aurait pensĂ© ajouter cobol, fortran, ada au dĂ©but Ă  gcc, dĂ©jĂ  c++ semblait cohĂ©rent
).

                LLVM a permis de redonner une dynamique et c'est une émulation saine (autant avoir plusieurs compilateurs multi-plateformes : arm, mips, risc-v, x86
)

                • [^] # Re: Prix Turing et Grace Hopper

                  Posté par  (site web personnel) . Évalué à 2 (+0/-0).

                  Ce à quoi on me répond aussi :

                  « Absolument. Dans le cas de GCC, certaines branches dont les fonctionnalitĂ©s avaient Ă©tĂ© correctement dĂ©buggĂ©es et validĂ©es par leurs dĂ©veloppeurs avaient Ă©tĂ© mises de cĂŽtĂ© pendant un trĂšs long moment. Et quand les mĂȘmes ont Ă©tĂ© dĂ©veloppĂ©es dans Clang/LLVM, l'Ă©quipe de devs de GCC a accĂ©lĂ©rĂ© l'intĂ©gration de fonctionnalitĂ©s qui Ă©taient en attente de merge depuis un moment. »

                  « C'est directement du à Stallman qui voulait volontairement conserver cet aspect obscur afin de permettre la viralité du code gpl. »


                  « LLVM a permis de redonner une dynamique et c'est une Ă©mulation saine (autant avoir plusieurs compilateurs multi-plateformes : arm, mips, risc-v, x86
) »

                  LĂ  dessus aussi nous sommes bien d'accord :-).

                  « IRAFURORBREVISESTANIMUMREGEQUINISIPARETIMPERAT » — Odes — Horace

            • [^] # Re: Prix Turing et Grace Hopper

              Posté par  . Évalué à 6 (+4/-0).

              Absolument. Dans le cas de GCC, certaines branches dont les fonctionnalitĂ©s avaient Ă©tĂ© correctement dĂ©buggĂ©es et validĂ©es par leurs dĂ©veloppeurs avaient Ă©tĂ© mises de cĂŽtĂ© pendant un trĂšs long moment. Et quand les mĂȘmes ont Ă©tĂ© dĂ©veloppĂ©es dans Clang/LLVM, l'Ă©quipe de devs de GCC a accĂ©lĂ©rĂ© l'intĂ©gration de fonctionnalitĂ©s qui Ă©taient en attente de merge depuis un moment.

              Je trouve cependant assez parlant que GCC ne se soit officiellement Ă©quipĂ© d'un systĂšme de plugins que depuis 2016, lĂ  oĂč LLVM dispose de cela depuis presque le dĂ©but1. Certes, une partie est due Ă  de la dette technique, mais il me semble aussi beaucoup Ă  un certain conservatisme de la part des mainteneurs de GCC.


              1. J'exagĂšre bien entendu, mais pas tant que ça. La modularitĂ© est au cƓur du dĂ©veloppement de LLVM. ↩

      • [^] # Re: Prix Turing et Grace Hopper

        Posté par  . Évalué à 3 (+2/-1).

        la direction de gcc ne souhaitant pas adopter une architecture plus moderne qui aurait facilité les travaux et intégrations diverses.

        C'est directement du à Stallman qui voulait volontairement conserver cet aspect obscur afin de permettre la viralité du code gpl. Un compilo plus simple à comprendre aurait permis de découper bibliothÚques et programmes, ce qu'il ne voulait pas car cela aurait permis des bibliothÚques non libres dans des programmes libres.

        Il ne s'agit pas d'enshitification, mais de frein à la rétroingénierie pour permettre la diffusion de code GPL.

        Et forcément j'avais un super article qui en parlait mais je ne met plus la main dessus, c'est google qui s'enshittifie :-(

        • [^] # Re: Prix Turing et Grace Hopper

          Posté par  (site web personnel, Mastodon) . Évalué à 5 (+2/-0).

          Ces histoires remontent assez loin, en fait la question s'est posĂ©e pour le frontend Objective-C de gcc avant 1992, avec une explication de Stallman lui-mĂȘme ici:

          https://github.com/JoshCheek/clisp/blob/master/doc/Why-CLISP-is-under-GPL#L360

          Mais je ne sais pas à quel point cela était toujours dans la culture de gcc par la suite. Il y avait déjà eu une "crise" à l'époque du passage de gcc2 à gcc3 avec le projet EGCS (c'est donc vers 1996-1998), un fork de gcc avec une gouvernance plus ouverte, qui a fini par devenir le gcc "officiel".

          • [^] # Re: Prix Turing et Grace Hopper

            Posté par  (site web personnel) . Évalué à 3 (+1/-0). DerniĂšre modification le 22 octobre 2025 Ă  09:29.

            Je me souviens des deux évÚnements.

            Malgré tout le respect qu'on doit à GCC et à Stallman pour avoir démarré ce projet brillant, c'est un projet qui a aussi ses imperfections. M. Stallman n'est pas exempt crises d'égo notamment (arf).

            Quand on pense qu'en 2025, il n'a toujours pas digéré que Linux marche mieux que GNU Hurd


            • [^] # Re: Prix Turing et Grace Hopper

              Posté par  . Évalué à 3 (+1/-0).

              Quand on pense qu'en 2025, il n'a toujours pas digéré que Linux marche mieux que GNU Hurd


              DigĂ©rĂ© je ne sais pas, mais mĂȘme lui a conscience que Linux marche mieux vu que c'est ce qu'il utilise : « As of 2022 I use a Thinkpad x200 computer, which has a free initialization program (Libreboot) and a free operating system (Trisquel GNU/Linux). »

Envoyer un commentaire

Suivre le flux des commentaires

Note : les commentaires appartiennent Ă  celles et ceux qui les ont postĂ©s. Nous n’en sommes pas responsables.