Wednesday, May 18, 2005

03. P

Seri : Regular Expression

Episode : 03. P

Author : Youppie Arliansyah

Tanggal : 9 April 2002



 


P adalah bahasa program generasi kelima. Nama P sendiri melanjutkan tradisi penamaan dari bahasa BCPL, setelah C. Seperti C yang merupakan pengembangan dari bahasa B, P adalah pengembangan dari bahasa C. Namun banyak pakar yang meragukan hal ini dan menganggap P tidaklah murni kelanjutan dari bahasa C.


P menggabungkan seluruh feature yang dimiliki bahasa pemrograman yang telah ada sebelumnya. OOP, cross platformnya Java, integrasi dengan SQL engine, juga pustaka modul untuk semua kebutuhan. Tapi ada dua feature lagi yang tidak dimiliki bahasa lain yang membuatnya berbeda.


P dikembangkan untuk berjalan sebagai demon. Dengan begitu, sebuah server dapat didedikasikan sebagai P server yang lengkap dengan modul-modulnya. Instalasi P yang lengkap memakan storage yang terlalu besar, lebih dari 20GB, serta menghabiskan terlalu banyak sumber daya sebuah komputer. Maka server-server itu menjadi dibutuhkan untuk menyediakan seluruh modul yang ada.


Programmer dapat bekerja di rumah, menulis kode lalu mengcompilenya, sementara modul-modul yang diincludekan diambil dari server yang terkoneksi. P cliet tak perlu menyimpan modul-modul itu sendiri. Bahkan server-server itupun saling berhubungan menshare sumber daya masing-masing, mencontoh sistem share file MP3 dahulu. Perkembangan jumlah modul P terlalu pesat, sehingga hampir tak ada satu server tunggal yang mampu menampung semuanya.


P daemon itu juga dapat diintegrasikan kedalam kernel, sehingga ketika sistem operasi itu di-embedd kedalam perangkat elektronik lain, seperti televisi, rice cooker, atau kamera digital, P processor bisa ikut bersamanya. Feature ini memudahkan para programmer P mengembangkan modul-modul aplikasi khusus untuk perangkat-perangkat itu. juga memudahkan pemakai untuk mengambil modul yang siap pakai untuk perangkatnya. Sebagai illustrasi, suatu saat seseorang menginginkan adanya layanan terjemahan bahasa latin dari salah satu stasiun televisi untuk siaran yang berbahasa perancis, sementara yang ada pada televisinya ketika itu hanya terjemahan untuk bahasa Inggris dan Indonesia. Dia dapat menghubungkan televisinya, yang dilengkapi jack komunikasi atau jack modem, ke server statiun televisi bersangkutan. Atau jika menggunakan siaran TV kabel maka dia tinggal memanggil satu channel khusus yang melayani perubahan itu. Televisi itu kemudian mendownload modul penerjemah. Modul itulah nantinya yang akan menampilkan setiap stream terjemahan yang dikirim stasiun itu. terjemahan siap untuk dinikmati. Tapi menurut data survey pihak pertelevisian, modul dubbing, yang menerjemahkan siaran dalam bentuk audio, ternyata lebih disukai penonton. Semuanya dikerjakan oleh P processor. Oven microwave yang tahu berapa lama harus hidup untuk memasak sajian resep tertentu adalah contoh lainnya.


Feature lainnya adalah HOOP, Humanity Object Oriented Programming. Teknologi ini mengembangkan konsep OOP lebih jauh sehingga dapat melakukan apa belum bisa dilakukan OOP konvensional, inherit dari dua objek yang berbeda. Sejarahnya, konsep OOP yang menyatukan data dan kode dalam satu unit dikembangkan pada bahasa C++, yang kemudian diadaptasi oleh hampir semua bahasa program baru. Suatu objek dapat diturunkan dari objek lain, dengan mengambil sifat-sifat dari objek ancestor. Tapi hampir mustahil untuk mengambil sifat dari dua buah objek yang berbeda. Setidaknya yang bisa dilakukan adalah dengan membuat satu turunan, lalu menambahkan dengan paksa sifat-sifat dari objek kedua. Hampir tidak ada interaksi antara objek turunan itu dengan objek yang diharapkan untuk menjadi ancestor kedua. Dengan hoop, masalah itu dapat diatasi, bahkan terkesan humanis.


Dalam hoop, objek terbagi atas tiga spesifikasi gender: jantan, betina dan netral. Objek bergender netral tak jauh beda dengan objek pada OOP dan lebih disediakan untuk kompatibilitas. Sementara objek jantan dan objek betina adalah jenis objek yang bisa dikawinkan dan menghasilkan objek anak. Perkawinan inilah yang menjadi kunci inherit dari dua objek yang berbeda.


