打开/关闭菜单
切换首选项菜单
打开/关闭个人菜单
未登录
未登录用户的IP地址会在进行任意编辑后公开展示。

Brainfuck/Ook/shortOok

来自迷雾wiki
Musicraft留言 | 贡献2025年3月4日 (二) 14:17的版本

基本介绍

Brainfuck是一种极简的编程语言,以其极度简化的语法和难以阅读的代码而闻名。它是深奥编程语言(Esoteric programming language,简称Esolang)的代表作之一。尽管名字看起来有些粗俗,但这个名字恰好反映了这种语言的特点——阅读和编写它的代码常常会让人感到"脑痛"。

Brainfuck由Urban Müller在1993年创建。创造这门语言的初衷是设计一个尽可能小的编译器。当时Müller成功地为Amiga操作系统创建了一个只有240字节大小的Brainfuck编译器(第二版)。

Brainfuck的设计思想是遵循"图灵完备性(Turing completeness)"原则,以最小的概念实现一种功能完整的编程语言。尽管语法极度简化,它仍然具有与任何其他编程语言相同的计算能力。

语言特点

Brainfuck语言有以下几个显著特点:

  • 极简语法:整个语言只有8个指令,由8个符号表示
  • 图灵完备:尽管简单,但它理论上可以完成任何计算任务
  • 基于指针:程序操作一个线性内存带和一个可移动的指针
  • 难以阅读:代码极度晦涩,难以理解和维护
  • 极小编译器:最小的编译器实现可以非常小(数百字节)

指令详解

Brainfuck语言仅由以下8个指令组成:

字符 含义
> 指针加一
< 指针减一
+ 指针所指字节的值加一
- 指针所指字节的值减一
. 输出指针所指字节内容(ASCII码)
, 向指针所指的字节输入内容(ASCII码)
[ 若指针所指字节的值为零,则向后跳转,跳转到其对应的]的下一个指令处
] 若指针所指字节的值不为零,则向前跳转,跳转到其对应的[的下一个指令处

示例代码

Hello World程序

以下是一个打印"Hello World!"的Brainfuck程序:

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

这段代码通过操作内存单元的值,最终输出对应的ASCII字符。

计数器

一个简单的从1数到5的程序:

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

这段代码首先在第一个单元格设置循环次数5,然后每次循环输出并增加第二个单元格的值。

常用工具

BF,ook加解密