Le Shakespeare Programing Language

Le Shakespeare

 

 

 

Le Shakespeare ou le SPL (Shakespeare programming language) a été créé par Jon Åslund et Karl Hasselström, tout comme le Brainfuck, il s’agit d’un langage de programmation exotique.

Le concept de ce langage est de créer une pièce de théâtre qui pourra être interprétée par le compilateur.

Au début du programme, il faudra renseigner une liste de personnage qui représenteront les différentes variables du programme. Pour modifier la valeur de ces variables il faudra créer des dialogues entre les différents personnages ainsi, le personnage « Roméo » pourra modifier grâce à un dialogue la valeur de « Juliette ».

Les personnages (variables) peuvent poser des questions qui viendront créer les conditions du programme.

 

Le programme en Shakespeare se découpe de la façon suivante :

 

  • Le Titre de la pièce et des actes
  • Les Personnages
  • Les Actes et les Scènes
  • Les Entrées et les Sorties des personnages
  • Les instructions entre les entrées et les sorties des personnages

 

Il ne peut être écrit qu’en Anglais et le même programme peut être raconté d’une infinité de façons différentes.

 

Le Titre :

Les premières lignes du programme forment le titre (jusqu'à ce qu'un point soit rencontré) et sont ignorées. Elles n'ont qu'un but esthétique et sont considérées comme des commentaires.

 

Les Personnages :

Après le titre vient la liste des personnages de la pièce, chacun des personnages correspond à une variable. Il n'existe qu'un seul type de variable, pouvant contenir un nombre entier signé (positif ou négatif). Toutes les variables doivent être déclarées. Seuls les noms de personnages de Shakespeare peuvent être utilisés (RomeoJulietHamlet…)

 

Les Actes et les Scènes :

Le programme est un ensemble d'actes et de scènes, servant à la fois de découpage esthétique de la pièce et d'étiquette pour le parser. Chaque acte ou scène est annoncé par une ligne débutant par le mot Act ou Scene suivi d'un nombre romain, et éventuellement d'un titre qui sera considéré comme un commentaire (Scene I ou Act III : The tree revolution)

 

Les Entrées et les Sorties des personnages :

Chaque scène peut débuter par une entrée de personnages. Pour qu'une variable soit utilisée dans cette scène, il y a lieu de la faire monter sur les planches avant de pouvoir l'utiliser. Cette entrée se traduit par une ligne entre crochet sous la forme

[Enter Hamlet and Romeo]

Chaque scène peut de même se clore par une sortie des variables sous la forme d'une ligne comme [Exit Romeo] ou, s'il y a plusieurs variables, [Hamlet and Romeo]. Si un personnage sort et entre ultérieurement, la variable ne conservera pas sa valeur précédente et sera réinitialisée ;

 

Les instructions :

Entre les lignes d'entrée et de sortie des personnages, viennent les répliques contenant les instructions du programme. Chaque réplique commence par un personnage (Romeo:) et une ou plusieurs phrases.

 

Romeo :

Speak your mind. You are as worried as the sum of yourself and the difference          between my small smooth hamster and my nose.

Speak your mind!

 

Chaque phrase assignera une valeur. Chaque nom correspond à une constante 1 s'il est joli, -1 dans le cas contraire. Ainsi, flower, joy ou angel vaudront 1, tandis que devil, bastard ou death vaudront -1.

D'autres noms, plus neutres, comme tree vaudront également 1. Tout adjectif précédant un nom le multipliera par deux. Ainsi pour construire des nombres, il y a lieu généralement d'écrire une somme ou une différence de puissances de deux. Ainsi, à la somme suivante : « a charming cute golden flower and the silly beggar » sera assignée la valeur de 6 (2³ x 1 + 2 x -1)

 

 

 

La fin de la pièce (facultatif)

La fin de la pièce se termine par la sortie de tous les personnages :

[Exunt]

Ce mot clé va simplement faire quitter tous les personnages de la pièce.

 

 

Hello world en SPL :

The Infamous Hello World Program.

// Titre de la pièce

Romeo, a young man with a remarkable patience.

Juliet, a likewise young woman of remarkable grace.

