🎭 Shakespeare Playground

Exécute, visualise pas à pas, et traduis vers le langage de programmation Shakespeare

Programme Shakespeare (.spl)

💡 Autocomplétion : commence à taper un mot (ex. hero, big, the sum) — ↑↓ naviguer · Entrée/Tab valider · Échap fermer.

Sortie

Mini-langage impératif

Variables entières, + - * / %, 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…)
  • StructureAct, Scene, [Enter …], [Exeunt]
  • ActionsOpen your heart, Speak your mind, sauts de scène…
  • Opérateursthe sum of, the difference between
  • Comparateursbetter than, as good as
  • Pronomsyou, 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.

ÉcritureValeur
a cat1
a big cat2 (1 adjectif)
a big furry cat4 (2 adjectifs)
a pig / a big pig-1 / -2 (nom négatif)
the sum of a big cat and a cat3

Opérations (dites par un personnage à l'autre)

PhraseEffet sur l'interlocuteur
You are as good as valeur.affectation
the sum of A and BA + B
the difference between A and BA − B
the product of A and BA × B
the quotient between A and BA ÷ B
the remainder of the quotient between A and BA 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.

ConstructionExemple
déclarationlet x = 3
affectationx = x + 1
expression+ - * / %, parenthèses, moins unaire
sortie nombreprint x
sortie caractèreprintc 72H
lecture nombreread x
lecture caractèrereadc c
conditionwhile i <= 10 { … }
testif 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 de and/or booléens (imbriquer les if).
  • Chaque variable/temporaire occupe un personnage : nombre total borné (~140).
  • Entrée : un nombre par ligne ; les caractères se lisent un par un.
  • print n'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.

Le pitch en une phrase. Ton ordinateur devient un théâtre, l'OS joue une pièce, et toi tu es le metteur en scène. Éducatif, original, mémorable — un vrai objet de portfolio et de communauté, pas un gag.

La métaphore, poste par poste

Concept LinuxSur scèneCe que ça donne concrètement
Démarrage (boot)Lever de rideausplash animé « le rideau se lève » + un prologue / une citation
Écran de connexionEntrée en scènegreeter thématisé : « les comédiens entrent »
Bureau / sessionLa représentationle bureau = la scène, en cours de jeu
Mise à jour / upgradeEntracteanimation d'entracte pendant l'installation
RedémarrageRappel / Reprise« la troupe revient saluer, puis rejoue »
ExtinctionTomber du rideau · Épiloguemot de la fin + rideau
Gestionnaire de paquetsLe Régisseur / la troupewrapper CLI troupe autour d'apt/pacman
Installer un paquetEngager un comédientroupe engage <acteur>
Une applicationUn rôle / un comédienchaque logiciel = un membre du casting
ProcessusPersonnage en scèneps → « qui est en scène »
Tuer un processusSortie de scèneclin d'œil : « Exit, pursued by a bear »
Service / daemonMachiniste (coulisses)tourne en arrière-plan, invisible
Noyau (kernel)Le Metteur en scèneorchestre tout depuis les coulisses
Shell / terminalLe Souffleurprompt thématisé, aide au bon moment
Système de fichiersLe Théâtrela scène, les loges, les réserves
Dossier personnel (~)La logeton espace privé de comédien
Fichiers de configLe Manuscritle texte de la pièce, qu'on annote
Journaux (logs)Les mémoires du régisseurtout ce qui s'est joué, consigné
Erreur / crashLe trac · la tragédiemessages d'erreur au style dramatique
Tâches planifiées (cron)Répétitions programméesce qui se rejoue à heure fixe
Le SPL préinstalléLa langue de la maisondes 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-build ou Arch archiso pour produire une image live + installable (option rapide : remaster Ubuntu via Cubic).
  • Prologue (boot) : thème Plymouth animé = « lever de rideau » + citation ; thème GRUB façon « programme de la soirée ».
  • Entrée en scène : greeter LightDM/GDM rethé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 Calamares rethémé en « Casting ».

Feuille de route réaliste

Acte I — MVP

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 ».

Acte II — L'expérience

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.

Acte III — La troupe

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) :

ElsinoreGlobe OSProspero AvonBardOSStageLinux

Noms de code des versions :

HamletMacbethTempest OthelloMidsummerLear
Prochaine étape concrète. Je peux te bootstraper un dépôt 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. 🎭