Lenguaje de programación Malbolge

Malbolge es un lenguaje de programación esotérico de dominio público desarrollado por Ben Olmstead en 1998. Se llamó así por el octavo círculo del infierno en La Divina Comedia, escrito por Dante.

Malbolge es peculiar porque se diseñó para ser el lenguaje más difícil. Sin embargo, varios de los trucos utilizados para hacerlo difícil de entender pueden ser evitados.

Ejemplo

Código de ejemplo Hello World:​

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

El nombre Malbolge proviene del nombre dado al octavo círculo del Infierno en la Divina Comedia de Dante Alighieri, donde se encuentran los estafadores. El nombre modificado Malbolge fue más tarde también utilizado por los creadores del juego de rol Dungeons And Dragons for the sixth hell.

Malbolge fue construido para ejecutar programas en una máquina virtual basada en dígitos ternarios (también llamados trits). Cada dato (palabra) está formado por 10 trits, con un rango de valores de 0 a 2222222222 en base 3, es decir, 59048 en formato decimal. Cada dirección de memoria también ocupa una palabra. Los datos y el código del programa se insertan en la misma memoria. El programa se coloca en la memoria al inicio a partir de la ubicación 0; cualquier espacio en blanco se ignora, así como cualquier wrap-around. Las ubicaciones de memoria restantes se inicializan aplicando el resultado de la instrucción “crazy” , como se explica a continuación, a la última y penúltima palabra antes de la celda a inicializar. Hay tres registros, cada uno de 1 Tamaño de palabra: el registro C, llamado registro de código, apunta a la instrucción que debe ejecutarse; el registro D, registro de datos, se utiliza para manipular datos; el registro A es el registro acumulador y es utilizado por muchas instrucciones como un medio para la manipulación de datos. La dirección de la instrucción a ejecutar está contenida en el registro C; si la instrucción no está en el rango 33 – 126, el programa termina. La operación loco ” loco “) opera en pares de trits que coinciden, teniendo en cuenta cada contenido trit en las dos palabras sobre lo que debe hacerse, de acuerdo con la siguiente tabla: después de la ejecución de cada declaración, si el valor apuntado por C es entre 33 y 126, inclusive, en su forma enmendada de acuerdo con la siguiente tabla: (por ejemplo, ! se convierte en 5, ” se convierte en z y así sucesivamente) después de eso, tanto C como D se incrementan con el Módulo 3 10 (59049) y el bucle se repite De lo contrario, para determinar la sentencia true a ejecutar, el valor apuntado por C se agrega a la misma C, y el resultado se divide por 94; el resto de esta división se usa para decidir qué operación realizar: si el resultado no es uno de los enumerados anteriormente, una operación no se realiza nada (NOP). En cualquier caso, el compilador no acepta ningún NOP que no sea 68 cuando está presente en el código fuente.

Hay muy pocos programas escritos hasta ahora en Malbolge, dada la dificultad de crear resultados aceptables. Este fue el primer programa “Hello, World!” escrito en Malbolge. En realidad su salida no es perfecta, ya que no tiene en cuenta las letras mayúsculas o la puntuación (imprimir ” HEllO WORld “) ; un programa que puede escribir “Hello, World!” correctamente es mucho más difícil de crear. Este programa consigue imprimir “Hello, world!” con los caracteres y la puntuación correctos.

Los 5 lenguajes de programación más extraños

Entradas relacionadas

Dejar un Comentario