Ophelia, a remarkable woman much in dispute with Hamlet.

Hamlet, the flatterer of Andersen Insulting A/S.

// Création des variables « , » commentaire

 

Act I: Hamlet's insults and flattery.

 

Scene I: The insulting of Romeo.

[Enter Hamlet and Romeo]

// Utilisation des variables Hamlet et Romeo

Hamlet: // Hamlet va modifier la valeur de Romeo

You lying stupid fatherless big smelly half-witted coward!

You are as stupid as the difference between a handsome rich brave

hero and thyself!

Speak your mind! // Speak your mind ! permet d’afficher le résultat

//Affichage du  H

You are as brave as the sum of your fat little stuffed misused dusty

old rotten codpiece and a beautiful fair warm peaceful sunny summer's

day. You are as healthy as the difference between the sum of the

sweetest reddest rose and my father and yourself!

Speak your mind!

// Affichage du e

You are as cowardly as the sum of yourself and the difference

between a big mighty proud kingdom and a horse.

Speak your mind.

// Affichage du  l

Speak your mind!

// Affichage du  l

[Exit Romeo]

Scene II: The praising of Juliet.

 

[Enter Juliet]

Hamlet:

Thou art as sweet as the sum of the sum of Romeo and his horse and his

black cat!

Speak thy mind!

// Affichage du  o

[Exit Juliet] 

Scene III: The praising of Ophelia. 

[Enter Ophelia]

Hamlet:

Thou art as lovely as the product of a large rural town and my amazing

bottomless embroidered purse.

Speak thy mind!

// Affichage d'un [Espace]

Thou art as loving as the product of the bluest clearest sweetest sky

and the sum of a squirrel and a white horse. Thou art as beautiful as

the difference between Juliet and thyself.

Speak thy mind!

// Affichage du W

[Exeunt Ophelia and Hamlet]

Act II: Behind Hamlet's back. 

Scene I: Romeo and Juliet's conversation.

[Enter Romeo and Juliet]

Romeo:

Speak your mind.

// Affichage du  o

You are as worried as the sum of yourself and the

difference between my small smooth hamster and my nose.

Speak your mind!

// Affichage du  r

Juliet:

Speak YOUR mind!

// Affichage du l

You are as bad as Hamlet! You are as small as the

difference between the square of the difference between my little pony

and your big hairy hound and the cube of your sorry little

codpiece.

Speak your mind!

// Affichage du d

[Exit Romeo]

Scene II: Juliet and Ophelia's conversation.

 

[Enter Ophelia]

Juliet:

Thou art as good as the quotient between Romeo and the sum of a small

furry animal and a leech.

Speak your mind!

// Affichage du  !

Ophelia:

Thou art as disgusting as the quotient between Romeo and twice the

difference between a mistletoe and an oozing infected blister!

Speak your mind!

// Affichage d'un [Retour à la ligne]

[Exeunt]

// Fin de la pièce

 

Tout ce très, très, très (…) long code va nous renvoyer un « Hello World! » digne des plus grandes œuvres de Shakespeare !

(72 101 108 108 111 32 87 111 114 108 100 33 en Ascii)

 

Mise en pratique du SPL pas à pas :

Comme pour le Brain-Fuck, nous allons ici nous essayer à écrire CampusID mais cette fois-ci en Shakespeare Programing Language !

(Veuillez m’excuser d’avance pour la piètre qualité de la pièce, mais mon scénariste est encore en vacances …)

Le début du code sera commenté pour comprendre la mécanique, la procédure étant la même je ne commenterais que jusqu’au premier Speak your mind ! (print).

 

Tout d’abord, il faut que l’on récupère la valeur ASCII de ce que l’on veut écrire ainsi, CampusID nous donne :

67 97 109 112 117 115 73 68 en ASCII

 

 

