- Brainfuck
-
Brainfuck
Brainfuck Paradigma: Esotérico Apareció en: 1993 Diseñado por: Urban Müller Implementaciones: Múltiples Influido por: Máquina de Turing, P′′ Ha influido a: 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".
Contenido
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.
Las Instrucciones
Hay sólo ocho instrucciones, y todas son de un carácter.
Caracter Significado >
Incrementa el puntero. <
Reduce el puntero. +
Incrementa el byte apuntado. -
Reduce 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.Traducción al lenguaje de programación C
Los programas de Brainfuck se pueden traducir a C con estas substituciones, suponiendo que
ptr
sea del tipounsigned char*
. Sin embargo, poseen sus propios traductores.Brainfuck C >
++ptr;
<
--ptr;
+
++*ptr;
-
--*ptr;
.
putchar(*ptr);
,
*ptr = getchar();
[
while (*ptr) {
]
}
Un "Hello world" en Brainfuck
Este sería el típico programa que escribe "Hola mundo!"
++++++++++ [ Bucle para iniciar las memorias (se repite 10 veces) >+++++++>++++++++++>+++++++++++>+++>+<<<<<- 70 100 110 30 10 ] >++. imprime 'H' (72) 1 >>+. imprime 'o' (111) 3 ---. 'l' (108) 3 <---. 'a' (97) 2 >>++. espacio (32) 4 <+. 'm' (109) 3 ++++++++. 'u' (117) 3 -------. 'n' (110) 3 <+++. 'd' (100) 2 >+. 'o' (111) 3 >+. '!' (33) 4 >. nuevalínea (10) 5
Enlaces externos
- Frans Faase. BF es Turing completo
- Daniel Cristofani. Alguna información de Brainfuck
- Clifford Wolf. El UCP de Brainfuck y otros proyectos relacionados con Brainfuck
- Un tutorial de Brainfuck en inglés y francés.
Implementaciones
- 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.
- 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; véase el historial y la última versión)
- Jeffry Johnston. Programas de BF, incluyendo un compilador de Basic y un ensamblador
- Acme::Brainfuck Módulo Perl en CPAN (en inglés)
- Intérprete de Brainfuck hecho en delphi
- Intérprete de Brainfuck en PHP
Categoría: Lenguajes de programación esotéricos
Wikimedia foundation. 2010.