Brainfuck
De Wikipedia, la enciclopedia libre
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.
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*
.
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
- Intérprete de Brainfuck con un depurador integrado (EDI) para Windows
- Brian Raiter, Muppetlabs. Brainfuck: Un lenguaje de programación Turing completo de ocho instrucciones. Este sitio incluye un quine de Brainfuck.
- Panu Kalliokoski. El Archivo de Brainfuck tiene muchos programas de Brainfuck, quines, y implementaciones.
- Brainfucked compilador de Brainfuck para Windows/DOS.
- Frans Faase. BF es Turing completo
- Daniel Cristofani. Alguna información de Brainfuck
- Brainfuck.ca Intérpretes y convertidores de Brainfuck autorizado con la GPL
- Un intérprete y compilador de Brainfuck para Windows
- Brainfuck.net
- Also Written In Brainfuck (awib) es un compilador de Brainfuck escrito en Brainfuck para Linux de i386.
- Robert Östling. Computadora de Brainfuck. (Enlace roto. Disponible en Internet Archive el historial y la última versión.)
- Clifford Wolf. El UCP de Brainfuck y otros proyectos relacionados con Brainfuck
- Un tutorial de Brainfuck en inglés y francés.
- Jeffry Johnston. Programas de BF, incluyendo un compilador de Basic y un ensamblador