Usuario:Marquii/WIP/Brainfuck

De Inciclopedia
Ir a la navegación Ir a la búsqueda
Casa.jpg ¡CASA!
Este artículo pertenece a mi privada y humilde moradaNamespace personal o subpàgina, de estructura Usuario:Quiensea/Página. Sirve para tener tus páginas a buen recaudo y poderlas construir con la calma. Véase Plantilla:Namespace/uso., si te atreves a tocarlo sin mi permiso llamaré a Chuck Norris para que te pegue una patada giratoria en los huevos.


Brainfuck (Jodecerebros, o Brainf*** si eres muy finolis) es un lenguaje de programación diseñado por el Departamento de Defensa de Tuvalu Ulterior en cooperación con un tío muy colgado. Su fin es poder desarrollar absolutamente cualquier tipo de programa informático, incluyendo aquellos con fines satánicos, exprimiendo al máximo el hardware del ordenador.

En vistas del excesivo y peligroso poder de este lenguaje, sus creadores lo redujeron a la mínima expresión, de manera que, si bien aún sigue capaz de hacer funcionar los programas más sobrenaturales, el programador, por lo menos, tiene que sudar la gota gorda para lograrlo.

Historia

El lenguaje fue escrito en 1993 por un tipejo llamado Urban Müller. Éste hombre estaba muy aburrido un día, y no se le ocurrió nada más que desarrollar un compilador informático tan pequeño que cupiese incluso en un condensador. Así le salió la primera versión del lenguaje.

El 1994, tras su gran hazaña, fue contratado por el Departamento de Defensa de Tuvalu Ulterior para mejorar el lenguaje al máximo. Y así lo hizo, naciendo la versión 2 del lenguaje que es la que realmente tiene todas las capacidades.

Actualmente, el lenguaje sólo es usado en competiciones de programación y como herramienta de tortura psicológica para programadores mejora cognitiva del programador.

Aprenda Brainf*** en tan sólo 5 minutos

¡Bienvenido al Curso de Brainfuck! ¡En tan sólo cinco minutos, aprenderá todas las instrucciones del lenguaje de programación que más está de moda en las comunidades informáticas! ¡Coja aire, pues se le pasará volando!

Estructura

El lenguaje se basa en registros. Cada registro mide un byte (una letra). Imaginemos, por ejemplo, que es una hoja cuadriculada, y que en cada cuadradito puede escribir una y sólo una letra. Bien, pues éste lenguaje se basa en ésto. Hay un "registro actual", que és aquel cuadradito al que apunta su bolígrafo y que, por tanto, se puede escribir encima del mismo. La idea de todos los programas será navegar de manera absurda por todos los registros (cuadraditos) para conseguir lo que queremos hacer sin llenar la hoja.

Instrucciones

Una vez sabe esto, las instrucciones del lenguaje son las siguientes. Tome nota, que le va a costar mucho aprendérselas todas de memoria:

  • + suma 1 al registro actual. ¿Demasiado difícil para su frágil cerebrito? Nos referimos a que si en el cuadradito que apunta el boli tenía un uno, ahora tiene un dos. Tenga en cuenta que los valores de registros van del 0 al 255 siguiendo la tabla ASCII, así que del mismo modo, si en el cuadradito tenía una A, ahora tiene una preciosa B.
  • - resta 1 al registro actual. Vamos, lo mismo pero restando 1.
  • > pasa al registro siguiente. Lo que significa que ahora su boli apunta al cuadradito de la derecha del actual. Si está en el último cuadradito se siente.
  • < pasa al registro anterior. Si está en el primero también se siente.
  • . muestra el carácter que equivale del registro actual en pantalla. Vamos, que mira qué letra tiene debajo del boli.
  • , pide al usuario entrar un carácter, y lo guarda en el registro actual. Lo que significa que coge el boli, y escribe una letra.
  • Cualquier otro caracter será ignorado porque no nos interesa tu vida.

Ejemplo

El siguiente ejemplo, es el más simple de todos. Escribe 123456789 de la manera más simple y rápida. Observe la complejidad simplicidad del lenguaje:

>++++++++++[<+++++>-]<-.+.+.+.+.+.+.+.+.

¿No lo pilló? No se preocupe, nosotros tampoco.

Otros programas Brainfuck recomendados

El clásico Hola Mundo

No se maree con éste:

>+++++++[<++++++++++>-]<++. H

>++++++++++[<++++>-]<-. o

---. l

-----------. a

[-]>++++++++[<++++>-]<. (espacio)

[-]>+++++++++++[<++++++++++>-]<-. m

++++++++. u

-------. n

----------. d

+++++++++++. o

[-]>++++++++[<++++>-]<+. !

Lo cuál, tras tanto trabajo, le permitirá ver por fin en su pantalla "Hola mundo!". Enhorabuena. Ahora que ya conoce el lenguaje, ya puede trabajar en un programa que resuelva integrales triples.