4 pontos por GN⁺ 2024-04-25 | 1 comentários | Compartilhar no WhatsApp

Introdução à linguagem de programação Piet

  • Piet é uma linguagem de programação para escrever programas que parecem pinturas abstratas
  • Recebeu esse nome em homenagem a Piet Mondrian, que foi pioneiro na arte abstrata geométrica

Princípios de design da linguagem Piet

  • O código do programa assume a forma de arte abstrata

Cores usadas em Piet

  • Piet usa 20 cores distintas
    • ciclo de matiz: vermelho -> amarelo -> verde -> ciano -> azul -> magenta -> vermelho
    • ciclo de luminosidade: claro -> normal -> escuro -> claro
  • Branco e preto não fazem parte desses dois ciclos
  • Cores adicionais (laranja, marrom etc.) podem ser usadas, mas o efeito varia conforme a implementação
    • No caso mais simples, são tratadas da mesma forma que o branco

Codel

  • A unidade básica do código em Piet é o bloco de cor
    • É composto por um ou mais codels adjacentes da mesma cor
    • Blocos de cor adjacentes apenas na diagonal não são considerados contínuos
    • Não há restrição de forma, e eles podem ter "buracos" internos de outras cores

Pilha

  • Piet usa uma pilha para armazenar todos os valores de dados
  • Os valores de dados existem apenas como inteiros, mas podem ser lidos ou exibidos como valores de caracteres Unicode
  • Conceitualmente, a pilha tem profundidade infinita, embora a implementação possa fornecer um tamanho máximo finito

Execução do programa

  • O interpretador Piet começa a execução no bloco de cor que contém o codel no canto superior esquerdo do programa
  • Ele mantém um ponteiro de direção (DP) e um seletor de codel (CC), movendo-se entre blocos de cor segundo as regras a seguir:
    • Encontrar, entre as bordas do bloco de cor atual, a borda mais distante na direção do DP
    • Nessa borda, encontrar o codel mais distante na direção do CC
    • A partir desse codel, mover-se para o bloco de cor adjacente na direção do DP
  • Esse processo se repete até o programa terminar

Elementos da sintaxe

Números

  • Cada bloco de cor que não seja preto nem branco representa um inteiro igual ao número de codels daquele bloco
  • Só é possível representar valores positivos, mas valores negativos podem ser gerados por operadores
  • O interpretador não faz push automático do número na pilha ao encontrá-lo

Blocos pretos e bordas

  • Os blocos pretos e as bordas do programa limitam o fluxo de execução
  • Ao tentar mover-se para um bloco preto ou para uma borda, o CC é alternado e o DP gira no sentido horário
  • Se ainda não for possível mover-se após 8 tentativas, o programa termina

Blocos brancos

  • Os blocos brancos são áreas "livres" pelas quais o interpretador passa sem restrições
  • Ele "desliza" pelos codels brancos na direção do DP até alcançar um bloco não branco
  • Mesmo ao atravessar um bloco branco e chegar a uma nova cor, nenhum comando é executado
  • Se o caminho dentro dos blocos brancos for completamente refeito, o programa termina

Comandos

  • São definidos pela mudança de cor quando o interpretador se move de um bloco de cor para outro
  • O comando a executar é determinado pelo número de etapas no ciclo de matiz e no ciclo de luminosidade
  • Ao atravessar um bloco branco, nenhum comando é executado
  • Principais comandos:
    • push, pop, add, subtract, multiply, divide, mod, not, greater
    • pointer, switch, duplicate, roll
    • in(number), in(char), out(number), out(char)

Opinião do GN⁺

  • Piet é uma linguagem de programação visualmente atraente, mostrando uma combinação única de arte abstrata e programação
  • Porém, em termos de praticidade, parece ter limitações. Escrever programas complexos provavelmente não é algo fácil
  • Parece poder ser usada principalmente em experimentos de design de linguagens de programação, puzzles ou criação de obras de arte
  • Como linguagens de programação visual, Blockly do Google ou Scratch do MIT podem ser alternativas mais práticas
  • De todo modo, Piet parece ser uma linguagem profunda demais, então provavelmente é difícil usá-la no aprendizado de programação para iniciantes

1 comentários

 
GN⁺ 2024-04-25
Comentários do Hacker News
  • O último programa na página de exemplos da linguagem Piet é realmente surpreendente. Uma pessoa (chamada Piet) viu uma obra que lembrava a linguagem Piet e tentou executá-la, e ela realmente funcionou. Foi a primeira vez na história em que um artista gráfico desenhou acidentalmente um programa executável.

  • Piet é uma experiência revolucionária entre as linguagens de programação esotéricas, mas, a menos que o desenvolvedor faça isso intencionalmente, não atinge bem o objetivo de parecer uma pintura de Mondrian. Seria bom se a própria estrutura da linguagem fosse projetada para que o que fosse escrito se parecesse com uma pintura de Mondrian.

  • Isso levanta a pergunta: "Como é a aparência de um algoritmo?" Será que algo como o romance O Jogo das Contas de Vidro (Magister Ludi), de Hermann Hesse, poderia ser criado no mundo real? Como alguém com orientação visual, quero acreditar que sim, e de fato tentei usar ferramentas desse tipo, mas respostas ambíguas tornam difícil equilibrar expressividade visual e modularidade.

  • Coisas desse tipo parecem algo que apareceria em um thriller policial, confundindo os protagonistas/investigadores até que alguém perceba que aquilo é código. E nós achávamos que QR codes eram úteis...

  • Descobrir Piet é um momento especial de reverência, confusão e maravilhamento. Isso está registrado em uma conversa em um podcast de CS com meu amigo Oz.

  • Alguém fez um quine em Piet. A imagem está quebrada, mas há uma cópia no CodeGolf.

  • Na faculdade houve um pequeno curso sobre linguagens de programação esotéricas, e cada um escolhia uma linguagem para brincar. Escolhi Piet, e foi divertido, mas honestamente os pequenos aplicativos de exemplo não eram esteticamente satisfatórios. Para fazer arte com Piet, provavelmente é preciso virar especialista.

  • Conheci isso na época da universidade e fiquei até tarde da noite escrevendo programas simples; foi uma experiência muito divertida. Recomendo que as pessoas tentem isso pelo menos uma vez!

  • A página de exemplos é surpreendente. Dá para ver as telas ficando cada vez mais sofisticadas e bonitas.

  • Muito legal! Fico pensando se seria possível reunir obras em Piet e criar um programa que devolva um texto dado. Algo como um gerador de código Piet. Parece que seria um presente incrível em versão impressa!