Perlu diakui bahwa hubungan antara diriku dengan sesuatu bernama "C" itu sangat tidak cocok. Bagaimana tidak, ada-ada saja tingkah lakunya yang membuat diriku ini pusing tujuh keliling melihatnya.
Okey, berhenti bersandiwaranya.
Cerita dimulai dari awal kuliah, dimana saya mendapat sebuah mata kuliah yang berjudul "Algoritma dan Struktur Data". Nama ini sering disingkat Alstrukdat atau oleh teman-teman saya (yang sudah muak dengannya) di-"plesetin" menjadi All Stroke Dead. Kuliah ini mengharuskan saya untuk "berkenalan" dengan sesosok makhluk bernama C.
Bukan, itu bukan makhluk. C adalah suatu bahasa pemograman yang (katanya) sangat terkenal di muka bumi ini atas jasanya melahirkan berbagai bahasa pemograman-pemograman lainnya yang sangat terpakai sampai sekarang ini. Karena (katanya) C ini adalah bahasa pemograman yg cukup "mendasar", maka sudah patut layak dan sepantasnya C dipelajari di mata kuliah ini. >hoeek<
Saking dasarnya bahasa C ini sampai-sampai bahasa ini sulit dimengerti apa maunya. Tau-tau keluar saja istilah Pointer yang sangat menjadi momok dari seluruh hubungan saya dengannya.
Spoiler Alert : Pointer adalah fitur paling keren (hoax) dari C. Intinya ia adalah suatu penunjuk abstrak yang menunjuk ke suatu alamat memori (inilah yang membedakannya dengan variabel biasa).
contoh : int v; {berarti v adalah variabel bertipe integer}
int *v; {berarti v adalah pointer/penunjuk yang menunjuk ke suatu alamat bertipe integer}
Back to topic,
jadi, pointer ini sering menjadi masalah hidup saya selama beberapa bulan ini. Mengapa tidak, seringkali kelakuannya yang "labil" {gw bingung kenapa kata "labil" sangat booming di kampus} itu memusingkan saya yang sudah kusut saat memogram (baca: ngoding).
Kelakuan no 1:
Saat praktikum, saya dibuat pusing dengan kata2 "segmentation fault" yang sering sekali muncul akibat penggunaan pointer untuk linked list. Ternyata, pointer itu, yang katanya menggunakan memori secara dinamis, mesti dialokasi memorinya (dengan malloc), daaann... ternyata untuk me-malloc itu menggunakan sintaks yang aneh, ribet, dan rentan salah... Alhasil, praktikum ga selese-selese... *yg penting bisa di-compile dulu.
Kelakuan no 2:
Nah ini juga pas lagi praktikum. Ceritanya saya sudah dibuat sangat pusing dengan kata "segmentation fault" ini, padahal kodenya sudah di-cek berkali-kali rasanya tidak ada salah, dan pointer2 juga sudah di-malloc. Dalam desperate feeling akhirnya praktikum dikumpulkan apa adanya.
Merasa diperdaya, saya langsung menyerbu teman saya M. Ridhwan Ramdhani, si superman yang dewa ngoding, dan memintanya untuk melihat hasil kodingan praktikum saya tadi (dia memang selalu bawa laptop dengan compiler2 yang beranekaragam di dalamnya). Apa yang terjadi? Ternyata dengan menggunakan compiler yang berbeda kode gw bisa jalan!!!
Aaargh, makin terpedaya.
Kelakuan no 3:
Ini saat mengerjakan "tugas besar", saya mendapati masalah dengan hasil keluaran angka yang sangat2 unexpected. Saya juga bingung kenapa tiba2 keluar angka yang bejibun itu padahal ga pernah masukin angka tersebut. Kodenya juga labil lagi; hasil print suatu variabel, dengan hasil print variabel itu setelahnya, bisa berbeda padahal tidak ada instruksi untuk mengubah nilai variabel itu. Kusut dah!
Setelah bergadang mencari kesalahan, dan mengganggu teman saya yang itu lagi, saya pun memutuskan menyerah untuk malam itu dan tepar. Bangun pagi langsung lihat lagi, dan secara tak sengaja menaruh sepenggal kode ini pada bagian awal2 kode:
printf("Hallo!\n"); {intinya sih cuma untuk menulis kata Hallo saja}daaan.... secara ajaib dan menyebalkan kodenya ga error lagi... WTF!
bahkan teman saya saja (freak yang lain), ketika saya memperlihatkan keanehan ini, geleng2 kepala. Akhirnya ditemukan penjelasan kalau memori yang ditunjuk tidak pas (baca:labil) dan rentan bergeser, dan teman saya itu memperbaiki sedikit kode saya (yap, tepat di bagian malloc sucks nya) hingga akhirnya bener sebener-benernya. Fiuh!
Intinya,
C sucks!
glosarium:
compiler : alat untuk ngompile, gimana yah? pokonya kalau mau ngejalanin kodenya mesti dicompile dulu.
linked-list : list berkait. cari aja di mbah google (ada search barnya kok di blog ini. Ayo dipakai2 :p)
Aku masih masalah juga dengan bahasa C =)).
BalasHapusApalagi yang pointer itu, masih bingung cara pakainya apalagi yang C++ =)).
Kalau praktikum bahasa C, aku asal aja, trs dijadiin komen semuanya, trs lulus compile XD. Yg penting lulus compile XD.
iya, kadang2 aku ngerasa penilaiannya agak2 aneh deh, ga bisa compile dapet 0, bisa compile setidaknya dapet nilai... lebih baik kosong daripada berisi karena kalau kosong pasti bisa dicompile... hahahaha
BalasHapus