Befunge

今回は難解なプログラミング言語、Befungeを試してみました。
以前、Brainf*ckという言語をとりあげましたが、これと同類のものといえるでしょう。

チューリングマシン

実用的なプログラム言語というより、プログラムの意味を掘り下げて考えることができる教材的なものと思っています。
こういうものから、新しい発想がうまれます。

Befungeは、2次元のグリッド上にコマンドが配置され、ルールにしたがい1マスごと移動しながら実行されます。

コマンド一覧(https://esolangs.org/wiki/Befungeより)

Webの実行環境を使って、上記サイトのサンプルを動かしてみました。
https://rutteric.com/software/fungejs/

コマンドの意味を説明します。
><^v 進行方向を指定 "" 文字列をスタックにPush (Toggle stringmode (push each character's ASCII value all the way up to the next ") ) : スタックの値を複製 (Duplicate top stack value) _ 条件分岐 (Horizontal IF: pop a value; set direction to right if value=0, set to left otherwise) , スタックの値をPOPして表示 (Pop top of stack and output as ASCII character) @ プログラムエンド 方向コマンドで、ループを作って、スタックに値が亡くなったところで終了という構造です。 スタックはFirst-In Last-Outなので、文字列を逆順に積み増す。スタック値の複製をするのは、評価と表示で二回POPするからです。 このWebの実行環境、実行速度を亀で表したりと、親しみやすいデザインですが、中身はとてもハードです。しかしながらとても良い体験ができるツールだと思いました。 このブログのテーマにとてもマッチする題材でした。