Quinesはプログラミングパズル以上のものとして役に立ちますか?


9

Quinesは、出力の一部またはすべてとして独自のコードを生成するプログラムであり、プログラミングパズルにとってはすばらしいアイデアです。しかし、それらはそれ以上の用途がありますか?


2
私が知っている実用的なアプリケーションはありません。
Robert Harvey

回答:


8

クインの実用的な使い方について聞いたのは、Unixログインプログラムでトロイの木馬隠すためにケントンプソンがそれを使用したときだけです。

トロイの木馬はif (login == "Trojan") login();(おそらく適切なCで書かれた)もので構成されていましたが、そのようなものはコードではあまりにも明白です。それで彼がしたことは、それをクインに埋め込み、Cコンパイラのバイナリに隠すことでした。

このクインの自己複製プロパティは、ソースコードにこのバックドアの痕跡がなくても、CコンパイラがUnixのlogin()関数に遭遇するたびに効果的にコンパイルされることを保証するのに十分でした。

紙を読んでもっと明確な説明が得られると思います。良い紙です。

参照:Ken Thompsonのコンパイラハックは依然として脅威ですか?


2
それも私の理解です。クインの唯一の実用的な用途はマルウェアです。
JohnFx 2011

4

クインは、デジタル生物シミュレーターであるティエラの種をまくために使用され、その後、生命はそれから進化しました。第一世代が実行可能な子孫を生産することを保証したので、クインが使用されました。

進化は、寄生生物や共生生物、さらにはメタ寄生虫など、多くの興味深い結果をもたらしました。それは「有用」であると考えられるだろうか?


4

いくつかのグーグル処理の後、驚くべき答えは、コードを自動修復するためにそれらを使用するための少なくとも理論的な学術的努力があることです。

私の検索用語の1つは、「遺伝的プログラミング」でした。誰かがさらに詳しく調べたい場合、それは私が考えることができる唯一の潜在的に有用な関連プログラミング領域です。

編集- ゴデルの定理の数学的証明(ロンマイモンの答え)の英語の概要で、クインの使用を見つけました。


1

私は過去にWebページでクインのようなテクニックを使用しました。ちなみに、これは1998-99年でした...

私は現在、「Webアプリ」と呼ばれるCGI-BINプログラムのセットを持っていました。その中には、時間のかかるメインフレームとのやり取りを実行するものもありました。時間のかかる部分を2回実行する手間を省くために、元のページをフォームに書き直すJavaScriptを一緒に送信して、「将来のスポットを予約する」ために事前に計算された情報を送り返すことができました。当時のJavaScriptの解釈にどのような特殊性が必要であったかは思い出せませんが、「将来のスポットを確保する」HTMLおよび関連するJavaScriptの、Quineのようなエンコードおよび出力時のデコードが必要になりました。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.