Introducción a un artículo de investigación sobre la relación entre Paint Splatters y el lenguaje de programación Perl
- Artículo aceptado para SIGBOVIK 2019 y ganador del premio "Unwitting Participation Ribbon"
- Si se salpica pintura sobre una pared, hay un 93% de probabilidad de crear un programa válido de Perl
- Se utiliza un enfoque empírico con software de reconocimiento óptico de caracteres (OCR)
- Se analizan las características de los programas de Perl creados con manchas de pintura y se presentan 7 ejemplos de Paint Splatter que no eran programas válidos de Perl
Introducción al material complementario del artículo
- En una sola página se muestran todas las Paint Splatter y su correspondiente código fuente válido en Perl
- Las imágenes que no fueron interpretadas como programas válidos de Perl están marcadas en rojo como "inválido"
- Cuando se reconocieron varios programas válidos de Perl con distintas configuraciones de OCR, se eligió el más "interesante" según el criterio estético del autor
- Se ofrece un tarball que contiene las 100 imágenes de Paint Splatter usadas como conjunto de datos principal del artículo
Ejemplos interesantes de programas Perl de Paint Splatter descubiertos después de la fecha límite de envío del artículo
- Una mancha reconocida como la cadena
lerzfijglpFiji-j, que en Perl se evalúa como el número 0
- Una imagen reconocida como la cadena
*?-, que en Perl se evalúa como el número 0
- Una imagen reconocida como la cadena
;i;c;;#\\\\?z{;?;;fn':.;, que en Perl se evalúa como la cadena "c"
- Una imagen reconocida como la cadena
;E,'_',, que en Perl se evalúa como la cadena "E_"
Opinión de GN⁺
- Parece un artículo que explora las características de un lenguaje de programación con una idea original y divertida. Da la impresión de ser un buen ejemplo que muestra de forma irónica la flexibilidad sintáctica de Perl.
- Pero también hace preguntarse si estos resultados no sugieren problemas en el diseño del lenguaje Perl. Que incluso cadenas aleatorias se puedan parsear en un 93% ¿no revela cierta ambigüedad del lenguaje?
- Da curiosidad ver qué resultados saldrían si se aplicara un experimento similar a otros lenguajes de programación. Comparar los resultados entre lenguajes podría dejar entrever diferencias en su filosofía de diseño.
- Visualizar la gramática de los lenguajes de programación de esta manera también parece un intento interesante. Podría ayudar a percibir visualmente la complejidad o regularidad de la gramática.
1 comentarios
Comentarios de Hacker News
Que un software de OCR siga generando resultados de texto incluso a partir de imágenes que no son texto está mal. Recuerdo haber escaneado con OCR libros viejos hace 10 años, y lo molesto que era lidiar con el texto basura generado por dibujitos, manchas, polvo, etc. No parece que haya habido grandes avances en esta área desde entonces.
Los lenguajes concatenativos tienen la propiedad de que toda secuencia de tokens es un programa válido.
zotde Chris Barker es uno de esos lenguajes.zot, definí una versión concatenativa de Binary Lambda Calculus, y esa versión también comparte la misma propiedad.Hay una nota al pie interesante:
"Illegal division by zero at /tmp/quine.pl line 1.", si se guarda en la ubicación adecuada, imprime"Illegal division by zero at /tmp/quine.pl line 1.". La razón de este comportamiento se deja como ejercicio para el lector.Publicaciones relacionadas:
Este artículo trata sobre reconocer salpicaduras de pintura como caracteres con cierto programa de "reconocimiento óptico de caracteres". Parece que este programa casi siempre tiende a reconocerlas como alguna combinación de caracteres.
Entre las varias formas en que esto podría hacerse realidad, esta es absolutamente bienvenida y va muy acorde con el espíritu del asunto. Pero también da una primera impresión de otros métodos posibles, como tomar parches de color y espacios en blanco como 0 y 1, y considerar el conjunto completo como un programa. En esos casos, la mayoría serían ruido sin sentido.
Hay dos extremos: uno donde casi todo es ruido y otro donde casi todo es significado. El juego dentro del juego aquí es encontrar una forma de interpretación que otorgue a las salpicaduras de pintura la mayor cantidad posible de significado. Ese significado debe surgir genuinamente de la estructura, no de qué tan agresivamente las reglas eligen ver significado.
Es una versión ingeniosa de ese viejo chiste de "indistinguible del ruido de línea".
Con IA generativa se pueden crear más rápido salpicaduras de pintura nuevas e innovadoras que se evalúen como software funcional. La IA generativa permite que una nueva clase de creadores aproveche flujos de trabajo de texto a imagen y los capitalice, aportando valor a empresas de todos los tamaños. Los nuevos modelos de IA pueden incrustar software funcional y código legible por máquina en diversos contenidos de alta resolución, cautivando a la audiencia y ofreciendo a los creadores formas nuevas y emocionantes de ampliar su público.
Fue publicado el 1 de abril. Eso sugiere algo.
Como programador de Perl, creo que el 7% que no funciona es un bug.