かの有名な「シェークスピア」を名前の中に有するプログラミング言語があります。この言語の凄さは、なんと言ってもソースコードの美しさにあります。
今回はそんなThe Shakespeare Programming Languageについて書いていきたいと思います。
まずは、SPLで書かれた「Hello World」のソースを見てみましょう。
The Infamous Hello World Program. 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]
プログラマなら誰もが一度は書いたことがある「Hello World!」もSPLで書くとこうなります。どこに「Hello World!」が関係しているのかまったくわかりません。そして見てください、この美しい文章を。
しかしこの言語、日本語の資料は皆無に等しいんですよね(Googleで検索しても紹介だけで言語についての資料はみつからない)。私は英語なんてほとんどわからん人間なので、Excite翻訳を駆使しながら気合で英語資料を読んだりして理解に勤めています。
The Shakespeare Programming LanguageのDocumentのDesign Goalsの項に以下のように書かれています。
The design goal was to make a language with beautiful source code that resembled Shakespeare plays. There are no fancy data or control structures, just basic arithmetic and gotos. You could say we have combined the expressiveness of BASIC with the user-friendliness of assembly language.
変わったデータや制御構造は無いようですが、プログラミング言語ですから、基本的な計算が出来ます。gotoもあります。そして、シェークスピアの劇のような美しいソースコードが書ける。ここが一番の特徴ですね。