難解プログラミング言語を整える
初級Ook!を整える。
= Brainf*ck の8命令を「Ook.」「Ook?」「Ook!」に置き換えただけの言語を、相互変換して実行する
Ook! が初めての方は、先に そもそも Ook! とは・何の役に立つのか をどうぞ。
① Ook! を入力・実行
Ook. / Ook? / Ook! の2語1組の並びを入力します。空白・改行は無視されます。
対応ビュー(Ook!の2語が、どのBrainfuck命令になるか)
上のOok!ソースを書き換えると、先頭30組がここに並びます。
結果
「実行する」を押すと、ここに出力が表示されます
そもそも Ook! とは
Brainfuck を、オランウータンのことばに言い換えた言語。
Ook!(ウーク)は、2003年に David Morgan-Mar が発表した言語です。「Ook.」「Ook?」「Ook!」という3つの語を2つ組み合わせて、1つの命令を表します。「オランウータンでも読み書きできる言語」という冗談が、名前と見た目の由来です。
計算の仕組みは Brainfuck とまったく同じで、8つの命令の「見た目」を置き換えただけです。新しい機能を足すことが目的ではなく、記号の羅列だった Brainfuck を、読むとちょっと笑える形に変えた遊びとして作られました。ふつうの言語が「何ができるか」で差をつけるのに対し、Ook! は「どう見えるか」だけが違います。
何の役に立つのか
-
「言語の中身」と「見た目」は別だと分かる
同じ仕組みに別の表記を与えられる、という発想を、いちばん単純な形で見られます。
-
変換プログラム作りの入門題材
記号と語の置き換えだけなので、ある言語から別の言語へ変換するプログラムを作る最初の練習に向いています。
-
記号の置き換えによる符号化の感覚
同じ情報を別の符号で表す、という考え方に触れられます。
-
技術の話をユーモアで伝える教材
難しい話題を、笑いを交えて説明するきっかけになります。
-
研修のアイスブレイクになる
「オランウータンの鳴き声で動くプログラム」は、場を和ませる話題です。
知っておくと面白いこと
- 2語で1命令なので、Brainfuck の記号1つが、Ook! では2語に増えて長くなります。
- 8つの命令は Brainfuck と1対1で対応するため、Brainfuck を知っていれば Ook! も読めます。
- 実行のしかたも Brainfuck と同じなので、上のツールでは相互に変換できます。
上の実行環境でサンプルを動かし、対応ビューで Ook! の2語がどの Brainfuck 命令になるのか見比べてみてください。
解説
Ook! は「命令の見た目」を変えただけのBrainfuck。
Ook!は2003年、David Morgan-Mar(esolangs.org: Ook!)が発表した言語です。計算の仕組みはBrainfuckと完全に同一で、8つの命令それぞれに「Ook.」「Ook?」「Ook!」の2語1組を割り当てただけです(1語だけでは3種類しか作れないため、2語の組み合わせ=3×3=9通りのうち8通りを使い、残り1通り「同じ語の重複を除く」形で命令を作っています)。「見た目はオランウータンの鳴き声のようで人間には読みにくいが、計算能力はBrainfuckとまったく同じ」という、名前で笑わせながら本質を伝える構成のジョーク言語です。
| Ook! の2語 | Brainfuck | 意味 |
|---|---|---|
| Ook. Ook? | > | ポインタを1つ右へ |
| Ook? Ook. | < | ポインタを1つ左へ |
| Ook. Ook. | + | 今のセルの値を+1 |
| Ook! Ook! | - | 今のセルの値を-1 |
| Ook! Ook. | . | 今のセルの値を文字として出力 |
| Ook. Ook! | , | 入力を1文字読む(本ページは入力なし=常に0) |
| Ook! Ook? | [ | 今のセルが0なら対応する ] の次へジャンプ |
| Ook? Ook! | ] | 今のセルが0でなければ対応する [ の次へ戻る |
送信ゼロ(入力したコードはこの端末から出ません)。入力を読む命令(Ook. Ook!/Brainfuckの「,」)はこのページでは常に0を返します(入力欄を持たないため)。実行はステップ数の上限に達すると自動的に停止します。
もっと詳しく知りたい方はエソラング図鑑(Malbolgeなど16言語の解説)や、Brainfuckの遊び場(ステップ実行・テープ可視化・テキストからの自動生成)もどうぞ。
このツールについて
Ook!はBrainfuckの8命令を「Ook.」「Ook?」「Ook!」の2語1組(オランウータンの鳴き声に見立てた表記)に置き換えただけの言語です。命令セットはBrainfuckと完全に同じなので、このページではOok!↔Brainfuckの変換と、どちらの形でも実行できる場を用意しました。
Ook! は Brainf*ck と計算能力が完全に同じで、命令の見た目だけを変えた言語。Ook!→Brainf*ck、Brainf*ck→Ook! の両方向変換と実行ができます。
主な機能
- Ook! ⇄ Brainf*ck の双方向変換(位置つきエラー表示)
- そのまま実行して出力を確認
- Hello World のサンプルつき
- 送信ゼロ・入力命令「,」は常に0
- 2語ごとの対応ビュー(Ook!→Brainfuck 命令)
よくある質問
Q. Ook! は Brainf*ck と何が違うのですか?
A. 計算の仕組みは完全に同じです。Brainf*ck の8命令それぞれに「Ook.」「Ook?」「Ook!」の2語1組を割り当てただけで、できることは変わりません。
Q. なぜ2語1組なのですか?
A. 3種類の語だけでは8命令に足りないためです。2語の組み合わせ(3×3=9通り)のうち8通りを使って、8命令すべてに割り当てています。
Q. 変換エラーが出ました。原因は?
A. 語が Ook. / Ook? / Ook! のいずれでもない、語数が奇数で2語1組にならない、存在しない組み合わせ(例: Ook? Ook?)のいずれかです。エラーには文字位置を表示します。
Q. 入力命令「,」は使えますか?
A. 使えません。このページは入力欄を持たないため、入力命令は常に0として扱われます。
入力値はURLの「#」以降に入るためサーバーには送信されません。リンクを開くと同じ状態を復元します。