Brainfuck

**Brainfuck** (*jodecerebros*), ye un llinguaxe de programación esotéricu, diseñáu por Urban Müller en 1993, coles mires de faer un llinguaxe que fuera al empar bien simple, Turing completu y que riquiera un compilador pequeñu. Müller basó Brainfuck na máquina de Turing y sirviólu d'inspiración el compilador de 1024 bytes de tamañu del llinguaxe FALSE.

La distribución clásica ye la versión 2 escrita pol mesmu Müller, conteniendo un compilador pal ordenador Amiga, un intérprete, programes d'exemplu y un documentu "readme".

## Diseñu del llinguaxe
El llinguaxe basar nun modelu d'execución simple que consiste, amás del programa, d'un vector de (siquier) 30.000 bytes inicializados a cero, un piqueru sobre esi vector (que al empiezu de la execución apunta al primer elementu del vector) y dos "corrientes" de bytes pa la entrada y la salida.

### Les Instrucciones
Hai solu ocho instrucciones, y toes son d'un calter.

;Traducción a otros llinguaxes
Los programes de Brainfuck pueden traducise a C y Perl con estes substituciones, suponiendo que `ptr` seya del tipu `unsigned char*`. Sicasí, tienen los sos propios traductores.

## Exemplos
;Hola Mundu!

Esti sería'l típicu programa qu'escribe "Hola mundu!"

```bf
++++++++++
 [ Bucle pa empecipiar les memories (repitir 10 vegaes)
 >+++++++>++++++++++>+++++++++++>+++>+<<<<<-
 70 100 110 30 10
 ]
 >++. imprime 'H' (72) 1
 >>+. imprime 'o' (111) 3
 ---. 'l' (108) 3
 <---. 'a' (97) 2
 >>++. espaciu (32) 4
 <+. 'm' (109) 3
 ++++++++. 'o' (117) 3
 -------. 'n' (110) 3
 <+++. 'd' (100) 2
 >+. 'o' (111) 3
 >+. '!' (33) 4
 >. '\n' (10) 5
```

El correspondiente códigu "Hello World!" escribiríase, nuna sola llinia:

```bf
++++++++++[>+++++++>++++++++++>+++>+<<<<-]>++.>+.+++++++..+++.>++.<<+++++++++++++++.>.+++.------.--------.>+.>.
```
 yá que nun-y afecten los espacios, les tabulaciones o los saltos de llinia.
; El xuegu de la vida 


```bf
Linus Akesson presents:
 The Game Of Life implemented in Brainfuck

 +>>++++[<++++>-]<[<++++++>-]+[<[>>>>+<<<<-]>>>>[<<<<+>>>>>>+<<-]<+
 +++[>++++++++<-]>.[-]<+++[>+++<-]>+[>>.+<<-]>>[-]<<<++[<+++++>-]<.<<[>>>>+
 <<<<-]>>>>[<<<<+>>>>>>+<<-]<<[>>>>.+<<<++++++++++[<[>>+<<-]>>[<<+>>>>>++++++++
 +++<<<-]<[>+<-]>[<+>>>>+<<<-]>>>[>>>>>>>>>>>>+>+<< <<<<<<<<<<<-]>>>>>>>>>>
>>[-[>>>>+<<<<-]>[>>>>+<<<<-]>>>]> >>[<<<+>> >- ]<<<[>>+>+<<<-]>[->[<<<
<+>>>>-]<[<<< <+> >>>-]<<<< ]< ++++++ ++ +[>+++++<-]>>[<<+>>-]<
<[>---<-]>.[- ] <<<<<<<<< < <<<<<< < -]++++++++++.[-]<-]>>>
>[-]<[-]+++++ +++[>++++ ++++< - ]>--.[-]<,----------[<+
>-]>>>>>>+<<<<< < <[>+>>>>>+>[ -]<<< << <<-]>++++++++++>>>>>[[-]
<<,<<<<<<<->>>> > >>[<<<<+>>>>-]<<<<[>>>>+ >+<<<<<-]>>>>>----------[<<<<
<<<<+<[>>>>+<<< <-]>>>>[<<<<+>>>>>>+<<- ]>[>-<-]>++++++++++[>+++++++++
++<-]<<<<<<[>>> >+<<<<-]>>>>[<<<<+>>>>> >+<<-]>>>>[<<->>-]<<++++++++++
[>+<-]>[>>>>>>> >>>>>+>+<<<< <<<<< <<<<-]>>> >> >>>>>>>[-[>>>
>+<<<<-]>[>>>> +<<<<-]>> > ]>> > [<< < +>>>-]+<<<[>
>>-<<<-]>[->[< <<<+>>>>-] <[ < < < <+>>>>-]<<<
<]<<<<<<<<<<<, [ -]]>]>[-+++ ++ + +++ ++[>+++++++
++++>+++++++++ + +<<-]>[-[>>> +<<<- ]>>>[ < <<+ >>>>>>>+>+<
<<<<-]>>>>[-[> > >>+<<<<-]>[> >>>+< < <<-]> > >]> >>[<<<+>>>-
]<<<[>>+>+<<< - ]>[->[<<<<+> >>>-] < [<<< < +>> >>-]<<<<]<<
<<<<<<[>>>+<< < -]>>>[<<<+>> >>>>> + >+<< < <<-]<<[>>+<<
-]>>[<<+>>>>> >+>+<<<<<-]>> >>[-[ > >>>+ < <<<-]>[>>>>+<
<<<-]>[>>>>+< <<<-]>>]>>>[ - ]<[>+< - ]<[ - [<<<<+>>>>-]<<<
<]<<<<<<<<]<< <<<<<<<<++++ + +++++ [ >+++ + ++++++[<[>>+<<-]>>[<<+
>>>>>++++++++ + ++<<< -] < [>+<- ] >[<+ > >>>+<<<-]>>>[<<<+>>>-]
<<<[>>>+>>>> > +<<<< << <<-]> > >>>> >>>[>>+<<-]>>[<<+<+>>
>-]<<<------ - -----[ >> >+<<< - ]>>> [<<<+> > >>>>>+>+<<<<
<-]>>>>[-[>> > >+<<<< -] > [>>>> + <<<<- ]>>> ] >>>[<<<+>>>-
]<<<[>>+>+<< < -]>>> >> > > [<<<+ >>>-]<<<[>>>
+<<<<<+>>- ]> > >>>>>[< <<+>>>-]<<<[>
>>+<<<<<<< <<+ > >>>>>-]< <<<<<<[->[<<<<+
>>>>-]<[<<<<+>>>>-]<<<<]>[<<<<<< <+>>> >>>>-]<<<< <<<<<+++++++++++[>
>>+<<<-]>>>[<<<+>>>>>>>+>+<<<<<-]>>>>[-[> >>>+<<<<-]>[>>>>+<<<<-]>>>]>>>[<<<
+>>>-]<<<[>>+>+<<<-]>>>>>>>[<<<+>>>-]<<<[ >>>+<<<<<+>>-]>>>>>>>[<<<+>>>-]<<<
[>>>+<<<<<<<<<+>>>>>>-]<<<<<<<[->[< < < <+>>>>-]<[<<<<+>>>>-]<<<<]>[<<<<<<<
+>>>>>>>-]<<<<<<<<<+++++++++++[>>> > >>>+>+<<<<<<<<-]>>>>>>>[-[>>>>+<<<<-
]>[>>>>+<<<<-]>>>]>>>[<<<+>>>-]<<< [ >>+>+<<<-]>>>>>>>[<<<+>>>-]<<<[>>>+<<
<<<+>>-]>>>>>>>[<<<+>>>-]<<<[>>>+< <<<<<<<<+>>>>>>-]<<<<<<<[->[<<<<+>>>>-
 ]<[<<<<+>>>>-]<<<<]>[<<<<<<<+>>>>> >>-]<<<<<<<----[>>>>>>>+<<<<<<<+[>>>>>
 >>-<<<<<<<[-]]<<<<<<<[>>>>>>>>>>>>+>+<<<<<<<<<<<<<-][ lft@df.lth.se ]>>>>>
 >>>>>>>[-[>>>>+<<<<-]>[>>>>+<<<<-]>[>>>>+<<<<-]>>]>>>[-]<[>+<-]<[-[<<<<+>>
 >>-]<<<<]<<<<<<[-]]<<<<<<<[-]<<<<-]<-]>>>>>>>>>>>[-]<<]<<<<<<<<<<]

 Type for instance "fg" to toggle the cell at row f and column g
 Hit enter to calculate the next generation
 Type q to quit
```

