2 pontos por GN⁺ 2024-04-30 | 1 comentários | Compartilhar no WhatsApp

Apresentação de um artigo de pesquisa sobre a relação entre Paint Splatters e a linguagem de programação Perl

  • Artigo aceito na conferência SIGBOVIK 2019 e vencedor do prêmio "Unwitting Participation Ribbon"
  • Ao jogar tinta na parede, há 93% de chance de surgir um programa Perl válido
  • Usa uma abordagem empírica com software de reconhecimento óptico de caracteres (OCR)
  • Analisa as características dos programas Perl criados por respingos de tinta e apresenta 7 exemplos de Paint Splatter que não são programas Perl válidos

Apresentação dos materiais suplementares do artigo

  • Exibe em uma única página todos os Paint Splatters e seus respectivos códigos-fonte Perl válidos
  • As imagens que não foram analisadas como programas Perl válidos aparecem marcadas em vermelho como "inválido"
  • Quando vários programas Perl válidos foram reconhecidos com diferentes configurações de OCR, foi escolhido o mais "interessante" de acordo com o senso estético do autor
  • Disponibiliza um arquivo tarball com 100 imagens de Paint Splatter usadas como conjunto de dados principal do artigo

Exemplos interessantes de programas Perl gerados por Paint Splatter encontrados após o prazo final de submissão do artigo

  • Respingo reconhecido como a string lerzfijglpFiji-j, que em Perl é avaliada como o número 0
  • Imagem reconhecida como a string *?-, que em Perl é avaliada como o número 0
  • Imagem reconhecida como a string ;i;c;;#\\\\?z{;?;;fn':.;, que em Perl é avaliada como a string "c"
  • Imagem reconhecida como a string ;E,'_',, que em Perl é avaliada como a string "E_"

Opinião do GN⁺

  • Parece ser um artigo que explora as características de linguagens de programação com uma ideia única e divertida. Também parece ser um bom exemplo de como a flexibilidade sintática do Perl pode ser demonstrada de forma paradoxal.
  • Mas fico pensando se os resultados desta pesquisa não sugerem um problema no projeto da linguagem Perl. O fato de até 93% de strings aleatórias serem analisadas com sucesso não revela uma ambiguidade da linguagem?
  • Fico curioso sobre quais resultados surgiriam se um experimento semelhante fosse aplicado a outras linguagens de programação. Comparar os resultados entre linguagens talvez permita vislumbrar diferenças nas filosofias de design.
  • Também parece uma tentativa interessante de visualizar a gramática de linguagens de programação dessa forma. Isso talvez ajude a compreender visualmente a complexidade ou a regularidade da gramática.

1 comentários

 
GN⁺ 2024-04-30
Comentários do Hacker News
  • É um erro que software de OCR ainda gere resultados de texto mesmo a partir de imagens que não são texto. Lembro de como foi irritante lidar com o texto-lixo gerado a partir de ilustrações pequenas, manchas, poeira etc. quando escaneei livros antigos com OCR há 10 anos. Não parece ter havido muito progresso nessa área desde então.

  • Linguagens concatenativas têm a propriedade de que toda sequência de tokens é um programa válido.

    • No caso de uma linguagem que usa um único bit como token, toda sequência de bits é um programa válido.
    • zot, de Chris Barker, é uma dessas linguagens.
    • Inspirado por zot, defini uma versão concatenativa do Binary Lambda Calculus, e essa versão também compartilha a mesma propriedade.
  • Há uma nota de rodapé interessante:

    • O programa Perl Illegal division by zero at /tmp/quine.pl line 1. imprime Illegal division by zero at /tmp/quine.pl line 1. se for salvo no local apropriado. O motivo desse comportamento fica como exercício para o leitor.
  • Post relacionado:

    • "93% of Paint Splatters Are Valid Perl Programs (2019)" (julho de 2021, 163 comentários)
    • "93% of Paint Splatters Are Valid Perl Programs (2019)" (dezembro de 2023, 1 comentário)
  • Este post trata de um certo programa de "reconhecimento óptico de caracteres" reconhecer manchas de tinta como caracteres. Parece que esse programa tende a reconhecer quase sempre alguma combinação de caracteres, seja qual for.

  • Entre as várias maneiras de tornar isso realidade, esta é absolutamente bem-vinda e está em sintonia com o espírito da coisa. Mas também dá uma primeira impressão de outros métodos possíveis, como tratar manchas de cor e espaços vazios como 0 e 1 e considerar o conjunto inteiro como um programa. Nesse caso, a maior parte seria ruído sem sentido.

  • Existem dois extremos: um em que quase tudo é ruído e outro em que quase tudo é significado. O jogo dentro do jogo aqui é encontrar uma forma de interpretação que atribua o máximo possível de significado às manchas de tinta. Ao mesmo tempo, esse significado deve realmente emergir da estrutura, e não do quão agressivamente as regras escolhem enxergar significado.

  • É uma versão esperta de uma velha piada sobre ser "indistinguível de line noise".

  • Com IA generativa, é possível criar mais rapidamente novas e inovadoras manchas de tinta que sejam avaliadas como software funcional. A IA generativa permite que uma nova camada de criadores aproveite workflows de texto para imagem, gerando valor para empresas de todos os portes. Novos modelos de IA podem incorporar software funcional e código legível por máquina em vários tipos de conteúdo em alta resolução, cativando o público e oferecendo aos criadores maneiras novas e empolgantes de ampliar sua audiência.

  • Foi publicado em 1º de abril. Isso sugere alguma coisa.

  • Como programador Perl, acho que os 7% que não funcionam são bugs.