Ook!言語:Brainfuckベースの難解言語をDockerで実行
🐵 はじめに
みなさんは「Ook!」というプログラミング言語をご存知でしょうか?
これは Brainfuck をベースにした難解プログラミング言語(esolang) で、「Ook.」「Ook?」「Ook!」 の3つの単語だけを組み合わせてコードを書きます。
一見するとオランウータンの鳴き声にしか見えませんが、実はきちんと動作し、「Hello World!」 を出力することも可能です。
今回、Docker環境で Ook! を実行できる仕組みを作成しました。
👉 ソースコードはこちら → ook-lang-playground (GitHub)
以下では、Ook! 言語の概要と実行方法を紹介します。
🛠️ 環境構築
1️⃣ Docker を使って環境を準備
まずは docker-compose
を使って実行環境を構築します。
docker-compose build
2️⃣ コンテナを起動
docker-compose up -d
これで、Ook! のコードを実行する準備が整いました。
Hello World!
を出力する
🎉 準備ができたら、早速 hello.ook
を実行してみましょう。
docker-compose exec ook-lang python3 /app/ook.py /app/hello.ook
もし Ook! のコードが正しく書かれていれば、以下のように出力されます。
🐵 Debug: Ook! words split → ['Ook.', 'Ook?', ..., 'Ook.', 'Ook!']
🔢 Total words count: 282 (should be even)
Hello World!
hello.ook
のコードは、282単語 の Ook! で構成されており、
Brainfuck に変換されて実行される仕組みになっています。
🧠 Ook! 言語の基本構文
Ook! は、Brainfuck の各命令を 「Ook.」「Ook?」「Ook!」 の組み合わせに置き換えたものです。
Ook! コード | Brainfuck 相当 | 説明 |
---|---|---|
Ook. Ook? |
> |
ポインタを右へ移動 |
Ook? Ook. |
< |
ポインタを左へ移動 |
Ook. Ook. |
+ |
メモリの値を1増やす |
Ook! Ook! |
- |
メモリの値を1減らす |
Ook! Ook. |
. |
メモリの値を出力 |
Ook. Ook! |
, |
入力を受け取る |
Ook! Ook? |
[ |
ループ開始 |
Ook? Ook! |
] |
ループ終了 |
実際に hello.ook
を書いてみると、こんな感じになります。
Ook. Ook? Ook. Ook? Ook. Ook? Ook! Ook! Ook! Ook! Ook. Ook? Ook. Ook? Ook! Ook.
...
(省略: 約280単語の Ook! コード)
...
Ook. Ook. Ook! Ook.
正しく書かれていれば Hello World!
を出力します。
ただし、単語数が奇数だったり、構文を間違えるとエラーになります! 🚨
🔗 リポジトリ公開中
今回の Ook! 言語実行環境は、以下のリポジトリで公開しています。
興味のある方はぜひ試してみてください!
👉 ook-lang-playground (GitHub)
📝 さいごに
Ook! は、Brainfuck と同じくシンプルな命令セットで動作する難解言語ですが、そのユニークな文法から 遊び心のあるプログラミング体験 ができます。
もし Ook! に興味がある方は、ぜひ試してみてください!
また、「こんな難解言語を試してみた」などのアイデアがあれば、ぜひコメントで教えてください 😊
🐵 Happy Ook! Coding! 🚀
Discussion