;Triángulu de Sierpinski


```bf
[ This program prints Sierpinski triangle on 80-column display. ]
 >
 + +
 + +
 [ < + +
 + +
 + + + +
 > - ] >
 + + + + + + + +
 [ >
 + + + +
 < - ] >
 > + + > > > + >
 > > + <
 < < < < < < < <
 < [ - [ - > + <
 ] > [ - < + > > > . < < ] > > >
 [ [
 - > + +
 + + + +
 + + [ > + + + +
 < - ] >
 . < < [ - > + <
 ] + > [ - > + +
 + + + + + + + + < < + > ] > . [
 - ] > ]
 ] + < < < [ - [
 - > + < ] + > [
 - < + > > > - [ - > + < ] + + >
 [ - < - > ] < <
 < ] < < < < ] + + + + + + + + +
 + . + + + . [ - ] < ] + + + + +
 * * * * * M a d y * B y : * N Y Y R I K K I * 2 0 0 2 
* * *
```


## Referencies

## Enllaces esternos
* Frans Faase. BF ye Turing completu
* Daniel Cristofani. Dalguna información de Brainfuck
* Clifford Wolf. El UCP de Brainfuck y otros proyeutos rellacionaos con Brainfuck
* Un tutorial de Brainfuck n'inglés y francés.
* Una páxina bien variada pero que dedica una parte a llinguaxes isotéricos...

### Implementaciones
* Llibrería BrainFuck , nel llinguaxe de programación Pauscal en **español**.
* Compilador con lex, yacc, Nos llinguaxes de programación C y Python.
* Visual brainfuck, un IDE de brainfuck compatible con Windows 7
* Intérprete de Brainfuck con un depurador integráu (EDI) para Windows 
* Brian Raiter, Muppetlabs. Brainfuck: Un llinguaxe de programación Turing completu d'ocho instrucciones.  Esti sitiu inclúi un Quine de Brainfuck.
* Panu Kalliokoski. L'Archivu de Brainfuck  tien munchos programes de Brainfuck, quines, y implementaciones.
* Brainfucked compilador de Brainfuck pa Windows/DOS.
* Brainfuck.ca Intérpretes y convertidores de Brainfuck autorizáu cola GPL
* Un intérprete y compilador de Brainfuck pa Windows
* Brainfuck.net
* Also Written In Brainfuck (awib) ye un compilador de Brainfuck escritu en Brainfuck para Linux d'i386.
* 
* 
* Acme::Brainfuck Módulu Perl en CPAN (n'inglés)
* Intérprete de Brainfuck fechu en delphi
* Intérprete de Brainfuck en PHP
* Ookie, intérprete de Brainfuck y Ook! escritu en Ruby y con repositorio en Github
* 
* Intérprete de Brainfuck fechu en C