T09 · Ingénierie pratique CAKE© · Chapitre 5 / 11

Transformer les architectures

Une intention, un arbre, plusieurs langages : la transfiguration

Transformer une architecture, ce n'est pas traduire du texte ligne à ligne. C'est partir de l'arbre — l'intention débarrassée de sa syntaxe — et l'exprimer à nouveau dans une autre langue. C'est ce que la bibliothèque appelle la transfiguration.

La lignée CAKE© a déjà démontré le principe à grande échelle : l'atelier XitWork Studio, ancêtre de CakeLand, régénérait un même arbre dans quatorze langages. Le moteur CakeLang actuel ne contient pas encore de générateur ; les équivalents ci-dessous sont donc écrits à la main, et étiquetés comme tels. Ce qui compte ici est la correspondance, nœud pour nœud, entre l'arbre et chaque langage.


Le même contrôle de sas, quatre fois

L'intention en C%

Source C% · t09c05-a.cake
=: pression=92.5%
=: seuil=95.0%
=: ouvert=false%
=$ (pression<seuil) {
  |> "Sas verrouille"%
}
=$! {
  := ouvert=true%
  |> "Sas ouvert"%
}
Sortie réelle du moteur
Sas verrouille
Équivalent C# · écrit à la main, non généré par le moteur
double pression = 92.5;
double seuil = 95.0;
bool ouvert = false;
if (pression < seuil)
    Console.WriteLine("Sas verrouille");
else {
    ouvert = true;
    Console.WriteLine("Sas ouvert");
}
Équivalent TypeScript · écrit à la main, non généré par le moteur
let pression = 92.5;
let seuil = 95.0;
let ouvert = false;
if (pression < seuil) {
  console.log("Sas verrouille");
} else {
  ouvert = true;
  console.log("Sas ouvert");
}
Équivalent C++ · écrit à la main, non généré par le moteur
double pression = 92.5;
double seuil = 95.0;
bool ouvert = false;
if (pression < seuil) {
    std::cout << "Sas verrouille\n";
} else {
    ouvert = true;
    std::cout << "Sas ouvert\n";
}
Arbre syntaxique sérialisé en CXML par l'analyseur
<projet nom="t09c05-a" package="com.unibool.script" type="Library">
  <classe nom="Root" visibilite="Public">
    <methode nom="main" retour="void" visibilite="Public">
      <bloc>
        <declaration nom="pression" type="var" valeur="92.5"/>
        <declaration nom="seuil" type="var" valeur="95.0"/>
        <declaration nom="ouvert" type="var" valeur="false"/>
        <si condition="pression&lt;seuil">
          <alors>
            <bloc>
              <appel methode="println" args="&quot;Sas verrouille&quot;"/>
            </bloc>
          </alors>
          <sinon>
            <bloc>
              <affectation cible="ouvert" valeur="true"/>
              <appel methode="println" args="&quot;Sas ouvert&quot;"/>
            </bloc>
          </sinon>
        </si>
      </bloc>
    </methode>
  </classe>
</projet
Traçabilité — opcodes : =: déclarations · =$ flux · |> entrées/sorties · =$! flux · := déclarations
nœuds d'arbre : déclaration, si, appel, sinon, affectation · empreinte d'arbre 63b542e1be851235 (reproductible : cake hash t09c05-a.cake)
vérifié le 2026-09-23 dans le moteur CakeLang, chemin de l'éditeur CakeLand, bac à sable actif.

Suivez un seul nœud à travers les quatre versions. La <declaration> devient double, let ou bool ; le <si> devient un if ; l'<appel> à println devient Console.WriteLine, console.log ou std::cout. Rien d'autre ne change. C'est exactement pour cela que l'arbre, et non le texte, est la bonne unité de transformation : un traducteur de texte devrait comprendre quatre grammaires, un générateur d'arbre n'en connaît qu'une.

La racine commune des architectures à contrôleurs

Les environnements qui séparent vue, modèle et contrôle — les modèles MVVM de .NET, les contrôleurs des cadriciels web — reposent tous sur une même couche : celle qui reçoit une intention et décide de l'action. CAKE© rend cette couche explicite. Dans CakeLand, le modèle est le fichier de constantes, la vue est la console et le visualiseur, et la couche de contrôle est l'arbre de la mission, construit par les douze contrôleurs de familles. Le CXML en est la forme écrite, lisible par un humain comme par un outil : une couche de plus, posée sous toutes les autres, qui décrit ce que chacune se contente d'exécuter.

Principe clé du chapitre

On ne transforme pas du texte, on transforme une intention. L'arbre est le point fixe à partir duquel chaque langage n'est plus qu'une manière de l'écrire.

→

Le chapitre suivant présente les trois portes par lesquelles on entre dans le moteur, et pourquoi elles ne mènent pas toutes au même endroit.

← Chapitre précédent C04 · Représenter les architectures
T09 · C05 / 11
Chapitre suivant → C06 · Interfaces et interaction avec le moteur CAKE©
CAKE© Library  ·  Sébastien Roy  ·  CEO, UniBool Inc.  ·  Canada  ·  Édition 2026