Self-Generating Code

(Baca: Ayam bertelur atau telur menetas jadi ayam?)

Well, percaya atau nggak pertama kali compiler bahasa C dibuat menggunakan bahasa C. Seperti pepatah di atas yang menyerupai lingkaran setan, mana yang lebih dulu ada di dunia: telur atau ayam?

Em.. mestinya harus percaya sih, sumbernya dari dosen soalnya haha..

Mungkin berkaca pada keberadaan bahasa C, saya akan coba memperagakan self-generating code simpel dimana kode yang akan saya tulis akan menuliskan kodenya sendiri. Hoho, perhatikan baik-baik :


/*Author : Rizky 13507108*/
#include <stdio.h>

int main() {
	char *selfcode = "/*Author : Rizky 13507108*/%c#include <stdio.h>%c%cint main() {%c%cchar *selfcode = %c%s%c;%c%cprintf(selfcode,10,10,10,10,9,34,selfcode,34,10,9,10,9,10);%c%creturn 0;%c}";
	printf(selfcode,10,10,10,10,9,34,selfcode,34,10,9,10,9,10);
	return 0;
}

Akan jadi apakah kode program ini? Mari kita eksekusi kode program C di atas menggunakan compiler gcc di command prompt windows. Tada!!

Lihatlah! kode dan hasil eksekusinya sama. Wohoho.. telur atau ayam duluan nih?

Sebelum saya menganalisis kode program C tersebut, pertama-tama mau tanya dulu nih, masih inget kan metode menulis “hello world 2010!!”. Anda benar! seperti ini cara menulisnya :

	int i = 2010;
	printf("hello world %d!!", i);

Kalau Anda sudah ingat mari kita mulai menganalisis kode program tersebut. Inti dari kode ini sebenarnya hanyalah printf. Nah, cara menulis yang baru saya beritahu di ataslah yang saya manfaatkan. Ada variabel selfcode yang bertipekan char * atau string dalam C. Variabel inilah yang memuat semua isi kode yang akan dituliskan ke layar. Kalau diperhatikan saya memanggil beberapa notasi ascii code sebagai berikut :

  • 10 untuk new line
  • 9 untuk horizontal tab
  • 34 untuk double quote

Berikut penjelasan bagian printf :

  • selfcode yang pertama merupakan apa yang akan dituliskan ke layar
  • beberapa notasi ascii yang berupa angka. Fungsinya sudah saya jelaskan sebelumnya
  • selfcode yang kedua untuk memenuhi variabel dengan format %s pada variabel selfcode itu sendiri

Oke, demikian penjelasan singkat mengenai self-generating code. Mungkin dengan postingan ini kita dapat menyimpulkan bahwa ayam terlebih dahulu baru terciptalah telur? Who knows?

Tinggalkan Balasan

Isikan data di bawah atau klik salah satu ikon untuk log in:

Logo WordPress.com

You are commenting using your WordPress.com account. Logout / Ubah )

Gambar Twitter

You are commenting using your Twitter account. Logout / Ubah )

Foto Facebook

You are commenting using your Facebook account. Logout / Ubah )

Foto Google+

You are commenting using your Google+ account. Logout / Ubah )

Connecting to %s