Aller au contenu
UnIFondation UnI

This section is only available in French.Aquesta secció només existeix en francès.Esta sección solo existe en francés.This section is only available in French.

F13 · N syntaxes, un seul graphe

Le pivot multi-langages

Plusieurs langages entrent, un seul graphe d'opérations sort — et deux syntaxes différentes qui disent la même chose donnent la même graine, à l'octet.

01

Ce que c'est

Les outils qui manipulent du code partent en général d'un arbre de syntaxe, donc d'un arbre par langage, donc d'un outillage par langage. Ici les frontends convergent vers une seule représentation : un graphe d'opérations, commun à tous.

La conséquence est vérifiable et inhabituelle : deux programmes écrits dans deux syntaxes différentes, qui font la même chose, produisent la même graine à l'octet près. Ce n'est pas une équivalence déclarée, c'est une égalité binaire.

Le code peut alors voyager en graine, la syntaxe d'origine effacée, et être relu ensuite de façon byte-exacte.

02

Les points clés

Un graphe, pas N arbres
Les outils d'analyse s'écrivent une fois, pas une fois par langage.
Convergence vérifiable
Deux syntaxes équivalentes ⇒ la même graine à l'octet.
Le code voyage en graine
La syntaxe d'origine est effacée ; la relecture reste byte-exacte.
03

Quatre points de vue

◐ Ce que ça change à l'écran

Qu'est-ce que je vois, et qu'est-ce que je fais autrement ?

Vous ouvrez du code dans une langue que l'outil n'était pas censé connaître, et il le comprend quand même — parce qu'il ne raisonne pas sur la langue mais sur ce qu'elle dit.

⌥ Brancher ça chez soi

Par où ça entre dans mon logiciel, et qu'est-ce que ça me coûte ?

Vous écrivez votre analyse une fois, contre le graphe, pas une fois par langage contre un arbre de syntaxe. Ajouter un langage n'oblige pas à réécrire l'outil qui le consomme.

◆ Ce que ça vous fait gagner

Quel risque ça lève, et qu'est-ce qui est vérifiable ?

Le coût d'un outillage multi-langages est habituellement multiplicatif : un outil par langage, à maintenir chacun. Ici il est additif d'un côté seulement — les frontends — et fixe de l'autre.

✻ Pourquoi ça marche

Quel est le principe, et en quoi il diffère de l'existant ?

L'arbre de syntaxe est tellement le point de départ par défaut qu'on ne le présente plus comme un choix. En le remplaçant par un graphe d'opérations, la syntaxe redevient ce qu'elle est : un habillage de surface, pas la structure.

04

À quoi ça sert

  • Outillage d'analyse qui doit couvrir plusieurs langages sans se dupliquer
  • Migration et archivage de code indépendants de la syntaxe
  • Comparaison de programmes au-delà de leur écriture
05

Ce que ça ne fait pas

  • Six frontends, ce n'est pas « tous les langages ». Chaque langage supplémentaire est un travail réel, pas un réglage.
  • L'égalité byte-exacte entre deux syntaxes est établie sur les cas essayés ; elle n'est pas un théorème, et elle ne le sera pas.
  • Le voyage du code en graine est câblé mais éteint par défaut : il s'allume, il ne se rencontre pas tout seul.
06

Lectures disciplinaires

⧉ Économie
Le coût d'un outillage multi-langages est habituellement multiplicatif : un outil par langage, chacun à maintenir, chacun à faire évoluer. Ici il devient additif d'un seul côté — les frontends — et fixe de l'autre. C'est une bascule de structure de coût, pas une remise.
✦ Philosophie
L'arbre de syntaxe est un point de départ si universel qu'il a cessé de se présenter comme un choix. Le remplacer par un graphe d'opérations remet la syntaxe à sa place : un habillage de surface, et non la structure de ce qui est dit. Deux écritures différentes du même geste cessent alors d'être deux objets qui se ressemblent — elles deviennent le même objet.
✑ Langue & transmission
Une seule représentation pour plusieurs langues, c'est très exactement ce qu'une langue pivot fait en traduction : on ne traduit pas de chaque langue vers chaque autre, on passe par un intermédiaire commun. Le nombre de chemins à écrire cesse de croître au carré du nombre de langues.