[II3062] Self-generating Code

Tugas Anda adalah membuat self-generating code seperti yang ada di paper Ken Thompson, Reflections on Trusting Trust. Bahasa pemrograman bebas.

Setelah mengetahui kalau tugas sekarang adalah membuat sebuah program yang bisa melakukan self-generating code, mulailah saya untuk mencari referensi tentang self-generating code, tentunya dengan bantuan mesin pencarian Google yang sudah tidak terbantahkan lagi kemampuannya.

Setelah mencari bertemulah saya dengan istilah Quine, apa itu Quine?

A quine is a fixed point of an execution environment, when the execution environment is viewed as a function. Quines are possible in any programming language that has the ability to output any computable string, as a direct consequence of Kleene’s recursion theorem. For amusement, programmers sometimes attempt to develop the shortest possible quine in any given programming language.

Quines are named after philosopher Willard Van Orman Quine (1908–2000), who made an extensive study of indirect self-reference. He coined, among others, the following paradox-producing expression, known as Quine’s paradox:

“Yields falsehood when preceded by its quotation” yields falsehood when preceded by its quotation.

Karena saya paling sering berinteraksi dengan bahasa Java, maka saya memilih salah satu contoh dari Quine dalam bahasa Java, yaitu:

class S{

void p(char d,String q,String a,String b){
System.out.println(a+d+q+’,’+d+q+d+’,’+d+a+d+’,’+d+b+d+b);
}

public static void main(String[]a){
new S().p(‘”‘,”‘”,”class S{public static void main(String[]a){new S().p(‘”,”);}void p(char d,String
q,String a,String b){System.out.println(a+d+q+’,’+d+q+d+’,’+d+a+d+’,’+d+b+d+b);}}”);
}

}

Jika program itu dijalankan, maka akan mengeluarkan input sebagai berikut:

self-generating code

Dapat dilihat bahwa output dari program ini sama dengan kode pembangunnya, ini lah salah satu contoh dari Quine

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s