Écrire du code inspiré de Shakespeare avec esolang
La SPL (Shakespeare Programming Langage) est un esolang, un langage de programmation qui utilise les techniques des pièces de théatre.

Un esolang est un langage de programmation ésotérique et le meilleur exemple est le SPL. Peut-être avez-vous entendu dire que le dramaturge William Shakespeare a contribué 1 700 nouveaux mots à la langue anglaise. Mais saviez-vous qu’il possède également un langage de programmation complet ?
SPL (langage de programmation de Shakespeare) a été créé pour que le code source ressemble aux pièces de Shakespeare. C’est une langue ésotérique, également connue sous le nom de esolang. Un esolang est un langage de programmation informatique conçu pour expérimenter des idées étranges, créer un défi pour les programmeurs ou simplement servir de source d’amusement plutôt que pour une utilisation pratique.
Dans un article précédent, j’ai expliqué comment créer une application avec le langage ArnoldC inspiré de Schwarzenegger. Dans cette expérience, je couvrirai un exemple “Hello World” entièrement écrit. Si vous voulez suivre, vous aurez besoin de GCC, brew
ou make
, Python 2, et beaucoup de temps libre et de patience pour utiliser cet esolang. (Python 2 n’est plus pris en charge depuis 2020, c’est donc juste pour le divertissement.)
Contents
Qu’est-ce que l’esolang SPL ?
Dans l’esolang SLP, le code est la pièce et les personnages de la pièce sont des variables. Si vous voulez attribuer à un personnage, par exemple, Hamlet, une valeur négative, vous le mettez ainsi qu’un autre personnage sur scène et laissez ce personnage insulter Hamlet.
Le fait que quelqu’un dise à un personnage d’écouter son cœur et de dire ce qu’il pense produit une entrée et une sortie. Le langage contient des conditionnels, dans lesquels les personnages se posent des questions, et des sauts, dans lesquels ils décident d’aller à un acte ou à une scène spécifique. Les personnages sont également des piles qui peuvent être poussées et éclatées.
Où puis-je obtenir ce langage ?
Vous pouvez télécharger cet esolang à partir du site Internet de la SPL, qui contient également une énorme quantité de documentation. Une fois que vous avez téléchargé le fichier tar.gz, vous pouvez commencer :
$ cd ~/spl
/spl$ ls
spl-1.2.1.tar.gz
/spl$ gunzip spl-1.2.1.tar.gz
/spl$ tar -xvf spl-1.2.1.tar
/spl$ cd spl-1.2.1/
/spl/spl-1.2.1$ ls
AUTHORS examples libspl.c makescanner.c strutils.c
COPYING grammar.y LICENSE NEWS strutils.h
editor include Makefile spl.h telma.h
Ensuite, vous pouvez exécuter la commande make
pour compiler l’interpréteur ou utiliser brew
pour une installation plus rapide et une précompilation facile. j’avais des problèmes avec make
alors j’ai lancébrew
:
$ brew install --build-from-source shakespeare
<snip>
==> Downloading https://ghcr.io/v2/homebrew/core/gettext/blobs/\
sha256:33f840e667c6ee0f674adb279e644ca4a1b3cd1606894c85d9bbce1b5acc0273
==> make install
🍺 /home/linuxbrew/.linuxbrew/Cellar/shakespeare/ \
1.2.1: 9 files, 154.1KB, built in 1 second
==> Running `brew cleanup shakespeare`...
Disable this behaviour by setting HOMEBREW_NO_INSTALL_CLEANUP.
Hide these hints with HOMEBREW_NO_ENV_HINTS (see `man brew`).
Et après?
Une fois que vous avez installé l’esolang SPL, obtenez les autres dépendances, en commençant par Python 2. Vous pouvez installer Python 2 avec n’importe quel gestionnaire de packages. Ensuite, récupérez un compilateur C qui utilise Python pour les fichiers SPL, qui peuvent être téléchargés depuis le référentiel SPL GitHub. Une fois que vous avez téléchargé les fichiers, décompressez-les et utilisez-les selon vos besoins à partir du répertoire.
Dans les exemples de base, nous pouvons prendre l’un des fichiers prédéfinis. Dans ce cas, je vais saisir Hello World pour tester le compilateur et exécuter le code. Vous trouverez ci-dessous les commandes et la sortie.
/spl/Spl-master$ python2 splc.py ../spl-1.2.1/ \
examples/hello.spl > hello.c
/spl/Spl-master$ gcc hello.c -lm
/spl/Spl-master$ ./a.out
Hello World!
Comme vous pouvez le voir, j’ai utilisé le compilateur pour convertir le fichier en C, puis j’ai utilisé gcc
en utilisant des indicateurs pour les options de l’éditeur de liens pour utiliser la bibliothèque et l’indicateur -m pour le fichier cible.
Vous pouvez voir comment l’intégralité de Hello World SPL a été écrite en vous rendant sur le site Web de SPL.
Comment ajouter des nombres
Dans cette section, je vais vous expliquer comment additionner des nombres dans l’esolang SPL. Préparez-vous, cela peut prendre un certain temps.
Commencez par créer un fichier et donnez un titre à votre jeu :
/spl/Spl-master$ vi math.spl
Adding multiple numbers together.
~
~
~
~
~
~
~
~
~
"math.spl" [New File]
Ensuite, donnez à la pièce quelques personnages. Dans ce cas, j’en choisis deux dans une liste de caractères acceptables qui peuvent être trouvés dans le référentiel SPL GitHub. Ces deux personnages feront une addition basique : 2+2=4.
Commencez par les présenter. Les présentations n’ont aucune importance, vous pouvez donc les présenter à votre guise. N’hésitez pas à être idiot:
- Arthur, un homme sur qui on a écrit trop de fois et qui a trop de films
- Cléopâtre, une femme sur laquelle on a écrit, mais les histoires ne concernent généralement que la personne avec qui elle est sortie
Ensuite, configurez votre numéro et votre scène :
- Pour créer un acte, tapez
Act
, le numéro d’acte en chiffres romains, deux-points, puis le nom de l’acte suivi d’un point. L’acte peut être nommé tout ce que vous pouvez penser. - Pour créer une scène, tapez
Scene
, le numéro de la scène en chiffres romains, deux-points, puis un nom suivi d’un point. Encore une fois, vous êtes libre de choisir le nom que vous souhaitez.
Par exemple:
- Acte I : C’est le seul acte que nous aurons.
- Scène I : Arthur et Cléopâtre se voient attribuer des valeurs saisies par l’utilisateur.
Taper [Enter Cleopatra and Arthur]
pour amener vos personnages sur scène.
Maintenant que tout le monde est dans la salle, vous devez configurer les valeurs d’entrée. Les caractères dans SPL sont configurés pour avoir “NAME :” suivi d’une phrase correctement ponctuée. Pour les valeurs d’entrée, la ligne utilisée est “Listen to your heart”. Lorsque l’entrée est recueillie, le caractère parlant a reçu la valeur.
Dans ce cas, je l’ai mis en place avec quelques phrases intéressantes. Notez que seuls deux personnages peuvent être dans une scène à la fois.
[Enter Cleopatra and Arthur]
Cleopatra:
Listen to your heart.
Arthur:
LISTEN to your heart!
Maintenant que les entrées sont prêtes, il est temps de passer à la scène II, où les calculs se produisent.
Scene II: These two become a math machine
Pour ajouter les valeurs, configurez les valeurs de stockage dans chaque caractère. Un personnage fera ensuite des calculs en recueillant les commentaires de l’autre. La commande d’addition est You are the sum of yourself and I.
Juste un rappel que la ponctuation est importante : j’ai passé 20 minutes à ne pas remarquer la ponctuation manquante pendant les tests.
Arthur:
You are the sum of yourself and I.
Dans la scène III, Cléopâtre sortira sa valeur sur la sortie standard. Pour ce faire, vous devez demander à l’autre personnage de la scène de lui dire de Open your heart.
Si vous additionnez les valeurs en un seul personnage, l’autre personnage de la scène devrait être celui qui dit, Open your heart.
Scene III: Cleopatra will open her heart.
Arthur:
Open your heart.
Pour quitter le programme, utilisez [Exeunt]
. Vous pouvez également faire sortir les personnages en utilisant [Exit NAME and NAME]
mais un seul mot me semble plus facile.
Au final, votre programme devrait ressembler à ceci :
Adding multiple numbers together.
Arthur, a man who has been written about one too many times \
and has too many movies.
Cleopatra, a lady who has been written about but usually the \
stories are only about who she dated.
Act I: This is the only one we'll have.
Scene I: Arthur and Cleopatra are assigned user-inputted values.
[Enter Cleopatra and Arthur]
Cleopatra:
Listen to your heart.
Arthur:
LISTEN to your heart!
Scene II: These two become a math machine.
Arthur:
You are the sum of yourself and I.
Scene III: Cleopatra will open her heart.
Arthur:
Open your heart.
[Exeunt]
Pour exécuter votre nouveau programme, effectuez la compilation et la lecture en trois étapes.
/spl/Spl-master$ python2 splc.py math.spl > math.c
/spl/Spl-master$ gcc math.c -lm
/spl/Spl-master$ ./a.out
2
2
4
Coder ou ne pas coder, telle est la question
Ce petit projet prend du temps et était complètement superflu pour écrire un simple script mathématique. Faire le tout avec une entrée utilisateur faisant écho à une citation réelle prendrait encore plus de temps. Cela dit, si vous vous sentez shakespearien, vous pouvez mettre en place toute une petite pièce joyeuse qui est un programme.