Ook!
表示
パラダイム | 構造化プログラミング |
---|---|
設計者 | David Morgan-Mar |
型付け | なし |
主な処理系 | RubyOok, Ook#, Acme::Ook |
影響を受けた言語 | Brainfuck |
影響を与えた言語 | COW |
ウェブサイト | Ook! |
この記事の主題はウィキペディアにおける独立記事作成の目安を満たしていないおそれがあります。 (2017年10月) |
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?
」の動作は定義されていない。プログラムのトークン数が奇数の場合は構文エラーとなる。
処理系
[編集]- RubyOok[1]
参考文献
[編集]- 水野貴明「開発環境探訪 第12回 非常に難解でシンプルなプログラム言語――BrainF*ck」『Interface』第28巻第9号、CQ出版、2002年9月、139-143ページ。※筆者の水野は記事中Ook!に言及した部分に修正を加えたものを公開していた[1]。