Programación con caramelos: nace MNM Lang

Fuentes: I made a programming language with M&Ms

Este proyecto, llamado MNM Lang, es una demostración ingeniosa de cómo se puede crear un lenguaje de programación utilizando M&M's (o GEMS, una versión india). La idea surgió de un accidente: el autor derramó un paquete de caramelos que se organizaron en un patrón que le recordó un código. El objetivo no es crear un lenguaje práctico, sino explorar la posibilidad de representar programas como patrones físicos.

¿Cómo funciona? MNM Lang utiliza seis colores de caramelos (azul, verde, rojo, amarillo, naranja y marrón) para representar instrucciones y operandos. Cada color representa una familia de instrucciones: azul para control de flujo, verde para variables y pila, amarillo para operaciones matemáticas, naranja para entrada/salida, marrón para etiquetas y cadenas, y rojo para manipulación de la pila y lógica. La cantidad de caramelos de un color específico determina la variante de la instrucción. Por ejemplo, 'BBB' podría representar una instrucción específica de control de flujo, mientras que 'RRRR' podría representar el número entero 3. El código fuente se compila en una imagen PNG compuesta por sprites de caramelos, que luego puede ser 'descompilada' de vuelta al código fuente original. Para manejar cadenas de texto, se utiliza un archivo JSON separado, ya que intentar codificarlas directamente en la imagen sería impráctico.

Aplicaciones y Casos de Uso: Aunque no es un lenguaje para uso práctico, MNM Lang sirve como una demostración conceptual y un ejercicio creativo. Podría ser utilizado para crear programas visuales únicos o como una herramienta educativa para ilustrar los conceptos básicos de la programación de una manera inusual y atractiva. Imagina un artista utilizando MNM Lang para crear instalaciones interactivas donde los espectadores pueden 'ejecutar' programas simplemente reorganizando los caramelos.

Consideraciones y Limitaciones: La principal limitación es la practicidad. La entrada de datos es engorrosa y la capacidad de expresión del lenguaje es limitada debido al número reducido de colores. La dependencia de imágenes introduce problemas de precisión y resolución. Además, la necesidad de un archivo JSON separado para las cadenas de texto complica el proceso. Sin embargo, estas limitaciones son parte del encanto del proyecto, ya que resaltan la naturaleza experimental y lúdica de la creación de un lenguaje de programación con materiales físicos.