teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

1

refinement

2017/12/19 15:03

投稿

yohhoy
yohhoy

スコア6191

answer CHANGED
@@ -1,8 +1,15 @@
1
+ > brainfuckでサブルーチンを実装することはできますか?
2
+
3
+ "サブルーチン"を「あるプログラムの実行位置から呼出(call)され、後で同位置へと復帰(return)可能なコード片」と解釈すると、Brainf*ckそのものでは実現不可能と考えます。
4
+
5
+ サブルーチンを実現するには、Brainf*ckプログラムの現在の“実行位置”を保存しておき、後から“実行位置”を復元する必要があります。通常のプログラミング言語ではこの動作は暗黙的に行われますが、Brainf*ckに用意された条件付きジャンプ命令(`[`,`]`ペア)を用いてもこの動作を直接実現できません。
6
+
7
+ ---
1
8
  > スタックとVMの仕組みを実装しなければならないので、もし実現できたとしても相当巨大なコードになると思います。
2
9
 
3
- この規模のBrainf*ckプログラムをフルスクラッチ開発するのは現実的でないと思います。たぶん、普通の人類には
10
+ この規模のBrainf*ckプログラムをフルスクラッチ開発するのは現実的でないと思います。たぶん、普通の人類には
4
11
 
5
- ELVMを利用することで、Brainf*ck上で(原理的には)任意のプログラム動作が可能となります。
12
+ たとえばELVMを利用することで、Brainf*ck上で(原理的には)任意のプログラム動作が可能となります。
6
13
 
7
14
  - [GitHub shinh/elvm](https://github.com/shinh/elvm), EsoLangVM Compiler Infrastructure
8
15
  - [ELVM Compiler Infrastructure について](http://shinh.hatenablog.com/entry/2016/12/22/005706)