Apakah Quines bermanfaat sebagai sesuatu yang lebih dari sekadar teka-teki pemrograman?

9

Quines, yang merupakan program yang menghasilkan kode mereka sendiri sebagai bagian atau semua output mereka adalah ide yang rapi untuk teka-teki pemrograman. Namun, apakah mereka ada gunanya selain itu?

Insinyur Dunia
sumber
2
Tidak ada aplikasi praktis yang saya tahu.
Robert Harvey

Jawaban:

8

Satu-satunya waktu saya pernah mendengar tentang penggunaan praktis untuk quines adalah ketika Ken Thompson menggunakannya untuk menyembunyikan kuda Troya dalam program login Unix .

Trojan terdiri dari sesuatu seperti if (login == "Trojan") login();(lebih mungkin ditulis dalam C yang tepat), tetapi sesuatu seperti itu akan terlalu jelas dalam kode. Jadi yang dia lakukan adalah menanamkannya dalam quine dan menyembunyikannya dalam biner dari kompiler C.

Properti replikasi diri quine sudah cukup untuk memastikan bahwa meskipun tidak ada jejak backdoor ini dalam kode sumber apa pun, itu akan secara efektif mengkompilasi setiap kali kompiler C menemukan fungsi masuk Unix ().

Saya kira penjelasan yang lebih jelas bisa datang dari membaca koran. Ini kertas yang bagus.

Lihat juga: Apakah hack kompiler Ken Thompson masih menjadi ancaman?

rahmu
sumber
2
Itu juga pemahaman saya. Satu-satunya penggunaan quine yang praktis adalah malware.
JohnFx
4

Sebuah quine digunakan untuk seed Tierra , sebuah simulator organisme digital, dan kehidupan kemudian berevolusi darinya. Quine digunakan karena dijamin bahwa generasi pertama akan menghasilkan keturunan yang layak.

Evolusi menyebabkan banyak hasil menarik, termasuk bentuk kehidupan parasit dan simbiotik, dan bahkan meta-parasit. Mungkinkah itu dianggap 'berguna'?

Alex Feinman
sumber
4

Setelah beberapa Googling, jawaban yang mengejutkan adalah bahwa setidaknya ada beberapa upaya akademis teoritis untuk menggunakannya untuk membuat perbaikan kode sendiri, tampaknya.

Salah satu istilah pencarian saya adalah "pemrograman genetika", jika ada yang ingin melihat lebih jauh - itu adalah satu-satunya area pemrograman yang berpotensi berguna yang dapat saya pikirkan.

EDIT - Baru saja menemukan penggunaan Quines dalam garis besar bahasa Inggris dari bukti matematika (jawaban Ron Maimon) dari Teorema Godel.

psr
sumber
1

Saya telah menggunakan teknik seperti Quine di halaman web di masa lalu. Pikiran Anda, ini pada tahun 1998-99 ...

Saya memiliki apa yang sekarang kita sebut "aplikasi web", satu set program CGI-BIN, beberapa di antaranya melakukan beberapa interaksi yang memakan waktu dengan mainframe. Untuk menghemat melakukan bagian yang menghabiskan waktu dua kali, dalam kasus-kasus tertentu saya akan mengirimkan JavaScript yang dapat menulis ulang halaman asli ke dalam formulir untuk mengirim kembali informasi yang telah dihitung sebelumnya untuk "memesan tempat di masa depan". Saya tidak dapat mengingat keanehan apa dari interpretasi JavaScript pada saat diperlukan, tetapi penyandian seperti Quine, dan decoding pada output, dari "cadangan tempat di masa depan" HTML dan JavaScript terkait yang diperlukan.

Bruce Ediger
sumber