Shakespeare (programozási nyelv)
Shakespeare Programing Language | |
Paradigma | ezoterikus |
Jellemző kiterjesztés | spl |
Tervező | Kalle Hasselström, Jon Åslund |
Utolsó kiadás | 1.2.1 |
Weboldal |
A Shakespeare programozási nyelv (SPL) egy ezoterikus programozási nyelv, amit Kalle Hasselström és Jon Åslund hozott létre. Az alapelgondolás, hogy Shakespeare-színdarabok stílusát idéző legyen az SPL nyelven létrehozott program forráskódja. Ennek érdekében a kódot különféle nyelvi lelemények segítségével készítheti el a programozó, és ebben a fordító igyekszik minél nagyobb szabadságot nyújtani. A kódolási stílus ezen programnyelv használata esetén kiemelkedő jelentőségű.
A nyelv nem kezel összetett adatszerkezeteket, kizárólag alapműveleteket és vermet valósít meg. Vezérlőszerkezetek tekintetében elérhető a GOTO és az elágazás.
Tartalomjegyzék
Programozás Shakespeare-ben[szerkesztés]
Cím[szerkesztés]
Minden Shakespeare-program első sora a program címe. Mivel a programnyelv célkitűzése, hogy a forráskód színműre emlékeztessen, így elengedhetetlen, hogy a darabnak legyen címe. Gyakorlati szempontból a megadott cím irreleváns, a fordító az első pontig megadott szövegeket megjegyzésként kezeli.
Szereplők[szerkesztés]
A kód a változók deklarációjával folytatódik. A változók a darab szereplői, mindegyiküket fel kell sorolni. A változók előjeles egészek tárolására alkalmasak. A színmű forma érdekében a változó egyszavas nevét követően meg lehet adni a változó leírását, amit a fordító figyelmen kívül fog hagyni. Elvárás, hogy a változók neve valódi Shakespeare-szereplők neve legyen, nem választhatóak meg szabadon.
A változók az őket megszemélyesítő szereplők kommunikációjával nyernek értéket. Az egymásnak címzett mondatokban minden pozitív vagy semleges jelentéstartalmú főnév értéke 1, minden negatív jelentéstartalmúé -1 értéket képvisel. A jelzős szerkezetekben alkalmazott jelzők mindegyike 2-vel szorozza a főnév értékét. Az egyes szerkezetek értékét össze lehet adni és azokban más változókra hivatkozni ({sum of Romeo and Juliet
, kivonni (difference between Ophelia and Hamlet
), hatványozni (square of
), stb. Ezen felül egy változó már megszerzett értékéhez újabb értékek adhatóak az and thyself!
kifejezés használatával.
Felvonások és színek[szerkesztés]
A forráskód római számokkal jelölt felvonásokra (Act) és színekre (Scene) tagozódik. Amellett, hogy a színdarab-forma kialakítását szolgálja, a felvonások és a színek az ugrásokhoz címkeként funkcionálnak. Az Act
vagy Scene
szavakat követően meg kell adni az egység nevét, majd egy rövid leírást, amelyet a fordító (hasonlóan a szereplők leírásához) figyelmen kívül hagy.
Színre lépés és távozás[szerkesztés]
Annak érdekében, hogy a változók egymással kommunikálni tudjanak, és így értéket nyerni, színre kell lépniük és távozniuk kell. Az Enter
, Exit
parancsok segítségével lehet változókat behívni és eltávolítani. Az Exeunt
parancs segítségével több szereplő egyszerre léptethető le a színről.
Beszéd és hallgatás[szerkesztés]
A változók értéküket az Open your heart
és a Speak your mind
parancsok segítségével írhatják ki. Az első parancs numerikus formában, a második futtató rendszer által alkalmazott karaktertáblának megfelelően írja ki a szereplő által megszemélyesített változóban tárolt értéket.
A hallgatás, azaz az adatbevitel a Listen to your heart
, illetve az Open your mind
kifejezezések segítségével történik, hasonlóan a kiíratáshoz az előbbi numerikus, utóbbi karakteres érték kiírását jelenti a változót megszemélyesítő szereplő részéről.
Feltételes elágazások és ugrások[szerkesztés]
Az elágazás megvalósításához két szereplő szükséges. Az első feltesz egy kérdést, amely két változó összehasonlítását indukálja (pl. Am I better than you?
), a második pedig, ha az első kérdése igaz (If so
), vagy akkor, ha hamis (If not
), ugrást valósít meg valamelyik felvonásra vagy színre.
Emlékezet[szerkesztés]
Az emlékezet szerepét a verem tölti be. Verembe értéket remember
paranccsal tehetünk, onnan pedig a recall
paranccsal vehetünk ki. Mindkét parancs után tetszőleges szöveget helyezhetünk el, mivel azt a fordító figyelmen kívül hagyja, így könnyen elhelyezhető a színdarab-stílusú szöveget imitáló forráskódba.
Példa[szerkesztés]
A Hello World program egy lehetséges megvalósítása.
Hello World. 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. Act I: Hamlet's insults and flattery. Scene I: The insulting of Romeo. [Enter Hamlet and Romeo] Hamlet: 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! 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! You are as cowardly as the sum of yourself and the difference between a big mighty proud kingdom and a horse. Speak your mind. Speak your mind! [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! [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! 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! [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. You are as worried as the sum of yourself and the difference between my small smooth hamster and my nose. Speak your mind! Juliet: Speak YOUR mind! 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! [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! 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! [Exeunt]