📜  如何用 Brainfuck 打印 hello world (1)

📅  最后修改于: 2023-12-03 15:09:13.231000             🧑  作者: Mango

使用 Brainfuck 打印 hello world

Brainfuck 是一种极为简单、古怪的编程语言,与常规的编程语言相比,它的语法非常头痛。但是,如果你想要了解一种不同于传统语言的编程语言,Brainfuck 就是个好选择。

在 Brainfuck 中,你使用一个指针、一个字符数组以及 8 种指令来表达程序逻辑。这些指令分别对应 C 语言中的如下 8 个操作符:+ - > < . , [ ](加减指针,移动指针,输出字符,输入字符,循环起始,循环结束)。虽然 Brainfuck 不太适合编写实际程序,但是它可以为你提供更深层次的思维训练

下面是 Brainfuck 中打印 "hello world" 的代码:

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

解释如下:

  1. 我们首先将指针指向第一个数组元素。由于该元素为 0,所以我们需要将该元素的值加到 72,即 H 的 ASCII 码值。
  2. 接下来,将指针向右移动一个位置,并将该元素的值加到 101,即 e 的 ASCII 码值。依此类推,直到将 o 的 ASCII 码值加到数组的第 7 个元素为止。
  3. 接着,将指针向右移动,让其指向数组的第 8 个元素,即 \0 字符,它表示字符串的结尾。
  4. 然后,将指针向左移动,让其指向数组的第 7 个元素,即, o 的 ASCII 码值。该指令将数组中的值减去 32,即将 o 的 ASCII 码值减去 32,结果为 79,即 O 的 ASCII 码值。
  5. 右移指针,再将指令加到 10,即 \n 的 ASCII 码值。
  6. 接着,将指针向左移动 10 个位置,并将其值减去 10,即 \n 的 ASCII 码值。然后将指针重置为 0,将程序执行控制权再次转移到该元素。

运行 Brainfuck 程序,可以使用类似这样的 Brainfuck 解释器:

输入代码后,单击“Execute”按钮,就可以在输出面板上看到 "hello world" 的字样了。

对于学习 Brainfuck 的人来说,这是个非常简单、实用的例子,它不仅能够让你熟悉 Brainfuck 的语法,还能够为你下一步学习 Brainfuck 奠定基础。

你还可以尝试使用其他 Brainfuck 实现来运行 hello world 程序,如下所示:

- [brainfuck](https://github.com/fabianishere/brainfuck) - 一个 Brainfuck 编辑器和解释器;
- [brainfuck.js](https://github.com/vagler/brainfuck-js) - 一个 Brainfuck 解释器(使用 JavaScript 编写);
- [bf](https://github.com/maximilianvoss/bf) - 一个 Brainfuck 解释器(使用 C++ 实现)。

通过实践操作 Brainfuck,你将会获得更深层次的思考。