Saat ini saya sedang belajar bahasa C, jadi saya termasuk pemula dalam bahasa ini. Kesulitan yang saya hadapi bukan pada dasar-dasar pemrograman bahasa C, karena secara sintaksis, bahasa C cukup sederhana. Bahasa ini memang dirancang dengan sintaks dan fitur yang minimal dibandingkan dengan bahasa pemrograman tingkat tinggi seperti C++, Java, atau Python. Meskipun kesederhanaannya adalah salah satu kekuatan bahasa C, hal ini juga bisa menjadi tantangan bagi pembelajar seperti saya.
Kesulitan utama adalah tipe data yang relatif primitif dalam bahasa C:
– Bilangan (baik bulat maupun pecahan)
– Karakter (yang sebenarnya juga dapat diperlakukan sebagai bilangan)
– Array: Kumpulan atau rangkaian dari tipe data bilangan atau karakter
– Struct: Dasar untuk menggabungkan berbagai tipe data
– Union: Mirip dengan struct, tetapi memori yang dialokasikan hanya sebesar tipe data terbesar di dalamnya
– Pointer: Tipe data khusus yang menyimpan alamat memori dari tipe data lain
Selain itu, bahasa C tidak mengenal tipe data string secara langsung. String dalam C adalah array karakter yang diakhiri dengan karakter ‘\0’. Tipe-tipe data canggih seperti dictionary/hash map dan tuple tidak disediakan secara langsung dalam bahasa C, namun bisa dibangun menggunakan tipe data primitif yang ada.
Kesulitan terbesar adalah Pointer. Karena C memberikan akses langsung ke memori melalui pointer, sangat mudah untuk mengalami masalah alokasi memori atau mengisi memori dengan data yang tidak diinginkan. Membuat aplikasi “hang” dalam C bisa terjadi dengan mudah, dan saya sering merasa pusing saat menghadapi pointer yang kompleks.