Selasa, 16 Maret 2010

[II3062] Kode Yang Mengeluarkan Isinya

Oke, jumpa lagi, tugas kali ini menarik, yaitu

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


Setelah melakukan eksplorasi via google, sampailah pada halaman wikipedia mengenai Quine ini, di mana Quine adalah sebuah program yang menghasilkan source code sendiri nya sebagai output, dan nama Quine diberikan berdasarkan nama seorang filosofer yang mendalami masalah ini.

Bagaimana itu jadi membuatnya ? Metodenya kurang lebih seperti berikut, program terdiri dari 2 bagian, bagian pertama adalah code untuk mengoutputkan isi source itu sendiri, dan bagian kedua adalah sebuah data string yang merepresentasikan isi dari source tersebut.

Dan di bahasa pemrograman JavaScript terdapat sebuah fitur yang menarik, yaitu menuliskan isi sebuah fungsi (bahkan sampai ke comment-comment nya :D) dengan memanggil fungsi itu layaknya variable biasa, seperti yang ada di tutorial ini. :)

Dan dari nyx.net, saya menemukan cara mengimplementasikan hal ini, dan setelah melakukan sedikit utak-utik, source code nya adalah sebagai berikut :

function quine() { document.write(quine, "quine();"); }quine();


Setelah di-embed ke sebuah HTML dan dijalankan di browser didapatkan hasil sebagai berikut:


dan terlihat bahwa Javascript itu mengeluarkan source dari dirinya sendiri.

Kenapa bisa begitu ? Jadi, ada sebuah function yang bisa menuliskan isi string code dari dirinya sendiri ditambah dengan sebuah string yang merupakan actual code dari pemanggilan dirinya. Kemudian, fungsi tersebut dipanggil. Menarik sekali hal ini menurut saya, hehe. :D

Demikianlah hasil eksplorasi kali ini, semoga berguna, cheers. :)

Tidak ada komentar: