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
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.
zot, de Chris Barker, é uma dessas linguagens.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:
Illegal division by zero at /tmp/quine.pl line 1.imprimeIllegal 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:
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.