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

Industrialiser les transformations CAKE©

L'empreinte d'arbre : une identité reproductible pour chaque programme

Industrialiser, c'est pouvoir répondre sans hésiter à une question simple, posée des milliers de fois : ce programme est-il exactement celui qui a été vérifié ? Comparer des fichiers texte ne suffit pas ; une espace ajoutée, un commentaire corrigé, et le fichier diffère sans que rien n'ait changé dans le comportement. À l'inverse, un chiffre modifié au milieu d'une ligne passe facilement inaperçu.

CakeLang répond par l'empreinte d'arbre : un condensé de 64 bits calculé sur l'arbre syntaxique, et non sur le texte. La commande cake hash la calcule ; chaque exemple de ce tome l'affiche.


Deux textes, un seul arbre

L'empreinte couvre l'arbre entier, y compris le nom du projet, que la ligne de commande tire du nom du fichier. Pour comparer deux versions d'un même programme, on les enregistre donc sous le même nom, ici patrouille.cake. Les deux versions ci-dessous sont écrites différemment : l'une est commentée et aérée, l'autre compacte. Comparez leurs empreintes.

Version commentée et aérée

Source C% · patrouille.cake
?! Patrouille du drone D-7 : trois passages
=: tour=0%
$= (tour<3) {
  Cake.emit(tour*10, 0, 5, tour)%
  :+ tour=1%
}
Sortie réelle du moteur
[3 point(s) transmis au visualiseur par Cake.emit]
→ valeur finale : 3
Traçabilité — opcodes : =: déclarations · $= flux · :+ déclarations · bibliothèque : Cake.emit
nœuds d'arbre : déclaration, tant-que, code brut, affectation · empreinte d'arbre 16cbb7c3367736ad (reproductible : cake hash patrouille.cake)
vérifié le 2026-09-23 dans le moteur CakeLang, chemin de l'éditeur CakeLand, bac à sable actif.

Version compacte, sans commentaire

Source C% · patrouille.cake
=: tour=0%
$= (tour<3) { Cake.emit(tour*10, 0, 5, tour)%
:+ tour=1% }
Sortie réelle du moteur
[3 point(s) transmis au visualiseur par Cake.emit]
→ valeur finale : 3
Traçabilité — opcodes : =: déclarations · $= flux · :+ déclarations · bibliothèque : Cake.emit
nœuds d'arbre : déclaration, tant-que, code brut, affectation · empreinte d'arbre 16cbb7c3367736ad (reproductible : cake hash patrouille.cake)
vérifié le 2026-09-23 dans le moteur CakeLang, chemin de l'éditeur CakeLand, bac à sable actif.

Les empreintes sont identiques. Le commentaire a été retiré avant l'analyse, la mise en page n'a jamais atteint l'arbre : pour le moteur, c'est le même programme.

Un chiffre, un autre arbre

Changeons maintenant une seule valeur : quatre passages au lieu de trois.

Une seule valeur changée

Source C% · patrouille.cake
=: tour=0%
$= (tour<4) {
  Cake.emit(tour*10, 0, 5, tour)%
  :+ tour=1%
}
Sortie réelle du moteur
[4 point(s) transmis au visualiseur par Cake.emit]
→ valeur finale : 4
Traçabilité — opcodes : =: déclarations · $= flux · :+ déclarations · bibliothèque : Cake.emit
nœuds d'arbre : déclaration, tant-que, code brut, affectation · empreinte d'arbre da3cb5bae524460f (reproductible : cake hash patrouille.cake)
vérifié le 2026-09-23 dans le moteur CakeLang, chemin de l'éditeur CakeLand, bac à sable actif.

L'empreinte change. C'est la propriété qui rend l'industrialisation possible : l'empreinte est insensible à la forme et sensible au sens.

De l'empreinte à la chaîne de traçabilité

Dans une station à des centaines de milliers de points de contrôle, chaque mission validée est enregistrée avec son empreinte. Au moment du déploiement, on recalcule l'empreinte du programme reçu et on la compare à celle du registre. Si elles diffèrent, le programme n'est pas celui qui a été vérifié, quelle que soit la qualité apparente du texte. Le registre conserve aussi le nom de fichier sous lequel l'empreinte a été calculée, puisqu'il fait partie de l'arbre. Cette bibliothèque applique la même discipline à elle-même : chaque exemple porte son empreinte, et un outil de vérification recalcule toutes les empreintes à chaque évolution du moteur. Un exemple dont l'empreinte ou la sortie change est signalé avant publication.

Principe clé du chapitre

On n'industrialise pas des fichiers, on industrialise des arbres. L'empreinte d'arbre dit si deux programmes sont le même, indépendamment de la manière dont ils sont écrits.

→

Le chapitre suivant se place du côté du développeur : écrire du C% au quotidien, lire les diagnostics et éviter les pièges.

← Chapitre précédent C07 · Les environnements d'exécution CAKE©
T09 · C08 / 11
Chapitre suivant → C09 · CAKE© dans l'environnement du développeur
CAKE© Library  ·  Sébastien Roy  ·  CEO, UniBool Inc.  ·  Canada  ·  Édition 2026