Objek jantan didefinisikan sebagai objek yang bisa mengintervensi, sementara objek betina didefinisikan sebagai objek yang hanya bisa diintervensi. Maka intervensi antara objek jantan dan objek betina disebut perkawinan yang akan menghasilkan anak objek.


Syntax perkawinan itu adalah:



MARRIAGE objek_jantan objek_betina FAMILY nama_perkawinan [EXPECT objek_anak [WITH sifat,sifat,untuk,objek,anak|ALL]];



Penjelasannya:


Statement MARRIAGE mengawinkan objek_jantan dan objek_betina.


Statement FAMILY untuk memberi nama perkawinan itu, biasanya menggunakan nama objek jantan tapi tidak mutlak.


Sebuah perkawinan dibolehkan untuk tidak langsung menghasilkan anak, biasanya hanya digunakan sekedar untuk persiapan. Namun jika dari perkawinan itu diharapkan objek baru, maka statement EXPECT (bersifat opsional) akan menghasilkan objek_anak. Dari sini si anak bisa mewarisi sebagian sifat-sifat kedua orang tuanya dengan menyertakan daftar sifat itu pada parameter statement WITH, atau mengambil semua sifat parent dengan statement ALL.


Inisialisasi objek dilakukan dengan syntax


Class [boy|girl] nama_objek


{


sifat_1();


sifat_2();


sifat_3();


.


.


.


sifat_n();


}


Dapat dilihat bagaimana menentukan gender untuk setiap objek saat pendeklarasiannya.


Objek netral tidak dapat dikawinkan. Jika ingin mengawinkan sebuah objek netral, objek itu harus pertama kali harus diberi gender. Pemberian gender pada objek netral dilakukan dengan cara:



HE_IS|SHE_IS nama_objek_netral;



Namun jika ternyata yang diberi gender itu bukan objek netral, maka daftar pesan kesalahan yang mungkin muncul adalah:


Jika he_is pada objek jantan: Gender initialization error: he’s already a man.


Jika he_is pada objek betina: Gender initialization error: don’t push her to become a boy.


Jika she_is pada objek jantan: Gender initialization error: he doesn’t want to loose his …


Jika she_is pada objek betina: Gender initialization error: she’s already a woman.



Sistem kelamin ini akan tergambar dengan jelas pada tahap kompilasi:


Pada setiap objek betina yang dideklarasikan, kompiler akan menyediakan tiga lokasi memori khusus: own_space, husband_space dan uterus, serta dua variabel sistem: husbandID dan onmarriage, yang secara default bernilai nol. Own_space adalah tempat objek betina menyimpan sifat-sifatnya. Ketika perkawinan terjadi, husbandID akan berisi ObjID milik objek jantan dan onmarriage bernilai 1. Kemudian sifat-sifat objek jantan diwariskan kedalam husband_space. Jika perkawinan itu mengharapkan anak, maka kompiler akan memilah sifat-sifat yang diminta dari gabungan antara own_space dan husband_space lalu diletakkan di uterus. Selanjutnya objek anak dibuat dengan mewarisi sifat-sifat dari uterus ini. Jika ternyata sifat yang diminta tidak ditemukan pada uterus, kompiler akan menampilkan pesan kesalahan: invalid marriage: married by accident.


Objek betina yang telah dikawinkan ini akan selalu membawa sifat objek jantan pada husband_space-nya. Maka objek betina yang telah dikawinkan tidak dapat dikawinkan lagi dengan objek jantan lain, sementara objek jantan dapat dikawinkan dengan objek betina mana saja yang berstatus singel, onmarriage bernilai 0. Pesan kesalahan akan muncul jika terjadi perkawinan antara objek jantan dengan objek betina yang telah kawin: invalid marriage: Cannot propose somebody’s wife. Untuk memeriksa status perkawinan sebuah objek betina dilakukan perintah:



ISMARRIED nama_objek_betina;


Jika perintah ini ternyata dijalankan pada objek jantan, pesan yang muncul adalah:



ismarried error: who care? 


Namun jika dijalankan pada objek netral pesannya akan menjadi:



Ismarried error: object even doesn’t have any gender


Pada objek betina, satus dihasilkan adalah (pesan dapat dilihat pada debug editor): Ismarried: she has somebody, jika status onmarriagenya 1; Ismarried status: she is being widow atau Ismarried status: she is virgin, jika onmarrieagenya 0.


Jika marriage itu tidak diperlukan lagi, mungkin karena dibutuhkan sebuah perkawinan baru dengan objek jantan lain, maka dilakukan:



DIVORSE nama_perkawinan


