Brainfuck

De Wikipedia, la enciclopedia libre

Brainfuck
Paradigma: ¿?
Apareció en: 1993
Diseñado por: Urban Müller
Implementaciones: Múltiples
Influido por: Máquina de Turing
Ha influido: Ook!, Tink

Brainfuck (jodecerebros), es un lenguaje de programación esotérico, diseñado por Urban Müller en 1993, con el objetivo de hacer un lenguaje que fuera a la vez muy simple, Turing completo y que requiriese un compilador pequeño. Müller basó Brainfuck en la máquina de Turing y le sirvió de inspiración el compilador de 1024 bytes de tamaño del lenguaje FALSE.

La distribución clásica es la versión 2 escrita por el propio Müller, conteniendo un compilador para el ordenador Amiga, un intérprete, programas de ejemplo y un documento "readme".

Tabla de contenidos

[editar] Diseño del lenguaje

El lenguaje se basa en un modelo de ejecución simple que consiste, además del programa, de un array de (al menos) 30.000 bytes inicializados a cero, un puntero sobre ese array (que al comienzo de la ejecución apunta al primer elemento del array) y dos "corrientes" de bytes para la entrada y la salida.

[editar] Las Instrucciones

Hay sólo ocho instrucciones, y todas son de un carácter.

Carácter Significado
> Incrementa el puntero.
< Decrementa el puntero.
+ Incrementa el byte apuntado.
- Decrementa el byte apuntado.
. Introduce el byte apuntado en la corriente de salida.
, Toma como valor del byte actualmente apuntado el provisto por la corriente de entrada.
[ Avanza a la instrucción inmediatamente posterior al ] correspondiente si el byte actualmente apuntado es nulo.
] Retrocede a la instrucción inmediatamente posterior al [ correspondiente si el byte actualmente apuntado no es nulo.

[editar] Traducción al lenguaje de programación C

Las programas de Brainfuck se pueden traducir a C con estas substituciones, suponiendo que ptr sea del tipo unsigned char*. Sin embargo, poseen sus propios traductores.

Brainfuck C
> ++ptr;
< --ptr;
+ ++*ptr;
- --*ptr;
. putchar(*ptr);
, *ptr = getchar();
[ while (*ptr) {
] }

[editar] Un "Hello, world" en Brainfuck

Este sería el típico programa que escribe "Hello, world"

++++++++++
[                   Bucle para iniciar el vector
   >+++++++>++++++++++>+++>+<<<<-
]
>++.              imprime 'H'
>+.               imprime 'e'
+++++++.                  'l'
.                         'l'
+++.                      'o'
>++.                      espacio
<<+++++++++++++++.        'W'
>.                        'o'
+++.                      'r'
------.                   'l'
--------.                 'd'
>+.                       '!'
>.                        nuevalínea

[editar] Enlaces externos

Herramientas personales