Programme Shakespeare (.spl)
hero, big,
the sum) — ↑↓ naviguer · Entrée/Tab valider · Échap fermer.Sortie
Mini-langage impératif
+ - * / %, if/else, while,
print/printc, read/readc.
Voir l'onglet Documentation pour la syntaxe et les limites.Pièce Shakespeare générée
Le langage Shakespeare, en bref
Un programme Shakespeare (SPL) ressemble à une pièce de théâtre, mais c'est en réalité un langage impératif proche de l'assembleur. Chaque personnage est une variable entière signée. Deux personnages au maximum sont « sur scène » et se parlent : quand l'un parle, ses phrases agissent sur l'autre (l'interlocuteur, « you »). « moi / je » (« me / I ») désigne le locuteur.
Code couleur de l'éditeur
Les trois zones de code (éditeur Shakespeare, mini-langage, pièce générée) — et les exemples ci-dessous — sont colorés automatiquement pendant que tu écris. Signification :
- Personnages — les variables (Romeo, Juliet…)
- Structure —
Act,Scene,[Enter …],[Exeunt] - Actions —
Open your heart,Speak your mind, sauts de scène… - Opérateurs —
the sum of,the difference between… - Comparateurs —
better than,as good as… - Pronoms —
you,I,me,thyself… - Valeurs — noms & adjectifs (
cat,big,pig,nothing…)
Dans le mini-langage : mots-clés (let, while, if), nombres, opérateurs, et # commentaires.
Structure d'une pièce
Titre de la pièce. Romeo, une description libre. Juliet, une autre description. Act I: Nom de l'acte. Scene I: Nom de la scène. [Enter Romeo and Juliet] Romeo: You are as good as the sum of a cat and a cat. Romeo: Open your heart. [Exeunt]
Valeurs & constantes « poétiques »
Un nom vaut 1, et chaque adjectif double la valeur. Les noms « gentils » ou neutres
sont positifs, les noms « méchants » sont négatifs. nothing/zero valent 0.
| Écriture | Valeur |
|---|---|
a cat | 1 |
a big cat | 2 (1 adjectif) |
a big furry cat | 4 (2 adjectifs) |
a pig / a big pig | -1 / -2 (nom négatif) |
the sum of a big cat and a cat | 3 |
Opérations (dites par un personnage à l'autre)
| Phrase | Effet sur l'interlocuteur |
|---|---|
You are as good as valeur. | affectation |
the sum of A and B | A + B |
the difference between A and B | A − B |
the product of A and B | A × B |
the quotient between A and B | A ÷ B |
the remainder of the quotient between A and B | A mod B |
Open your heart. | affiche la valeur (nombre) |
Speak your mind. | affiche le caractère (code ASCII) |
Listen to your heart. | lit un nombre |
Open your mind. | lit un caractère |
Remember valeur. / Recall … | empile / dépile (pile par personnage) |
Contrôle de flux
Une question (Am I better than you?) fixe un booléen global, puis une phrase
conditionnelle décide d'un saut :
Romeo: Am I better than you? If so, let us proceed to scene III.
Comparateurs : better than (>), worse than (<),
as good as (=). Les sauts se font vers des scènes (proceed to /
return to).
Le mini-langage → traducteur
Le traducteur compile un petit langage impératif classique en Shakespeare valide, de façon déterministe. Il gère les entiers uniquement.
| Construction | Exemple |
|---|---|
| déclaration | let x = 3 |
| affectation | x = x + 1 |
| expression | + - * / %, parenthèses, moins unaire |
| sortie nombre | print x |
| sortie caractère | printc 72 → H |
| lecture nombre | read x |
| lecture caractère | readc c |
| condition | while i <= 10 { … } |
| test | if x % 3 == 0 { … } else { … } |
| commentaire | # … jusqu'à la fin de la ligne |
Limites (assumées)
- Entiers signés uniquement — pas de flottants, pas de chaînes de caractères (travailler code ASCII par code ASCII).
- Comparaisons simples
a OP b— pas deand/orbooléens (imbriquer lesif). - Chaque variable/temporaire occupe un personnage : nombre total borné (~140).
- Entrée : un nombre par ligne ; les caractères se lisent un par un.
printn'ajoute pas d'espace : plusieurs nombres se collent.
Astuce : transpile un exemple, envoie-le vers l'éditeur, puis lance le mode pas à pas pour voir chaque personnage prendre sa valeur.
🎬 Piste — « Shakespeare OS », une distribution Linux mise en scène
Et si tout un système d'exploitation était vécu comme une pièce de théâtre ? Une vraie distribution Linux où le démarrage est un lever de rideau, une mise à jour un entracte, la gestion des paquets une troupe de comédiens — et où le langage Shakespeare (celui de ce playground) est citoyen de première classe.
La métaphore, poste par poste
| Concept Linux | Sur scène | Ce que ça donne concrètement |
|---|---|---|
| Démarrage (boot) | Lever de rideau | splash animé « le rideau se lève » + un prologue / une citation |
| Écran de connexion | Entrée en scène | greeter thématisé : « les comédiens entrent » |
| Bureau / session | La représentation | le bureau = la scène, en cours de jeu |
| Mise à jour / upgrade | Entracte | animation d'entracte pendant l'installation |
| Redémarrage | Rappel / Reprise | « la troupe revient saluer, puis rejoue » |
| Extinction | Tomber du rideau · Épilogue | mot de la fin + rideau |
| Gestionnaire de paquets | Le Régisseur / la troupe | wrapper CLI troupe autour d'apt/pacman |
| Installer un paquet | Engager un comédien | troupe engage <acteur> |
| Une application | Un rôle / un comédien | chaque logiciel = un membre du casting |
| Processus | Personnage en scène | ps → « qui est en scène » |
| Tuer un processus | Sortie de scène | clin d'œil : « Exit, pursued by a bear » |
| Service / daemon | Machiniste (coulisses) | tourne en arrière-plan, invisible |
| Noyau (kernel) | Le Metteur en scène | orchestre tout depuis les coulisses |
| Shell / terminal | Le Souffleur | prompt thématisé, aide au bon moment |
| Système de fichiers | Le Théâtre | la scène, les loges, les réserves |
| Dossier personnel (~) | La loge | ton espace privé de comédien |
| Fichiers de config | Le Manuscrit | le texte de la pièce, qu'on annote |
| Journaux (logs) | Les mémoires du régisseur | tout ce qui s'est joué, consigné |
| Erreur / crash | Le trac · la tragédie | messages d'erreur au style dramatique |
| Tâches planifiées (cron) | Répétitions programmées | ce qui se rejoue à heure fixe |
| Le SPL préinstallé | La langue de la maison | des scripts d'ambiance écrits en Shakespeare |
Comment on le construit vraiment
Rien d'exotique : c'est un assemblage maîtrisé de briques Linux existantes, plus une couche de thème et des wrappers. Faisable seul, par étapes.
- Base & ISO : Debian
live-buildou Archarchisopour produire une image live + installable (option rapide : remaster Ubuntu viaCubic). - Prologue (boot) : thème
Plymouthanimé = « lever de rideau » + citation ; thèmeGRUBfaçon « programme de la soirée ». - Entrée en scène : greeter
LightDM/GDMrethémé. - Le Régisseur : un wrapper shell
troupe(engage,renvoie,entracte=update) au-dessus du vrai gestionnaire de paquets. - Ambiance shell : MOTD avec une réplique de Shakespeare, prompt « Le Souffleur », messages système rejoués en style théâtral.
- Cœur thématique : l'interpréteur SPL + ce playground en app locale préinstallés ; certains scripts d'init décoratifs écrits en Shakespeare.
- Installation : l'installateur
Calamaresrethémé en « Casting ».
Feuille de route réaliste
Le respin thématique
Une ISO Debian live-build qui boote avec le lever de rideau Plymouth, le thème GRUB,
le greeter, le wrapper troupe, le MOTD, et le SPL + playground préinstallés.
Objectif : « ça se voit, ça boote, ça claque ».
La mise en scène complète
Entracte animé aux mises à jour, notifications « Souffleur », sélection d'applications, branding complet (icônes, sons, décor), messages d'erreur dramatisés.
Releases & communauté
ISO versionnées, site de téléchargement, documentation, et des scripts système en SPL pour le folklore. Noms de code = pièces de Shakespeare (à la manière des animaux d'Ubuntu).
Identité
Nom de la distro (idées) :
Noms de code des versions :
shakespeare-os avec une
config live-build minimale, un thème Plymouth « lever de rideau », le wrapper
troupe et le SPL préinstallé — puis produire une première ISO de test
(buildable sur le VPS ou en local). Dis le mot et on lève le rideau. 🎭