Dengan begitu, isi dari husband_space objek betina yang didivorse akan dihapus, tapi tidak mengubah isi variabel husbandID lama sampai terjadi perkawinan baru dengan objek jantan baru. Cara ini untuk memberi jalan rujuk bagi kedua objek yang telah bercerai jika ternyata perkawian itu masih dibutuhkan dengan perintah:



REMARRIAGE nama_perkawinan 


Lagi pula dari satu perkawinan masih bisa dihasilkan anak-anak lain dengan variasi sifat berbeda-beda. Caranya:



PREGNANT nama_perkawinan BORN nama_objek_anak WITH sifat,sifat,objek,anak;


Karena pertimbangan moral, objek-objek dengan gender sejenis tidak dapat saling dikawinkan. Secara sistem kompiler hal itu bisa dimengerti karena objek jantan tidak memiliki space tambahan untuk menampung sifat objek pasangannya, sementara objek betina akan saling mengisi husband_spacenya dengan sifat pasangan masing-masing yang berakibat menghasilkan dua objek yang identik, yang jika ditambah dengan objek anak maka akan terdapat ada tiga objek identik yang sia-sia.


Objek anak tidak dapat dikawinkan dengan objek parentnya untuk menghindari terjadinya redudansi sifat pada objek betina. Akibatnya diperlukan banyak perkawinan untuk mendapatkan keturunan objek yang sesuai. Betul-betul humanistik.


Dan orang-orang yang paling berjasa dalam lingkup pemrograman P ini adalah para pengawin objek, yang menghabiskan banyak waktu untuk menciptakan perkawinan berbagai objek. Kumpulan objek mereka luar biasa. Beberapa memajang situs menawarkan objek-objek mereka dengan memasang iklan seperti ‘Fantastic, exotic object’, ‘Hot babes object’ dan lain-lain, namun populasi iklan nyeleh seperti itu hanya 0,2 persen dari semua yang ada. Kebanyakan iklan mencari objek dengan menyebutkan spesifikasi yang diinginkan seperti "Need some female obs which has bla bla bla". Beberapa malah ada yang mencari objek ancestor dari objek-objek yang dimilikinya. Situs Paul Trees yang memuat daftar silsilah objek adalah salah satu yang paling sering dikunjungi. Ada ada saja.


***


"Kok Om Yos ngga bilang-bilang sih?" Regie protes pada pakar P itu.


"Habis, kamunya terlalu nge-geek."


"Iya, tapi Om Yos keterlaluan banget deh kalo ngerahasiain identitas sampe segitu-gitunya."


"Lha kamu sendiri nggak nanya-nanya."


"Nanya kalo Om Yos yang nulis buku-buku itu? Mana saya tahu?"


"Reg, kamu orangnya itu terlalu cuek, juga sombong. Coba, selama kamu kenal Om, pernah nggak kamu nanya yang lain selain kode komputer sama P. Paling kamu cuma nanya kampung Om, itu aja. Pernah gitu kamu nanya kalo hubungan saya sama Om Rudi itu bagaimana? Sejak kapan kami berteman? Nggak kan? Bahkan kamu ngga tahu kalo nama Om itu Yosefrizal. Kamu cuman mikirin kode komputer, muter-muterin logika. Dan ini judgement buat kamu, kamu menganggap saya hanya sebagai satu lagi programmer lain yang mau kamu uji, dan kalau kamu bisa mengalahkannya lalu kamu anggap remeh. Kamu tidak menganggap saya sebagai manusia yang selayaknya dihargai." Regie terdiam. "Kamu juga ngga terlalu peduli sama lingkungan sekitar, mencoba untuk jadi asosial. Sepertinya kamu hanya hidup di alam kamu sendiri. Ya ngga, Rud?"


"He he he," Om Rudi hanya terkekeh. Regie terdiam.


"Nggak salah kan?" Regie mencoba berargumen.


"Nah ini dia keras kepalanya."


"Kayak bapaknya," sela Om Rudi. Regie melotot padanya.


Om Yos melanjutkan, "Kamu itu cuma terpesona sama gaya hidup kaum geek sana. Pada dasarnya kamu itu orang yang luwes. Ngapain kamu ngotot jadi asosial kalau kamu bisa bergaul? Sebetulnya ngga usah ikut-ikutan asosial. Orang jenius ngga musti asosial. Kalau mereka-mereka itu memang sudah dasar psikologinya yang kesulitan bergaul dan nggak bisa disalahin kalau jadi asosial begitu. Lha kalau kamu?"


"Bener Reg," Om Rudi ikutan nimbrung. "Kamu salah kalau menganggap geek itu identik dengan asosial. Kamu punya bakat bergaul yang bagus. Kamu bisa langsung akrab sama orang-orang. Jarang lho geek seperti kamu."


