4 puntos por GN⁺ 2024-04-25 | 1 comentarios | Compartir por WhatsApp

Introducción al lenguaje de programación Piet

  • Piet es un lenguaje de programación para escribir programas que parecen pinturas abstractas.
  • Su nombre proviene de Piet Mondrian, pionero del arte abstracto geométrico.

Principios de diseño del lenguaje Piet

  • El código del programa adopta la forma de arte abstracto.

Colores utilizados en Piet

  • Piet usa 20 colores únicos.
    • Ciclo de tono: rojo -> amarillo -> verde -> cian -> azul -> magenta -> rojo
    • Ciclo de luminosidad: claro -> normal -> oscuro -> claro
  • El blanco y el negro no están incluidos en estos dos ciclos.
  • Se pueden usar colores adicionales (naranja, marrón, etc.), pero su efecto depende de la implementación.
    • En el caso más simple, se tratan igual que el blanco.

Codel (códel)

  • La unidad básica del código en Piet es el bloque de color.
    • Está compuesto por uno o más códeles adyacentes del mismo color.
    • Los bloques de color que solo son adyacentes en diagonal no se consideran continuos.
    • No hay restricciones de forma y pueden tener "agujeros" internos de otros colores.

Pila

  • Piet usa una pila para almacenar todos los valores de datos.
  • Los valores de datos solo existen como enteros, pero pueden leerse o imprimirse como valores de caracteres Unicode.
  • Conceptualmente, la pila tiene profundidad infinita, aunque una implementación puede ofrecer un tamaño máximo finito.

Ejecución del programa

  • El intérprete de Piet comienza la ejecución en el bloque de color que contiene el códel de la esquina superior izquierda del programa.
  • Mantiene un Direction Pointer (DP) y un Codel Chooser (CC), y se mueve entre bloques de color según las siguientes reglas:
    • Encontrar el borde del bloque de color actual más alejado en la dirección del DP.
    • En ese borde, encontrar el códel más alejado en la dirección del CC.
    • Desde ese códel, moverse al bloque de color adyacente en la dirección del DP.
  • Este proceso se repite hasta que el programa termina.

Elementos de sintaxis

Números

  • Cada bloque de color que no sea negro ni blanco representa un entero igual al número de códeles en ese bloque.
  • Solo se pueden representar valores positivos, pero se pueden generar negativos con operadores.
  • El intérprete no hace push automático a la pila cuando encuentra un número.

Bloques negros y bordes

  • Los bloques negros y los bordes del programa restringen el flujo del programa.
  • Si se intenta mover hacia un bloque negro o un borde, se alterna el CC y el DP gira en sentido horario.
  • Si no se puede mover incluso después de 8 intentos, el programa termina.

Bloques blancos

  • Los bloques blancos son áreas "libres" por las que el intérprete pasa sin restricciones.
  • Se desplaza "deslizándose" por los códeles blancos en la dirección del DP hasta llegar a un bloque no blanco.
  • Aunque se cruce un bloque blanco para pasar a un nuevo color, no se ejecuta ningún comando.
  • Si dentro de un bloque blanco el recorrido se rehace por completo, el programa termina.

Comandos

  • Se definen por el cambio de color cuando el intérprete se mueve de un bloque de color a otro.
  • El comando a ejecutar se determina según el número de pasos en el ciclo de tono y en el ciclo de luminosidad.
  • Si se cruza un bloque blanco, no se ejecuta ningún comando.
  • Comandos principales:
    • push, pop, add, subtract, multiply, divide, mod, not, greater
    • pointer, switch, duplicate, roll
    • in(number), in(char), out(number), out(char)

Opinión de GN⁺

  • Piet es un lenguaje de programación visualmente atractivo que muestra una combinación única de arte abstracto y programación.
  • Sin embargo, parece tener limitaciones en términos de practicidad. Se anticipa que no sería fácil escribir programas complejos.
  • Probablemente pueda usarse sobre todo para experimentos de diseño de lenguajes de programación, acertijos o creación de obras artísticas.
  • Como lenguajes de programación visual, Blockly de Google o Scratch de MIT podrían ser alternativas más prácticas.
  • Da la impresión de que Piet es un lenguaje demasiado deep, por lo que sería difícil usarlo realmente como herramienta de aprendizaje de programación para principiantes.

1 comentarios

 
GN⁺ 2024-04-25
Comentarios de Hacker News
  • El último programa en la página de ejemplos del lenguaje Piet es realmente sorprendente. Una persona llamada Piet vio una obra que recordaba al lenguaje Piet y la ejecutó; de hecho, funcionó. Fue la primera vez en la historia que un artista gráfico dibujó accidentalmente un programa ejecutable.

  • Piet es un experimento revolucionario entre los lenguajes de programación esotéricos, pero no logra del todo el objetivo de hacer que se vea como una pintura de Mondrian a menos que el desarrollador lo haga intencionalmente. Ojalá la estructura misma del lenguaje estuviera diseñada para que lo escrito pareciera una pintura de Mondrian.

  • Esto plantea la pregunta: "¿Cómo se ve un algoritmo?" ¿Se podría crear en la realidad algo como la novela de Hermann Hesse Magister Ludi (El juego de los abalorios)? Como alguien con orientación visual, me gustaría pensar que sí, y de hecho intenté usar herramientas así, pero por respuestas ambiguas ha sido difícil equilibrar la expresividad visual y la modularidad.

  • Este tipo de cosas parece algo que saldría en un thriller criminal, confundiendo a los protagonistas o investigadores hasta que alguien se da cuenta de que es código. Y eso que pensábamos que los códigos QR eran útiles...

  • Descubrir Piet es un momento especial de asombro, confusión y maravilla. Eso quedó capturado en una conversación con mi amigo Oz en un pódcast de CS.

  • Alguien hizo un quine en Piet. La imagen está rota, pero hay una copia en CodeGolf.

  • En la universidad hubo un pequeño curso sobre lenguajes de programación esotéricos, y cada quien eligió uno para experimentar. Yo escogí Piet; fue divertido, pero honestamente las pequeñas aplicaciones de ejemplo no eran estéticamente satisfactorias. Para hacer arte con Piet, probablemente hay que volverse experto.

  • Me topé con esto en la universidad y me quedé hasta tarde escribiendo programas simples; fue una experiencia muy divertida. ¡Se lo recomiendo a cualquiera para probarlo al menos una vez!

  • La página de ejemplos es sorprendente. Puedes ver cómo los lienzos se vuelven cada vez más sofisticados y hermosos.

  • ¡Está buenísimo! Me pregunto si sería posible reunir obras de Piet y crear un programa que devuelva un texto dado. Algo así como un generador de código Piet. ¡Sería un regalo impreso genial!