シェイクスピアプログラミング言語 (Shakespeare Programming Language)
シェイクスピア
プログラミング言語(SPL)は、Jon Åslund氏とKarl Hasselström氏によって開発された特異な
プログラミング言語です。この言語は、Chef言語と同様に、一見するとプログラムには見えず、まるでシェイクスピアの演劇のスクリプトのような形状をしています。このユニークなアプローチは、それ自体がプログラミングの面白さを体現しています。
プログラム構成
SPLでは、プログラムの最初には登場人物のリストが必要で、ここで登場人物が
スタックとして宣言されていきます。登場人物の名前は「ロミオ」や「ジュリエット」といった劇中のキャラクター名でなければならず、これらの名前を用いて数値のプッシュやポップ、
入出力操作を行います。また、登場人物同士の会話を通じて、条件文の処理を行うことも可能です。全体として、このプログラミングモデルは
アセンブリ言語に似た側面がありながら、その表現が非常に冗長であるため、独自の魅力を放っています。
プログラミングの要素
SPLのプログラムは演目(タイトル)、配役表、幕、場に分かれています。最初の行である「演目」は、コンパイラによってコメントとして扱われます。また、配役表では変数の宣言が行われ、これらの変数にはシェイクスピアの作品に登場するキャラクター名が必要です。宣言は、次の書式に従います:
```
Name, Description
```
この形式で、変数の名前(Name)と説明文(Description)が大切にされており、説明文はコンパイラによって無視されます。
幕と場
プログラムは「幕」と「場」に分けられ、
ローマ数字で番号が振られます。各幕と場はGOTO文のラベルとして機能し、コロンの後はコメントとして扱われます。例えば:
```
Act I: Hamlet's insults and flattery.
Scene I: The insulting of Romeo.
```
登場と退場
登場人物は「舞台」に上がることで存在を示さなければなりません。このために「Enter」コマンドが使用され、対照的に「Exit」コマンドで退場します。「Exeunt」コマンドは、指定せずに全ての人物を退場させることも可能です。具体的な例は以下の通り:
```
[Enter Juliet]
[Enter Romeo and Juliet]
[Exit Romeo]
[Exeunt Romeo and Juliet]
[Exeunt]
```
各コマンドの後には、キャラクターの名前と台詞が続きます。
コードの例
SPLの基本的なサンプルとして、
Hello World|Hello_worldプログラムを考えてみましょう。以下にSPLでの表現を示します:
```
Romeo, a young man with a remarkable patience.
Juliet, a likewise young woman of remarkable grace.
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!
[Exit Romeo]
```
ここでは、各対話によってキャラクターの変数が設定され、最後の「Speak your mind!」が相手に設定された値を出力する役割を果たします。
関連項目
さらに詳しい情報は、以下の外部リンクから得ることができます: