Warning : before you read any further, I have to warn you
that this file contains some strong language, and this
ReadMe file would probably be rated R (for those unfamiliar
with the US censorship, R means restricted, i.e. you gotta
be more than 17 to see those movies without an adult).

If you don't wish to proceed, please close this ReadMe file.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

By reading this file any further, you promise not to sue
me for using strong offensive language.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

Are you sure you wish to proceed?

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

Last warning : the next paragraph will contain *multiple* copies
of a word containing "Fuck". This is your last chance to run away.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

OK, so here's the scoop:

bf stands for BrainFuck. It's a language I've heard of on the
net, while looking for remnants of a Corewars-like game I had
co-designed and implemented with a couple friends. I couldn't
find what I was lookign for, but I discovered BrainFuck, and
it opened my mind to a whole new kind of programming.

BrainFuck seems to originate on the Amiga, where somebody had
written a tiny compiler (they wanted a compiler with a binary
smaller than 256 bytes), which means that the language had
to be really small. Somebody got another tiny  compiler working
under linux, which totals 172 bytes. Somebody also had a
BrainFuck interpreter written in C whose source was
sqeezed into three 80-column lines.

The name might sound offensive, but gets perfectly justified
after you try to use the language. It is just insanely harder
than many other languages. If you thought that writing code
by punching hex opcodes into a binary file editor was the
ultimate challenge, you're gonna like BrainFuck. Otherwise,
you should just stop reading here and use regular applications.

Yes, the name is realistic. I think that it perfectly describes
what happens after even a couple minutes trying to get something
as simple as "Hello, World!" to work.

Some people even go as far as trying to optimize BrainFuck
code. Here's a small "Hello, World!", by Abhijit Menon-Sen:

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

Some people go even further : I found two examples of quines,
i.e. programs that print their own source. While you
can do a tiny quine in C, the smallest known BrainFuck quine
is almost 3 kB.

Can it go any further?

Yes, sure.

Abhijit Menon-Sen designed a BrainFuck extension called itch,
that adds 8 macros that can replace +> +< -> -< ,> ,< .> .<
as well as two "library calls" that allow to directly
read and write numbers instead of ASCII chars.

I think that something worst than BrainFuck could be done,
e.g. by using 1-bit cells. That would obviously make +
and - do the same, further reducing the instruction
set to 7 instructions. I guess that it would still be
Turing-complete, but I'm not 100% sure.