"Nah, kan! Sejak kecil juga kamu udah pinter bergaul."


"Emang Om Yos tahu kecilnya saya?" Regie heran.


"Sembarangan kamu, Reg. Waktu bayinya kamu itu pernah pipisin celana Om. Kamu mana ingat? Kecilnya kamu dulu yang ngajak jalan-jalan ke kebun binatang waktu disemprot gajah itu siapa?" Disemprot gajah? Samar-samar Regie ingat kejadian itu. Dicobanya memperjelas bayangan, seingatnya ketika itu ada Mama, Om Rudi, lalu dua orang lagi yang tidak bisa diingatnya. Tapi lalu satu bayangan menjadi meragukan.


"Lho! Om Yos ya waktu itu?" Om Yos tersenyum geleng-geleng kepala.


"Rud, kasih dia lihat arsipnya."


Mata Om Rudi berbinar. Di Markas LED itu dia mulai membrowsing direktori mencari-cari sebuah file. Regie jadi terbit penasaran pada arsip yang dikatakan itu. Arsip apa? Sebuah surat pernyataan bahwa Om Yos pernah bersamanya dulu? Regie jadi tersenyum agak sinis.


"Oke, ini dia," kata Om Rudi. Sebuah file JPG? Foto? Foto apa? Om Rudi mengklik file itu dan otomatis program image viewer muncul menampilkan foto dua laki-laki dan satu perempuan orang berpose di kebun binatang di depan kandang gajah. Si perempuan berdiri di tengah diapit kedua lelaki itu, menuntun seorang balita 4 tahun. Regie mengenali mereka. Yang perempuan adalah mamanya. Di sebelah mama adalah Om Rudi, dan si kecil itu pasti dia. Dan orang yang satu lagi, yang juga menuntunnya?


"Itu saya," kata Om Yos menjawab kebingungan hati Regie.


"Ooo…, Om Yoooos…," suaranya begitu panjang. Mereka tertawa.


Foto itu memang tepat untuk dikatakan sebagai arsip. Karena pemandangan disana begitu istimewa. Menangkap adengan seekor gajah yang tengah menyemprotkan air dari belalainya, juga orang-orang yang berlarian menghindar kecuali yang tengah berpose. Korbannya ketika itu….


"Nggak nyangka bakal disemprot begitu," kenang Om Yos, berbinar memandangi kenangan itu. "Pas kena saya. Betul betul pas habis. Kamu juga ikut kecipratan Reg, tapi saya yang paling parah. Mungkin kamu nggak sadar waktu itu, tapi saya musti terus nemanin kalian nurutin Regie yang pingin kemana-mana. Tiga jam di kebun binatang, basah kuyup…." Om Yos tidak melanjutkan kata-katanya. Semua yang hadir terlarut. Tapi Om Rudi tak tahan lama-lama. Tawanya pecah pada kenangan itu. Terbata-bata dia mengomentari kejadian itu sambil tertawa. Semuanya tertawa sampai sakit perut.


"Gila…, nggak bilang-bilang lagi…," kenang Om Rudi, setelah tawa-tawa mulai mereda.


"Eh Om, yang ngambil foto ini siapa sih?" tanya Regie pada kedua senior itu. Yang ditanya saling berpandangan sesaat, lalu menatap Regie penuh arti. Regie jadi gamang diperlakukan begitu. Ada apa gerangan? Bukan ayahnya kan? pikirnya.


Tapi pasti orang dewasa keempat. Karena Om Yos mengatakan bahwa Regie akan tahu dengan sendirinya.


"Itu akan jadi pelajaran buat kamu supaya nggak asosial lagi. Tadinya Om juga sengaja tidak memberitahu kamu tentang buku itu supaya bisa ngerasain akibatnya kalo ngga pedulian. Gimana rasanya kedatangan tamu dari masa lalu?"


Benar juga. Regie jadi malu. Selama ini, setelah dua tahun, Regie menganggap bahwa Om Yos adalah orang Padang kenalan baru Om Rudi. Dua tahun yang lalu Regie bertemu (lagi) dengannya di markas LED. Kesan untuknya ketika itu adalah seorang veteran komputer, seperti Om Rudi, yang akan ikut membantu pengembangan LED Server. Bahkan ketika itu pun Regie masih salah sangka menganggap Om Yos sekedar datang dari Padang. Kemudian dia baru tahu ternyata Om Yos baru menyelesaikan PhDnya di MIT dan bergabung dengan tim LED Server. Lalu kini, Regie tahu bahwa Om Yos datang dari masa lalunya. Om Yos….

0 Comments:

Post a Comment

Subscribe to Post Comments [Atom]

<< Home