シェイクスピアプログラミング言語
シェイクスピアプログラミング言語(SPL)は、ジョン・オースルンドとカール・ウィバーグによって設計された難解なプログラミング言語です。 [1] Chefプログラミング言語と同様に、プログラムをプログラム以外の何か(この場合はシェイクスピアの戯曲)のように見せるように設計されています。
プログラムの冒頭にあるキャラクターリストは、いくつかのスタックを宣言します。当然のことながら、スタックの名前は「ロミオ」や「ジュリエット」といったものです。これらのキャラクターは互いに対話し、互いのスタックの最上位値を操作したり、プッシュしたりポップしたり、入出力を行ったりします。また、キャラクターは互いに質問をし合うことができ、これは条件文として機能します。全体として、このプログラミングモデルはアセンブリ言語に非常に似ていますが、はるかに冗長です。
シェイクスピアにおけるプログラミング
タイトル
シェイクスピアプログラムの最初の行は「タイトル」と呼ばれます。コンパイラは最初の行から最初のピリオドまでをコメントとみなします。
登場人物
これは変数を宣言するセクションです。各変数は符号付き整数値を保持でき、以下の形式となります。
名前、説明
Nameは変数名であり、コンパイラDescriptionによって無視されます。コンパイラは、シェイクスピアの登場人物に対応する名前のみを認識します。[1]
幕と場面
シェイクスピアのコードは、どの文字(変数)がどの要素と相互作用するActsかに分割されます。それぞれの要素と要素はローマ数字で番号付けされ、ラベルとして機能します。コロンの後のコードはコメントとみなされます。コメントは以下の形式で記述されます。ScenesActSceneGOTO
第1幕: ハムレットの侮辱とお世辞。第一場: ロミオへの侮辱。
入場、退場、終了
コードの各行は、通常、あるキャラクターが別のキャラクターに話しかけるセリフの形をとります。これにより、変数(話しかけられたキャラクター)の値が代入、変更、または出力されます。キャラクターは「You」、「Thou」、「Thee」のいずれかでのみ呼びかけることができます。したがって、セリフが話されるときは常に、ステージ上には正確に2人のキャラクターが必要です。1人は話すキャラクター、もう1人は話しかけられるキャラクターです。[1]変数をステージに呼び出すには、Enter1人以上のキャラクターのリストと共にコマンドを使用します。コマンドExitは、リストされているキャラクターの1人だけにステージを退場するよう指示します。[ Exeunt2] は複数のキャラクターを退場させるか、キャラクターがリストされていない場合はすべてのキャラクターがステージを退場します。[1]以下の形式が使用されます。
[ジュリエット登場][ロミオとジュリエット登場][ロミオ退場][ロミオとジュリエットの退場][退場]
線
セリフは登場人物が話すセリフとして表現され、少なくとも1つの文で構成されます。各文は、変数に新しい値を代入したり、変数にその値を出力させたり、入力を受け付けさせたりすることができます。また、セリフはスタックを操作したり、if/then文やgoto文のように動作したりすることもできます。セリフは登場人物の名前とコロンで始まります。この登場人物が話し手であるため、舞台上のもう一人の登場人物は「あなた」「汝」「汝」のように呼ばれる変数となります。
定数と値の割り当て
定数は名詞と形容詞の組み合わせで表現されます。言語はそれぞれ有限個のリストを認識し、両方のリストはÅslundとHasselströmの解釈に基づき、肯定的、否定的、または中立的な語調を持つものに分類されます。肯定的名詞と中立的名詞の値は1、否定的名詞の値は-1です。形容詞は名詞を2倍にし、形容詞は複合語として使用できます。[1]所有代名詞はパーサーによって無視されますが、「sum」、「quotient」、「cube」などの基本的な算術に関する単語は演算として認識されます。文字に値を割り当てる文は、「You」、「Thou」、「Thee」で始まり、オプションで「are as [any adjective] as」と続く場合があり、その後、新しい値を表す数式を名詞、形容詞、変数、および演算で表します。このような行の例を以下に示します。[1]
ハムレット: この嘘つきで愚かで父親もいない、臭いで愚かな卑怯者め!ジュリエット: あなたはロミオの平方根と同じくらい悪人だ!
数式では、他のキャラクターの名前(そのキャラクターが舞台上にいない場合でも)を使用して、そのキャラクターの現在の値を計算に利用したり、話しかけられているキャラクターに対して「あなた自身」や「汝自身」を使用したりすることもできます。
入出力
行は変数を呼び出して出力したり入力を受け取ったりすることもできます。「Open your heart」は変数の数値を出力し、「Speak your mind」は対応するASCII文字を出力します。「Listen to your heart」または「Open your mind」は変数にユーザーからの入力を要求します。前者は数値、後者は文字です。[1]
条件文とgoto
if/then文は、登場人物が問いかける疑問文として表現されます。「as [任意の形容詞] as」という語句は、等価性の判定を表し、「better」と「worse」はそれぞれ「より大きい」と「より小さい」を表します。「if so」または「if not」で始まる後続の行は、元の条件が真か偽かに応じて何が起こるかを決定します。goto文は「Let us」「We shall」「We must」で始まり、「return to」または「proceed to」と続き、幕または場面を指定します。場面は現在の幕のその場面として解析されます。goto文は別の幕の場面を呼び出すことはできません。[1] goto文を呼び出す条件文は次のようになります。[1]
ジュリエット: 私はあなたより優れているでしょうか?ハムレット: もしそうなら、シーン II に進みましょう。
スタックのプッシュとポップ
各変数はスタックです。「Remember me(私を覚えて)」や「Remember yourself(あなた自身を覚えて)」など、キャラクターに適切な値を「思い出す」よう指示する行がある場合、変数のスタックには整数が積まれます。キャラクターに何かを「思い出す」よう指示された場合、スタックの一番上の値はポップされます(つまり、変数はこの値を取ります)。この単語以降のテキストはすべてコメントとして扱われます。[1]
サンプルコード
標準的な「Hello, World!」プログラム:
アイデアとしては、文字列の各文字のASCII値を生成し、「Speak your mind」コマンドを使って出力することです。例えば、ハムレットの最初のセリフでは、算術演算の組み合わせを用いて、もう一人の主人公ロミオに10進数値72(2進数では1001000)を割り当てています。これはASCII文字では「H」に相当します。
二幕の演劇「Do Not Adieu」。ロミオは、並外れた忍耐力を持つ若者です。ジュリエットもまた、並外れた優雅さを備えた若い女性でした。オフィーリアはハムレットと何度も争った注目すべき女性。アンダーセン侮辱A/Sのおべっか使いハムレット。 第1幕: ハムレットの侮辱とお世辞。 第一場: ロミオへの侮辱。[ハムレットとロミオ登場]ハムレット: この嘘つきで愚かで父親もいない、臭いで愚かな卑怯者め! あなたはハンサムで金持ちで勇敢な人と 英雄よ、汝自身よ!汝の考えを語れ! あなたはあなたの太った小さなぬいぐるみの誤用された埃っぽい合計と同じくらい勇敢です 古くて腐ったコッドピースと美しくて暖かくて平和な晴れた夏の あなたの健康は、 最高に甘い赤いバラと私の父とあなた自身!あなたの考えを話してください! あなたは自分自身と差異の合計と同じくらい臆病です 偉大で強大な誇り高き王国と馬の間。あなたの考えを語ってください。 あなたの考えを話してください![ロミオ退場] シーン2: ジュリエットの賞賛。[ジュリエット登場]ハムレット: あなたはロミオと彼の馬と彼の 黒猫!思ったことを言え![ジュリエット退場] シーン 3: オフィーリアの賞賛。[オフィーリア登場]ハムレット: あなたはロミオと広場の違いと同じくらい美しい 大きな緑の静かな木の。思うところを語れ! あなたは大きな田舎町の産物のように愛らしく、私の素晴らしい 底なしの刺繍入り財布。思う存分語ってください! あなたは、最も青く澄み渡る甘い空の産物のように愛らしい リスと白馬を合わせたような美しさだ。 ジュリエットと汝との違い。汝の考えを語れ![オフィーリアとハムレットの退場] 第二幕: ハムレットの背後で。 シーン 1: ロミオとジュリエットの会話。[ロミオとジュリエット登場]ロミオ: 心の声を話してください。あなたは自分自身と周りの人々の不安を合計したほど心配しています。 私の小さな滑らかなハムスターと私の鼻の違い。あなたの 心!ジュリエット: 思ったことを言え!あなたはハムレットと同じくらい悪い!あなたは マイリトルポニーの差の2乗の差 そしてあなたの大きな毛むくじゃらの猟犬とあなたの哀れな小さな立方体 コッドピース。思ったことを話してください![ロミオ退場] シーン 2: ジュリエットとオフィーリアの会話。[オフィーリア登場]ジュリエット: 汝はロミオと小さなものの合計の商と同じくらい良い 毛むくじゃらの動物とヒル。あなたの考えを話してください!オフィーリア: お前はロミオと二倍の ヤドリギと感染した水ぶくれの違い! あなたの心![退場]
参照
参考文献
インライン参照
- ^ abcdefghij 「シェイクスピアプログラミング言語」。2022年7月21日時点のオリジナルよりアーカイブ。
一般的な参考文献
- Herrick, Chloe (2011年6月27日). 「プログラミング言語AZ:シェイクスピア」. Computerworld . 2018年11月11日時点のオリジナルよりアーカイブ。2018年11月10日閲覧。
- バーン、マイケル(2015年9月26日)「自分の言語を知ろう:シェイクスピアのコーディングの苦労と問題」マザーボード。 2018年11月10日閲覧。
- Lang, Mirco; Augsten, Stephan (2017年7月12日). 「Esoteric Programming, Teil 2: Shakespeare Programming Language」. dev-insider.de (ドイツ語) . 2018年11月10日閲覧。
- ネルソン、アンディ(2014年3月2日)「シェイクスピアプログラミング言語」『ロンドンのイングリッシュシアターアンドリテラチャー』。 2018年11月10日閲覧。
- キューナスト、チャーリー (2010 年 12 月)。 「すべてのシステム管理者: シェイクスピア プログラミング言語」。Linux-Magazin (ドイツ語) 。2018 年11 月 10 日に取得。
- Vee, Annette (2017). 『コーディング・リテラシー:コンピュータプログラミングはライティングをどう変えるのか』 ケンブリッジ、マサチューセッツ州: MIT Press . pp. 124– 125. ISBN 9780262036245。
- 「StackHack - シェイクスピア プログラミング言語 - Datorföreningen Stacken」。www.stacken.kth.se (スウェーデン語) 。2018 年11 月 10 日に取得。
外部リンク
- ホームページ
- SourceForgeページ
- スラッシュドットのシェイクスピアプログラミング言語
- プログラミング言語のAZ:Computerworldのシェイクスピア
- Python で書かれた SPL インタープリタ (GitHub リポジトリ)
- GitHubで Python で書かれた Shakespeare to C コンパイラ
- シェイクスピアラン
- オンラインインタープリタとデバッガ