给你们介绍个变态编程语言Brainfuck
2011-11-14 18:13
162 查看
Brainfuck,是一种极小化的计算机语言,它是由Urban
Müller在1993年创建的。由於fuck在英語中是髒話,这种语言有时被称为brainf*ck或brainf***,甚至被简称为BF。
Müller的目标是建立一种简单的、可以用最小的编译器来实现的、符合图灵完全思想的编程语言。这种语言由八种状态构成,为Amiga机器编写的编译器(第二版)只有240个字节大小。
就象它的名字所暗示的,brainfuck程序很难读懂。尽管如此,brainfuck图灵机一样可以完成任何计算任务。虽然brainfuck的计算方式如此与众不同,但它确实能够正确运行。
这种语言基于一个简单的机器模型,除了指令,这个机器还包括:一个以字节为单位、被初始化为零的数组、一个指向该数组的指针(初始时指向数组的第一个字节)、以及用于输入输出的两个字节流。
下面是这八种状态的描述,其中每个状态由一个字符标识:
(按照更节省时间的简单说法,
(第三种同价的说法,
Brainfuck程序可以用下面的替换方法翻译成C语言(假设
变态吧!
Müller在1993年创建的。由於fuck在英語中是髒話,这种语言有时被称为brainf*ck或brainf***,甚至被简称为BF。
Müller的目标是建立一种简单的、可以用最小的编译器来实现的、符合图灵完全思想的编程语言。这种语言由八种状态构成,为Amiga机器编写的编译器(第二版)只有240个字节大小。
就象它的名字所暗示的,brainfuck程序很难读懂。尽管如此,brainfuck图灵机一样可以完成任何计算任务。虽然brainfuck的计算方式如此与众不同,但它确实能够正确运行。
这种语言基于一个简单的机器模型,除了指令,这个机器还包括:一个以字节为单位、被初始化为零的数组、一个指向该数组的指针(初始时指向数组的第一个字节)、以及用于输入输出的两个字节流。
下面是这八种状态的描述,其中每个状态由一个字符标识:
字符 | 含义 |
---|---|
> | 指针加一 |
< | 指针减一 |
+ | 指针指向的字节的值加一 |
- | 指针指向的字节的值减一 |
. | 输出指针指向的单元内容(ASCII码) |
, | 输入内容到指针指向的单元(ASCII码) |
[ | 如果指针指向的单元值为零,向后跳转到对应的]指令的次一指令处 |
] | 如果指针指向的单元值不为零,向前跳转到对应的[指令的次一指令处 |
]也可以说成“向前跳转到对应的
[状态”。这两解释是一样的。)
(第三种同价的说法,
[意思是"向後跳转到对应的
]",
]意思是"向前跳转到对应的
[指令的次一指令处,如果指针指向的字节非零。")
Brainfuck程序可以用下面的替换方法翻译成C语言(假设
ptr是
char*类型):
Brainfuck | C |
---|---|
> | ++ptr; |
< | --ptr; |
+ | ++*ptr; |
- | --*ptr; |
. | putchar(*ptr); |
, | *ptr =getchar(); |
[ | while (*ptr) { |
] | } |
相关文章推荐
- 准备踏入IT编程的学子们,你们第一门编程语言选谁? Are You Ready? Go!
- 计算机编程语言介绍(Python)
- 编程语言介绍
- 常用的几种编程语言的介绍
- awk命令、awk编程语言详细介绍和实例
- 【编程语言】Python操作注册表相关步骤详细介绍
- 经典编程语言介绍
- python学习之路 一 :编程语言介绍
- 编程语言里的静态、动态、强类型、弱类型等概念介绍
- 如何高效的向新手程序员们介绍编程语言?
- 介绍两个比较好玩的编程语言
- 准备踏入IT编程的学子们,你们第一门编程语言选谁? Are You Ready? Go!
- 编程语言介绍-转载自zh.wikipedia.org(大陆被封杀了)
- 移动互联网来了,很多创业的小伙伴们,你们还在为用户的访问慢的问题头疼吗?----腾讯NoSQL高速存储(又名CMEM)介绍
- 【编程语言-Java】ThreadPoolExecutor介绍与实例
- ReSharper的功能真的很强大主要是针对代码规范和优化,园子里介绍的也不少,如果你没有安装,那我只能表示你们会相见恨晚
- C语言基本教程 第1课:课前预习,介绍编程语言学习的基本原则和注意事项
- 常见编程语言介绍
- 大家好,给你们介绍一下,这是我的....