2P by neo 7달전 | favorite | 댓글 1개

Paint Splatters와 Perl 프로그래밍 언어의 관계에 대한 연구 논문 소개

  • SIGBOVIK 2019 학회에 게재 승인되고 "Unwitting Participation Ribbon"을 수상한 논문
  • 페인트를 벽에 튀기면 93%의 확률로 유효한 Perl 프로그램이 만들어짐
  • 광학 문자 인식(OCR) 소프트웨어를 사용하여 실증적 접근 방식을 사용
  • Paint Splatter로 만들어진 Perl 프로그램의 특성을 분석하고, 유효한 Perl 프로그램이 아닌 7가지 Paint Splatter 예시를 제시함

논문의 보충 자료 소개

  • 단일 페이지에 모든 Paint Splatter와 해당 유효한 Perl 소스 코드를 표시
  • 유효한 Perl 프로그램으로 파싱되지 않은 이미지는 빨간색으로 "유효하지 않음"이 표시됨
  • 서로 다른 OCR 설정으로 여러 유효한 Perl 프로그램이 인식된 경우, 저자의 미적 감각에 따라 가장 "흥미로운" 것을 선택함
  • 논문의 주요 데이터 세트로 사용된 100개의 Paint Splatter 이미지가 포함된 tarball 제공

논문 제출 마감 후 발견된 흥미로운 Paint Splatter Perl 프로그램 예시

  • lerzfijglpFiji-j 문자열로 인식되어 Perl에서 숫자 0으로 평가되는 splatter
  • *?- 문자열로 인식되어 Perl에서 숫자 0으로 평가되는 이미지
  • ;i;c;;#\\\\?z{;?;;fn':.; 문자열로 인식되어 Perl에서 문자열 "c"로 평가되는 이미지
  • `;E,'', 문자열로 인식되어 Perl에서 문자열 "E"로 평가되는 이미지

GN⁺의 의견

  • 독특하고 재미있는 아이디어로 프로그래밍 언어의 특성을 탐구한 논문으로 보임. Perl의 문법적 유연성을 역설적으로 보여주는 좋은 사례가 될 듯함.
  • 하지만 이 논문의 연구 결과가 Perl 언어 설계상의 문제점을 시사하는 것은 아닌지 궁금해짐. 무작위 문자열도 93%나 파싱된다는 것이 언어의 모호성을 드러내는 것 아닐까?
  • 비슷한 실험을 다른 프로그래밍 언어에 적용해본다면 어떤 결과가 나올지 궁금함. 언어별 결과 비교를 통해 언어 설계 철학의 차이를 엿볼 수 있을 것 같음.
  • 프로그래밍 언어 문법을 이런 방식으로 시각화하는 것도 흥미로운 시도일 것 같음. 문법의 복잡도나 규칙성 등을 시각적으로 파악하는데 도움이 될 듯.
Hacker News 의견
  • OCR 소프트웨어가 텍스트가 아닌 이미지에서도 여전히 텍스트 결과를 생성하는 것은 잘못된 것임. 10년 전에 오래된 책을 OCR로 스캔했을 때, 작은 그림, 얼룩, 먼지 등에서 생성된 쓰레기 텍스트를 처리하는 것이 얼마나 성가신 일이었는지 기억남. 이 분야에서는 그 이후로 큰 진전이 없어 보임.

  • Concatenative 언어는 모든 토큰 시퀀스가 유효한 프로그램이 되는 특성이 있음.

    • 단일 비트를 토큰으로 사용하는 언어의 경우 모든 비트 시퀀스가 유효한 프로그램임.
    • Chris Barker의 zot이 그런 언어 중 하나임.
    • zot에서 영감을 받아 Binary Lambda Calculus의 concatenative 버전을 정의했는데, 이 버전도 같은 특성을 공유함.
  • 재미있는 각주가 있음:

    • Perl 프로그램 "Illegal division by zero at /tmp/quine.pl line 1."을 적절한 위치에 저장하면 "Illegal division by zero at /tmp/quine.pl line 1."을 출력함. 이런 동작의 이유는 독자의 연습 문제로 남겨둠.
  • 관련 글:

    • "93% of Paint Splatters Are Valid Perl Programs (2019)" (2021년 7월, 163개 댓글)
    • "93% of Paint Splatters Are Valid Perl Programs (2019)" (2023년 12월, 1개 댓글)
  • 이 글은 특정 "광학 문자 인식" 프로그램으로 페인트 스플래터를 문자로 인식하는 것에 대해 다루고 있음. 이 프로그램은 거의 항상 어떤 문자 조합으로든 인식하는 경향이 있는 것 같음.

  • 이를 실현할 수 있는 여러 가지 방법 중에서, 이것은 절대적으로 환영받을 만하고 정신에 부합함. 하지만 색상과 빈 공간의 패치를 0과 1로 취하고 전체를 프로그램으로 보는 등 다른 가능한 방법에 대한 첫인상을 주기도 함. 이런 경우 대부분은 무의미한 노이즈일 것임.

  • 노이즈가 대부분인 극단과 의미가 대부분인 극단, 이 두 가지 극단이 있음. 여기서 게임 속의 게임은 페인트 스플래터에 가능한 한 최대의 의미를 부여하는 해석 방식을 찾는 것임. 이때 의미는 규칙이 의미를 보는 것을 선택하는 데 얼마나 적극적인지가 아니라 구조에서 진정으로 나와야 함.

  • "라인 노이즈와 구별할 수 없음"이라는 오래된 농담을 변형한 영리한 버전임.

  • 생성형 AI를 사용하면 작동하는 소프트웨어로 평가되는 새롭고 혁신적인 페인트 스플래터를 더 빠르게 만들 수 있음. 생성형 AI는 새로운 창작자 계층이 텍스트에서 이미지로의 워크플로를 활용하고 활용할 수 있게 해주며, 모든 규모의 비즈니스에 가치를 제공함. 새로운 AI 모델은 다양한 고해상도 콘텐츠에 작동 소프트웨어와 기계 판독 가능 코드를 내장할 수 있어 시청자를 사로잡고 창작자에게 새롭고 흥미로운 청중 확대 방법을 제공함.

  • 4월 1일에 게시됨. 이는 무언가를 암시함.

  • Perl 프로그래머로서 작동하지 않는 7%는 버그라고 생각함.