copy and destroy

catch and eat

クワイン

https://blog.sushi.money/entry/2025/11/15/235900

一番感動したのは、やっぱり大林さんのクワインの話で、printfの第1引数と第2引数に同じ変数を渡すことができて、%sという文字を渡すと、printfの結果、%sが%sと置き換わって、%sが出力される。結果は一緒なので、何も起きないように見えているけど中身は入れ替わっている。

$ perl -e 'my $s="%s";printf($s, $s)'
%s

https://en.wikipedia.org/wiki/Quine_(computing)

クワインとは、入力を一切受け取らず、自身のソースコードのコピーのみを出力するコンピュータプログラムです。計算可能性理論やコンピュータ科学の文献では、これらのプログラムを「自己複製プログラム」、「自己増殖プログラム」、「自己複製プログラム」といった 標準的な用語で表現しています。

「クワイン」という名前は、ダグラス・ホフスタッターが1979年に出版した人気科学書『ゲーデル、エッシャー、バッハ』の中で、間接的な自己言及について広範な研究を行った哲学者ウィラード・ヴァン・オーマン・クワイン(1908年 - 2000年)に敬意を表して名付けられました。特に、クワインのパラドックスとして知られる次のようなパラドックスを生み出す表現にちなんで名付けられました。

Quine's paradox - Wikipedia

"yields falsehood when preceded by its quotation" yields falsehood when preceded by its quotation.

自己言及のパラドックス - Wikipedia

哲学および論理学における自己言及のパラドックス(じこげんきゅうのパラドックス)または嘘つきのパラドックスとは、「この文は偽である」という構造の文を指し、自己を含めて言及しようとすると発生するパラドックスのことである。この文に古典的な二値の真理値をあてはめようとすると矛盾が生じる

「この文は偽である」が真なら、それは偽だということになり、偽ならばその内容は真ということになり……というように無限に連鎖する。同様に「この文は偽である」が偽なら、それは真ということになり、真ならば内容から偽ということになり……と、この場合も無限に連鎖する。

https://fortee.jp/yapc-fukuoka-2025/proposal/28b3a042-a2e9-4866-bd76-3be08608c7b2

Quineというのは自分自身を出力するプログラムのことで,プログラミングによるアートです。Web上には様々なQuineが公開され,その芸術を競っています。皆さんはそういったQuineを見てQuineとは難しいものだと思われているかもしれません。しかし恐れることはありません。Quineは皆さんと共にあります。ライブコーディング形式でやりますので皆さんもノートPCを持参して一緒に書いてみてください!

この話はもともとYAPC::Kyoto 2020で話す予定でしたが、COVID-19で延期になってしまい、結局Rebootできずお蔵入りになったものです。今回のYAPCのテーマは「きゅう」ということでこの機会にQ(uine)のお話を復活させたいと思います。

普段はPythonやRubyを書いているのですが、Quineは言語はあまり関係ないのでYAPCですしPerlでお話します。

powered by hatena blog.
the nikki system for lifelogging junkies.

all posts © their original owners.
writing is reusable solely under the by creative commons license.