¿Qué es Malbolge y cómo funciona este lenguaje de programación?

| Última modificación: 3 de febrero de 2025 | Tiempo de Lectura: 3 minutos
0
(0)

Pero, ¿a quién se le ocurre crear un lenguaje de programación imposible de entender?. En serio, no cabe en mi mente esa idea, pero al parecer sí cabe en la mente de Ben Olmstead, el creador de Malbolge. Lo curioso es que él nunca llegó a escribir un programa en él, así de complejo es que ni su creador se animó a usarlo.

Resulta que Malbolge, el lenguaje de programación más difícil, no está pensado para hacer programas útiles, sino que es un verdadero desafío mental. Usa un sistema de aritmética en base 3, código que se modifica solo y una extraña «operación loca o crazy operation» que hace que cada instrucción sea aún más difícil de entender después de ejecutarse.

Te contaré cómo funciona, algunas de sus extrañas características y, en caso de que te atrevas, te mostraré cómo escribir tu primer programa en este infame lenguaje.

Malbolge qué es

¿Qué es Malbolge?

Para que te asustes un poco, su nombre viene de Malebolge, el octavo círculo del infierno en la obra de Dante. Lo que lo hace especial es su nivel extremo de dificultad, ya que escribir y entender código en Malbolge es un verdadero reto incluso para los programadores más experimentados.

Este lenguaje de programación usa una extraña operación llamada «loca», que modifica los datos de forma compleja y difícil de predecir. Esto hace que entender cómo funciona el programa y crear algoritmos sea todo un desafío.

Algo que me parece aún más caótico en este lenguaje, es que los programas pueden cambiar su propio código mientras se ejecutan, lo que hace aún más complicado seguir su funcionamiento y predecir qué van a hacer.

Características

  • Código autoalterable: Cada instrucción cambia después de ejecutarse.
  • Sistema numérico en base 3: Opera con trits en lugar de bits.
  • Instrucciones encriptadas en tiempo de ejecución: Modifica su propio código.
  • Registros confusos: Usa tres registros principales: A, C y D.
  • Difícil de depurar: El propio creador nunca logró escribir un programa funcional.

¿Cómo se ve el «Hola mundo»?

Te muestro un poco de este lenguaje, aquí tienes un «Hola Mundo»:

(=<`$9]7<5YXz7wT.3,+O/o'K%$H"'~D|#z@}b=`{^Lx8%$Xmrkpohm-kNi;gsedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543s+O<oLm

No, no es un error de codificación. Así se ve un programa funcional en Malbolge.

¿Cómo funciona Malbolge?

Para entender este complejo lenguaje de programación, primero tenemos que hablar de su arquitectura y reglas.

Registros en Malbolge

Te muestro que tiene tres registros principales:

  • A (Acumulador): Almacena valores temporales y datos de entrada/salida.
  • C (Puntero de instrucción): Indica la siguiente instrucción a ejecutar.
  • D (Puntero de datos): Apunta a la memoria de datos.

Cuando el programa empieza, todos los registros tienen un valor de 0 y se van modificando con cada instrucción.

Memoria y encriptación de instrucciones

Malbolge usa una memoria de 59.049 direcciones (en base 3) y sufre de dos problemas principales:

  • El código se encripta durante la ejecución, volviéndolo aún más confuso.
  • Las instrucciones no son fijas, sino que se determinan con una fórmula:

Fórmula para determinar una instrucción en Malbolge:

( [C] + C ) % 94

Donde C es el puntero de instrucción y [C] es el valor en esa posición de memoria.

Esto significa que una misma instrucción puede comportarse de manera diferente dependiendo de dónde se encuentre en la memoria.

La «Crazy Operation»

Como ya te dije, este lenguaje usa una operación llamada Crazy Operation, que modifica cada valor en memoria después de ser ejecutado.

Esta operación usa la siguiente tabla de transformación ternaria para alterar valores:

Trit 1Trit 2Resultado
001
010
020
101
110
122
202
212
221

¿Qué significa esto? Que cada instrucción no solo se ejecuta, sino que se transforma en algo completamente diferente después de ser ejecutada.

Ejemplo práctico: Programa Cat en Malbolge

Si lograste entender lo anterior, aquí tienes un programa que lee una entrada del usuario y la imprime en pantalla (similar al comando cat en Unix).

Código en Malbolge para leer y escribir datos:

(=BA#9"=<;:3y7x54-21q/p-,+*)"!h%B0/.
~P<
<:(8&
66#"!~}|{zyxwvu
gJ%

Este programa toma una entrada, la procesa y la imprime en pantalla.

Prueba estos ejemplos si solo quieres matar tu curiosidad, pero no te recomiendo gastar tu tiempo en aprender Malbolge, porque no es un lenguaje práctico. Ni se usa en la industria, ni se puede depurar y su sintaxis no es para nada intuitiva. Mejor mira esta lista de los lenguajes de programación más usados y escoge alguno de ellos.

Nosotros podemos enseñarte desde lo más básico hasta lo más avanzado en cuanto a la programación. Solo tienes que unirte al Bootcamp de Desarrollo Web de KeepCoding. Aquí crearás software funcional, optimizarás algoritmos y entenderás cómo funcionan los lenguajes de programación a nivel profundo.

¡Inscríbete y lleva tu carrera al siguiente nivel!

¿De cuánta utilidad te ha parecido este contenido?

¡Haz clic en una estrella para puntuarlo!

Promedio de puntuación 0 / 5. Recuento de votos: 0

Hasta ahora, ¡no hay votos!. Sé el primero en puntuar este contenido.

Posts más leídos

¡CONVOCATORIA ABIERTA!

Desarrollo web

Full Stack Bootcamp

Clases en Directo | Profesores en Activo | Temario 100% actualizado

Conviértete en Full Stack Deeveloper en solo 10 meses. Accede a un sector con el 98,49% de empleabilidad con sueldos de hasta 80K.