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.