Así como cuando presionas varias teclas sin querer en tu teclado y se arma una frase tipo: ashashdfh. Pues más o menos así es el lenguaje de programación Brainfuck, con sus símbolos incomprensibles. Su nombre mismo lo dice, es un lenguaje que te romperá la cabeza.
Entonces, ¿por qué querrías programar en él? Para tu sorpresa, es un lenguaje que consigue hacer cualquier cosa que un lenguaje convencional puede hacer, lo único diferente es que te hace sufrir más de la cuenta.
Aquí entenderás cómo funciona Brainfuck, cómo escribir código en él, y te mostraré ejemplos para que pruebes por ti mismo la locura de este lenguaje.
¿Qué es Brainfuck?
Brainfuck es un lenguaje de programación esotérico creado por Urban Müller en 1993. Fue diseñado para tener una sintaxis súper simple y poder ejecutarse con un compilador pequeño. Aunque parece básico, en realidad es tan potente como cualquier otro lenguaje, ya que puede hacer cualquier cálculo que una computadora pueda manejar.
Lo curioso de este lenguaje es que solo tiene ocho comandos y una sintaxis extremadamente minimalista. Eso lo convierte en el lenguaje más fácil de aprender, si nos enfocamos en la sintaxis, pero ya en la práctica es bastante complicado.
Características
- Sintaxis súper simple: Solo tiene ocho comandos, cada uno representado por un solo carácter. Aprenderlos es fácil, pero usarlos bien es otro cuento.
- Memoria limitada: Funciona con una cinta de memoria dividida en celdas donde se guardan números. Normalmente, esta cinta tiene unas 30,000 celdas, pero depende de la implementación.
- Tan potente como cualquier lenguaje: Aunque parezca básico, Brainfuck puede hacer cualquier cálculo que una computadora sea capaz de procesar. La simplicidad no significa que sea menos poderoso.
- Un dolor de cabeza para programar: No tiene variables ni funciones, así que escribir código en Brainfuck es un reto enorme. Se necesita mucha paciencia y planificación.
¿Cómo se ve el «Hola mundo» en este lenguaje?
Cuando aprendí mi primer lenguaje de programación, escribir «Hola Mundo» fue sencillo. Un simple print(«Hola Mundo») en Python o un cout << «Hola Mundo»; en C++. Pero Brainfuck juega en otra liga.
Si quieres escribir «Hola Mundo» en Brainfuck, prepárate para esto:
++++++++++[>+++++++>++++++++++>+++>+<<<<-]>++.>+.+++++++..+++.>++.<<+++++++++++++++.>.+++.------.--------.>+.>.
No, no es un error. Ese código realmente imprime «Hola Mundo».
Cómo funciona Brainfuck
Brainfuck opera sobre una memoria de celdas, similar a una máquina de Turing. Estas celdas contienen valores numéricos que puedes modificar usando solo 8 comandos.
Los 8 comandos
Símbolo | Función |
---|---|
> | Mueve el puntero una celda a la derecha |
< | Mueve el puntero una celda a la izquierda |
+ | Incrementa el valor de la celda actual |
- | Decrementa el valor de la celda actual |
. | Imprime el carácter ASCII de la celda actual |
, | Lee un carácter y lo almacena en la celda actual |
[ | Si el valor actual es 0, salta al ] correspondiente |
] | Si el valor actual NO es 0, vuelve al [ correspondiente |
Básicamente, este lenguaje de programación manipula números en memoria y los traduce a caracteres ASCII.
Ejemplo: Incrementar una celda y mostrar el valor en ASCII
Esto imprime el carácter ASCII 9 (TAB).
+++++++++.
Ejemplo: Escribir la letra «A» (ASCII 65)
Aquí estamos cargando el valor 65 en la celda y luego imprimiéndolo.
++++++++[>++++++++<-]>.
Algunos usos prácticos de Brainfuck que puedes poner en práctica
Si quieres un reto, prueba estos programas:
Generador de números aleatorios en Brainfuck
Este código genera un número aleatorio en la salida.
>>>++[ <++++++++[ <[<++>-]>>[>>]+>>+[ -[->>+<<<[<[<<]<+>]>[>[>>]]] <[>>[-]]>[>[-<<]>[<+<]]+<< ]<[>+<-]>>- ]<.[-]>> ]
Algoritmo de burbuja en Brainfuck
Esto ordena un conjunto de números en memoria usando el método de burbuja.
>>,[>>,]<<[ [<<]>>>>[ <<[>+<<+>-] >>[>+<<<<[->]>[<]>>-] <<<[[-]>>[>+<-]>>[<<<+>>>-]] >>[[<+>-]>>]< ]<<[>>+<<-]<< ]>>>>[.>>]
Otros usos
A pesar de ser impráctico para el desarrollo real, Brainfuck es muy útil para:
- Retar a los programadores: Si puedes codificar en Brainfuck, otros lenguajes te parecerán fáciles.
- Ofuscación de código: Su código es tan críptico que puede esconder funciones en aplicaciones.
- Demostrar la simplicidad de una máquina de Turing: Brainfuck es Turing completo, lo que significa que puede hacer cualquier cosa que haga un ordenador, si tienes paciencia infinita.
Realmente no te aconsejo que dediques demasiado tiempo a aprender Brainfuck, porque no es un lenguaje práctico para trabajar en la actualidad. De hecho, no funciona bien para tareas reales y termina siendo innecesariamente difícil. Mejor prueba alguno de los lenguajes de programación más usados, a los cuales sí podrás sacarles provecho.
Sí, si puedes tener tu empleo soñado y sí puedes cambiar de profesión. Simplemente únete al Bootcamp de Desarrollo Web de KeepCoding donde aprenderás desde los fundamentos de la programación hasta la construcción de aplicaciones web avanzadas. ¡Inscríbete y conviértete en un experto en desarrollo web con tecnologías punteras!