Brainfuck.js is an interpreter for Brainfuck the programming language written in JavaScript. Written by Xavier Yao just for fun.
盖子说得好,Brainfuck是入编译坑的首选。实际上这语言真的很有内涵,诠释了图灵机的工作原理。由此衍生的编程语言有WhiteSpace,Befunge,Chef,Ook,最后当然免不了国人开发的草泥马语言
这么些个编程语言虽然写法不一样,但是原理基本相同。
请看Brainfuck介绍:
Brainfuck 是一个极小的只有8个指令的图灵完全的编程语言。 除"><+-.,[]"之外的的任何字符都会被忽略 (不包含双引号)。 Brainfuck 包含一个有30,000个单元为0的数组,和 一个数据指针指向当前的单元。 8个指令如下: * **\+** : 指针指向的单元的值加1 * **\-** : 指针指向的单元的值减1 * **>** : 将指针移动到下一个单元(右边的元素) * **<** : 将指针移动到上一个单元(左边的元素) * **.** : 打印当前单元的内容的ASCII值 (比如 65 = 'A'). * **,** : 读取一个字符到当前的单元 * **[** : 如果当前单元的值是0,则向后调转到对应的]处 * **]** : 如果当前单元的值不是0,则向前跳转到对应的[处 [ 和 ] 组成了一个while循环。很明显,它们必须配对。 好了这就是brainfuck了。也没那么难,是吧?为了好玩,你可以写你自己的 brainfuck程序,或者用其他语言写一个brainfuck的解释器,解释器非常容易 实现,但是如果你是一个自虐狂的话,你可以尝试用brainfuck写一个brainfuk的 解释器。
事实上用brainfuck写的brainfuck解释器真的存在:awib 写出这玩意的是什么神人啊……简单目测,这玩意是用把高级语言编译成brainfuck的编译器编译出来的…………
我写的JS版本效果如下:
P.S. 代码请自行F12,有bug,轻吐槽。
You can try to start with this Hello World code:
++++++++++[>+++++++>++++++++++>+++>+<<<<-]>++.>+.+++++++..+++.>++.<<+++++++++++++++.>.+++.------.--------.>+.>.