Paint SplattersとPerlプログラミング言語の関係に関する研究論文の紹介
- SIGBOVIK 2019に採択され、「Unwitting Participation Ribbon」を受賞した論文
- ペンキを壁に飛び散らせると93%の確率で有効なPerlプログラムが生成される
- 光学式文字認識(OCR)ソフトウェアを使った実証的アプローチを採用
- Paint Splatterから生成されたPerlプログラムの特性を分析し、有効なPerlプログラムではない7つのPaint Splatterの例を提示
論文の補足資料の紹介
- 1ページにすべての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%もパースされるというのは、言語の曖昧さを表しているのではないだろうか。
- 同様の実験を他のプログラミング言語に適用したらどのような結果になるのか興味が湧く。言語ごとの結果比較を通じて、言語設計哲学の違いを垣間見られそうだ。
- プログラミング言語の文法をこのような形で可視化するのも興味深い試みだと思う。文法の複雑さや規則性などを視覚的に把握するのに役立ちそうだ。
1件のコメント
Hacker Newsのコメント
OCRソフトウェアが、テキストではない画像からでも依然としてテキスト結果を生成してしまうのは不適切だ。10年前に古い本をOCRでスキャンしたとき、小さな図、染み、ほこりなどから生成されたゴミのようなテキストを処理するのがどれほど面倒だったかを覚えている。この分野では、その後あまり大きな進歩がなかったように見える。
連接型言語には、あらゆるトークン列が有効なプログラムになるという性質がある。
面白い脚注がある:
"Illegal division by zero at /tmp/quine.pl line 1."を適切な場所に保存すると、"Illegal division by zero at /tmp/quine.pl line 1."を出力する。この挙動の理由は読者への練習問題として残しておく。関連記事:
この記事は、ある特定の「光学式文字認識」プログラムがペイントの飛沫を文字として認識することについて扱っている。このプログラムは、ほぼ常に何らかの文字の組み合わせとして認識する傾向があるようだ。
これを実現するさまざまな方法の中でも、これは間違いなく歓迎すべきで、その精神にもかなっている。しかし同時に、色や空白のパッチを0と1として扱い、全体をプログラムとして見るといった、別のあり得る方法についての第一印象も与えてくれる。この場合、その大半は無意味なノイズになるだろう。
ノイズが大半を占める極端と、意味が大半を占める極端、その2つの極端がある。ここでのゲームの中のゲームは、ペイントの飛沫にできるだけ最大限の意味を与える解釈方法を見つけることだ。このとき意味は、規則が意味を見ようとどれだけ積極的かではなく、構造から本当に生じるものでなければならない。
「ラインノイズと見分けがつかない」という古いジョークをひねった、巧妙なバージョンだ。
生成AIを使えば、動作するソフトウェアとして評価される新しく革新的なペイントの飛沫を、より速く作れる。生成AIは新しいクリエイター層がテキストから画像へのワークフローを活用できるようにし、あらゆる規模のビジネスに価値を提供する。新しいAIモデルは、さまざまな高解像度コンテンツに動作するソフトウェアや機械可読コードを埋め込むことができ、視聴者を魅了し、クリエイターに新しく刺激的なオーディエンス拡大の方法を提供する。
4月1日に投稿されている。これは何かを示唆している。
Perlプログラマーとしては、動作しない7%はバグだと思う.