Brainfuck:一款传奇的编程语言
账号已注销
2020年11月17日 21:09

说来编程语言我们都知道吧,比如说C、C++、Java、Python之类的,这些语言的可读性都比较高,比如说C语言的hello,world程序这样写:

#include<stdio.h>

int main(){

    printf("hello,world!\n&#​34;);

    return 0;

}

你看,include、main、printf、return这些关键字都很自然化,不过今天我要说的是一款可读性几乎为0的语言:Brainfuck!出于文明的考虑,我们还是叫他BF语言吧。

这个语言的解释器在github有,我来贴出来链接:http://fatiherikli.github.io/brainfuck-visualizer/

我们来看一下他初始给的hello,world程序:

BF初始给的hello,world程序

我们来介绍一下这个语言的关键字:

  1. + ----- 当前字节数+1

  2. - ----- 当前字节数-1

  3. > ----- 向下一个字节移动

  4. < ----- 向上一个字节移动

  5. . ----- 输出当前字节的内容

  6. [ ----- 循环的开始

  7. [ ----- 循环的结束

来看一下效果

再看看循环命令,这个也不是很复杂,假如给你一个任务,把第一字节的值加到100,如果是刚刚接触这个语言的人一定会想到写100个+然后搞定,不过你知道10×10=100吗?没错,这个就用到了循环,我们需要循环10次,循环的每一次都把字节加10,这样就可以达到效果,代码如下:

>++++++++++[<++++++++++>-]<

没错,就是这么的杂乱无序,先来看看效果:

执行流程:首先前往第二字节然后加到10然后进入循环,进入循环第一步回到第一字节加10然后前往第二字节减掉1,不然就会成为死循环,因为在循环尾部他会判断当前字节是否为0,如果否则会重复执行。在循环结束后就会回到第一字节,100就出来了,并不是打100个+然后……

那么会了循环,我们来输出Hello,world吧!

要输出Hello,world,首先就要输出一个H,H的ascii码是72,当然会了循环这会很简单代码如下:

>++++++++[<+++++++++>-]<.

执行结果:

输出H

我们已经完成了第一步,那么接下来的步骤依次类推就行了。看一下完整代码:

>++++++++[<+++++++++>-]<.>>++++++++++[<++++++++++>-]<+.>>++++++++++++[<+++++++++>-]<.>>++++++++++++[<+++++++++>-]<.>>++++++++++[<+++++++++++>-]<+.>>++++[<+++++++++++>-]<.>>++++++++++[<+++++++++++>-]<+++++++++.>>++++++++++[<+++++++++++>-]<+.>>++++++++++[<+++++++++++>-]<++++.>>++++++++++++[<+++++++++>-]<.>>++++++++++[<++++++++++>-]<.

是不是很复杂。。。

那么,就这样吧,进入我的个人空间​查看更多内容!