Ook!

Ook!（ウーク）は、プログラミング言語の一つ。David Morgan-Marがオランウータン向けのプログラミング言語として考案した。実用言語ではない難解プログラミング言語のひとつ。

オランウータンの鳴き声"Ook"のみを用いた言語である。使用するトークンは「Ook.」「Ook!」「Ook?」の3つだけで、これら2つの組み合わせで1命令を表現する。

Ook!の仕様はBrainfuckと等価である。Ook!で使用する命令はBrainfuckの命令と正確に対応するので、Ook!は実のところBrainfuckの文字の置き換えに過ぎない。

 言語仕様 
十分な長さのメモリと、それを指す1つのポインタがあることなどはBrainfuckと同じである。Ook!命令とBrainfuck命令の対応は以下の通り。

 Ook!  Brainfuck  内容Ook. Ook?  > ポインタをインクリメントOok? Ook.  <  ポインタをデクリメントOok. Ook.  + ポインタの指す値をインクリメントOok! Ook!  -  ポインタの指す値をデクリメントOok. Ook!  ,  入力から1バイトをポインタの指す値に代入Ook! Ook.  .  ポインタの指す値をASCII文字として出力Ook! Ook?  [  ポインタの指す値が0なら、対応する「Ook? Ook!」にジャンプOok? Ook!  ]  ポインタの指す値が非0なら、対応する「Ook! Ook?」にジャンプ

「Ook? Ook?」の動作は定義されていない。プログラムのトークン数が奇数の場合は構文エラーとなる。

処理系
RubyOokChad Fowler, RubyOok

参考文献
水野貴明「開発環境探訪 第12回 非常に難解でシンプルなプログラム言語――BrainF*ck」『Interface』第28巻第9号、CQ出版、2002年9月、139-143ページ。※筆者の水野は記事中Ook!に言及した部分に修正を加えたものを公開していた。

脚注

 リンク 
DM's Esoteric Programming Languages - Ook! - Ook!の仕様

Category:難解プログラミング言語