Getting started with BrainFuck
Welcome!
This playground aims to understand the BrainFuck language, sometimes called BF.
The language is really simple to learn, as there are only 8 instructions. It is also a Turing-complete language, so you can virtually implement any algorithm using BF.
However,programs are said to be a bit complex. The goal of this playground is to demonstrate that they aren't !
In case you're wondering : the cover image is the source code of a BF interpreter, written in BF ^^. This will be part of a future playground :-)
Let's start
BF is executed on a memory array. By default, it's a 30k-cell-long array of 8-bit integers, but some other implementations are more flexible.
There are two registers : Instruction pointer and Memory Pointer.
Finally, there are 8 instructions:
>
: Move memory pointer to the right and go to next instruction<
: Move memory pointer to the left and go to next instruction+
: Increment memory cell and go to next instruction-
: Decrement memory cell and go to next instruction,
: Read char from input and store in memory then go to next instruction.
: Write memory value as ASCII char to output then go to next instruction[
: Go to next instruction if cell is not null, or to the matching closing "]" if null]
: Go back to the matching opening "[" if cell is not null, or go to next instruction if null
Simple program : cat
In BF, the easiest code sample is not hello world, it's a BF implementation of Unix cat
command.
cat copies input chars to output. In BF, we just have to
1 , read first char
2 [ while not null (go to 6 if null)
3 . print char
4 , read next char
5 ] loop if needed (go back to 2) or go to 6
6 nothing
Note : any char other than the 8 instructions is considered as a comment. It's really easier to read this source code than the same one-line version
,[.,]