(convertisseur ASCII : https://www.dcode.fr/code-ascii)

 

 

CampusID The Masterpiece

 

Ophelia, the instagram queen.

Romeo, why are you Romeo.

Juliet, because we need a Juliet for our Romeo.

Hamlet, to do or not to do this contribution.

 

 

 

Act I : Fight at the beach.

Scene I : Romeo and Juliet are breaking up.

 

 

[Enter Romeo and Juliet]

// Les variables Romeo et Juliet entrent en scène

 

Juliet :

// Juliet va modifier la variable Romeo

 

You are a dirty oozing lying fat rotten small pig.

// Romeo => (2 x 2 x 2 x 2 x 2 x 2) x -1 = - 64

 

You are as infected as the sum of yourself and an amazing bottomless warm furry little small black cat.

// Romeo => (-64 + (2 x 2 x 2 x 2 x 2 x 2 x 2 x 1)) / 2 = 64

 

You are as stupid as the sum of yourself and a big horse!

// Romeo => 64 + (2x1) = 66

 

You are as bad as the sum of yourself and a tree.

// Romeo 66 + 1 = 67

 

Speak your mind!

// Affiche la lettre C

 

You lying stupid fatherless big smelly half-witted coward!

 

You are as stupid as the difference between a handsome rich brave mighty proud hero and thyself.

You are and the sum of yourself and the sum of a pig and a white horse!

 

Speak your mind!

 

You are the sum of yourself and a little black small tree.

You are the sum of yourself and a black furry horse.

 

Speak your mind!

 

Romeo :

 

You are as bad as Romeo.

You are the sum of yourself and the sum of a big white rose and a pig.

 

Speak your mind!

 

 

[Exit Juliet]

 

Scene II: Romeo tries to pécho Ophelia but he is trop naze.

 

[Enter Ophelia]

 

Romeo :

 

You are the sum of Juliet and a sweet red rose.

You are the sum of yourself and a tree.

 

Speak your mind.

 

Ophelia :

 

You are the sum of Ophelia and a white pig.

 

Speak your mind.

 

You are the sum of the square root of Romeo and a proud little pretty beautiful handsome white rose.

 

Romeo :

 

You are the sum of Romeo and a blister.

 

Speak your mind.

 

[Exeunt Romeo and Ophelia]

 

Scene III: Hamlet is trying to make some friend but SPL is to boring to try.

 

[Enter Hamlet and Juliet]

 

Hamlet :

 

You are the difference beetwen Juliet and Romeo.

You are the sum of yourself and a big black pig.

You are the sum of yourself and a black blister.

 

Speak your mind !

 

[Exeunt]

 

Le code affiche bien CampusID

 

Comme vous pouviez vous y attendre, mon scénariste étant absent et mon mathématicien en chef m’ayant fait faux bond, il n’y a principalement que des additions (et à l’heure où j’écris ce magnifique article, mon esprit n’est pas assez « Aware » pour élaborer des formules assez complexes pour simplifier cette pièce de théâtre et avoir l'envie d'utiliser tout le pannel d'adjectifs et de noms disponible !).

 

 

En Conclusion :

 

Après avoir passé un certain temps à essayer de créer un script cohérent, je me suis vite rendu compte que le Shakespeare était un langage très … LOURD et chronophage.

Il faut environ 360 mots pour écrire « CampusID » contre 19 caractères en C

( printf(«CampusID»); )

Mais ce langage a un charme que les autres n’ont pas !

Si vous vous sentez dramaturge dans l’âme et que vous aimez les adjectifs, n’attendez plus, ce langage est fait pour vous.

Au contraire, si vous êtes plutôt paresseux et qu’écrire des pièces de théâtre ce n’est simplement pas fait pour vous … FUYEZ PAUVRES FOUS !  Ou vous allez amèrement regretter d’avoir tenté ce langage.

 

Pour les plus courageux, je vous invite à consulter les auteurs de ce langage directement aux adresses suivantes :

d98-jas@nada.kth.se

kha@treskal.com

 

 

Sources :

 

Compilateur online :

 

 

 

 

 

 

 

Tous les mots utilisés par le langage :

 

Articles :

a, an, the

 

Auxiliaire be :

am, are, art, be, is

 

Personnages :

Adonis, Adriana, Aegeon, Aemilia, Agamemnon, Agrippa, Ajax, Alonso, Andromache, Angelo, Antiochus, Antonio, Arthur, Autolycus, Balthazar, Banquo, Beatrice, Benedick, Benvolio, Bianca, Brabantio, Brutus, Capulet, Cassandra, Cassius, Christopher, Sly, Cicero, Claudio, Claudius, Cleopatra, Cordelia, Cornelius, Cressida, Cymberline, Demetrius, Desdemona, Dionyza, Doctor Caius, Dogberry, Don John, Don Pedro, Donalbain, Dorcas, Duncan, Egeus, Emilia, Escalus, Falstaff, Fenton, Ferdinand, Ford, Fortinbras, Francisca, Friar John, Friar Laurence, Gertrude, Goneril, Hamlet, Hecate, Hector, Helen, Helena, Hermia, Hermonie, Hippolyta, Horatio, Imogen, Isabella, John of Gaunt, John of Lancaster, Julia, Juliet, Julius Caesar, King Henry, King John, King Lear, King Richard, Lady Capulet, Lady Macbeth, Lady Macduff, Lady Montague, Lennox, Leonato, Luciana, Lucio, Lychorida, Lysander, Macbeth, Macduff, Malcolm, Mariana, Mark, Antony, Mercutio, Miranda, Mistress Ford, Mistress Overdone, Mistress Page, Montague, Mopsa, Oberon, Octavia, Octavius Caesar, Olivia, Ophelia, Orlando, Orsino, Othello, Page, Pantino, Paris, Pericles, Pinch, Polonius, Pompeius, Portia, Priam, Prince Henry, Prospero, Proteus, Publius, Puck, Queen Elinor, Regan, Robin, Romeo, Rosalind, Sebastian, Shallow, Shylock, Slender, Solinus, Stephano, Thaisa, The Abbot of Westminster, The Apothecary, The Archbishop of Canterbury, The Duke of Milan, The Duke of Venice, The Ghost, Theseus, Thurio, Timon, Titania, Titus, Troilus, Tybalt, Ulysses, Valentine, Venus, Vincentio, Viola

 

Première personne  : 

I, me, mine, my, myself

 

Adjectifs négatifs : 

Bad, cowardly, cursed, damned, dirty, disgusting, distasteful, dusty, evil, fat, fat-kidneyed, fatherless, foul, hairy, half-witted, horrible, horrid, infected, lying, miserable, misused, oozing, rotten, rotten, smelly, snotty, sorry, stinking, stuffed, stupid, vile, villainous, worried

 

Comparatifs négatifs :

Punier, smaller, worse

 

Noms négatifs :

Hell, Microsoft, bastard, beggar, blister, codpiece, coward, curse, death, devil, draught, famine, flirt-gill, goat, hate, hog, hound, leech, lie, pig, plague, starvation, toad, war, wolf

 

Adjectifs neutres :

Big, black, blue, bluest, bottomless, furry, green, hard, huge, large, little, normal, old, purple, red, rural, small, tiny, white, yellow

 

Noms neutres :

Animal, aunt, brother, cat, chihuahua, cousin, cow, daughter, door, face, father, fellow, granddaughter, grandfather, grandmother, grandson, hair, hamster, horse, lamp, lantern, mistletoe, moon, morning, mother, nephew, niece, nose, purse, road, roman, sister, sky, son, squirrel, stone wall, thing, town, tree, uncle, wind 

 

Rien :

Nothing, zero

 

Adjectifs positifs :

Amazing, beautiful, blossoming, bold, brave, charming, clearest, cunning, cute, delicious¸ embroidered, fair, fine, gentle, golden, good, handsome, happy, healthy, honest, lovely, loving, mighty, noble, peaceful, pretty, prompt, proud, reddest, rich, smooth, sunny, sweet, sweetest, trustworthy, warm

 

Comparatifs positifs :

Better, bigger, fresher, friendlier, nicer, jollier 

 

Noms positifs :

Aven, King, Lord, angel, flower, happiness, joy, plum, summer's day, hero, rose, kingdom, pony

 

Deuxième personne :

Thee, thou, you, thine, thy, your, thyself, yourself

 

Troisième Personne :

His, her, its, their

 

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *