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

CAKE© dans l'environnement du développeur

Écrire, lire les diagnostics, éviter les pièges

Le quotidien d'un développeur C% tient en trois gestes : écrire dans l'éditeur, exécuter, lire ce que le moteur répond. Ce chapitre rassemble ce qu'il faut savoir pour que le troisième geste soit rapide.

Le terminateur %

Presque toute instruction se termine par %. Les blocs { } se ferment par leur accolade et n'en ont pas besoin. Le même caractère sert aussi de préfixe de type, %int ou %double, dans les déclarations de fonctions : le moteur les distingue parce qu'une lettre suit immédiatement le préfixe.

Lire un diagnostic

Quand une instruction ne peut pas être exécutée hors d'un bloc d'essai, le moteur ne s'arrête pas : il l'écrit sur le canal de diagnostic, avec le texte exact de l'instruction et la raison, puis continue. Une faute de frappe dans un nom de fonction se voit ainsi immédiatement.

Une faute de frappe, signalée

Source C% · t09c09-a.cake
=: altitude=412.0%
Cake.prinltn("Altitude : " + Cake.toString(altitude))%
|> "Controle termine"%
Sortie réelle du moteur
Controle termine
Diagnostic du moteur
cake: statement ignore -> "Cake.prinltn("Altitude : " + Cake.toString(altitude))" (Fonction 'Cake.prinltn' non trouvee)
Arbre syntaxique sérialisé en CXML par l'analyseur
<projet nom="t09c09-a" package="com.unibool.script" type="Library">
  <classe nom="Root" visibilite="Public">
    <methode nom="main" retour="void" visibilite="Public">
      <bloc>
        <declaration nom="altitude" type="var" valeur="412.0"/>
        <code-brut><![CDATA[Cake.prinltn("Altitude : " + Cake.toString(altitude))%]]></code-brut>
        <appel methode="println" args="&quot;Controle termine&quot;"/>
      </bloc>
    </methode>
  </classe>
</projet
Traçabilité — opcodes : =: déclarations · |> entrées/sorties · bibliothèque : Cake.prinltn, Cake.toString
nœuds d'arbre : déclaration, code brut, appel · empreinte d'arbre dd74b7a3ea665acf (reproductible : cake hash t09c09-a.cake)
vérifié le 2026-09-23 dans le moteur CakeLang, chemin de l'éditeur CakeLand, bac à sable actif.

Le diagnostic nomme la fonction introuvable, Cake.prinltn. Avant une mise en service, un programme dont l'exécution produit le moindre diagnostic doit être considéré comme non validé.

Un piège : les noms inconnus

Un identifiant qui n'a jamais été déclaré n'est pas une erreur : il est lu comme un texte portant son nom. C'est le piège le plus sournois du moteur actuel, parce qu'il ne produit aucun diagnostic.

Une variable mal orthographiée

Source C% · t09c09-b.cake
=: vitesse=7.66%
|> "Vitesse : " + Cake.toString(vitese)%
Sortie réelle du moteur
Vitesse : vitese

La sortie affiche le mot « vitese » au lieu d'un nombre. Relisez toujours les noms de variables dans les sorties : c'est ici que l'erreur se voit.

Arbre syntaxique sérialisé en CXML par l'analyseur
<projet nom="t09c09-b" package="com.unibool.script" type="Library">
  <classe nom="Root" visibilite="Public">
    <methode nom="main" retour="void" visibilite="Public">
      <bloc>
        <declaration nom="vitesse" type="var" valeur="7.66"/>
        <appel methode="println" args="&quot;Vitesse : &quot; + Cake.toString(vitese)"/>
      </bloc>
    </methode>
  </classe>
</projet
Traçabilité — opcodes : =: déclarations · |> entrées/sorties · bibliothèque : Cake.toString
nœuds d'arbre : déclaration, appel · empreinte d'arbre 6d14a7ea79e7b64e (reproductible : cake hash t09c09-b.cake)
vérifié le 2026-09-23 dans le moteur CakeLang, chemin de l'éditeur CakeLand, bac à sable actif.

Les nombres négatifs et le formatage

Les valeurs négatives s'écrivent directement, =: x=-4%, et les expressions comme 0.0-mu des fichiers d'exemple restent valides. Cake.format accepte les spécificateurs .NET : {0:F3} pour trois décimales, {0:N0} pour un entier avec séparateurs.

Négatif et format

Source C% · t09c09-c.cake
=: gravite=-9.81%
=: chute=gravite*2.5%
|> "Vitesse apres 2,5 s : " + Cake.format("{0:F2}", chute) + " m/s"%
Sortie réelle du moteur
Vitesse apres 2,5 s : -24.53 m/s
Arbre syntaxique sérialisé en CXML par l'analyseur
<projet nom="t09c09-c" package="com.unibool.script" type="Library">
  <classe nom="Root" visibilite="Public">
    <methode nom="main" retour="void" visibilite="Public">
      <bloc>
        <declaration nom="gravite" type="var" valeur="- 9.81"/>
        <declaration nom="chute" type="var" valeur="gravite * 2.5"/>
        <appel methode="println" args="&quot;Vitesse apres 2,5 s : &quot; + Cake.format(&quot;{0:F2}&quot;, chute) + &quot; m/s&quot;"/>
      </bloc>
    </methode>
  </classe>
</projet
Traçabilité — opcodes : =: déclarations · |> entrées/sorties · bibliothèque : Cake.format
nœuds d'arbre : déclaration, appel · empreinte d'arbre 555a7750b432809d (reproductible : cake hash t09c09-c.cake)
vérifié le 2026-09-23 dans le moteur CakeLang, chemin de l'éditeur CakeLand, bac à sable actif.
Principe clé du chapitre

Un développeur C% lit les diagnostics comme des résultats. Le moteur continue après une instruction refusée ; c'est au développeur de ne jamais continuer après un diagnostic.

→

Le chapitre suivant dresse l'état exact du moteur : ce qui s'exécute, ce qui a été corrigé, ce qui reste à construire.

← Chapitre précédent C08 · Industrialiser les transformations CAKE©
T09 · C09 / 11
Chapitre suivant → C10 · L'avenir de l'ingénierie CAKE©
CAKE© Library  ·  Sébastien Roy  ·  CEO, UniBool Inc.  ·  Canada  ·  Édition 2026