Ketika ada bahasa yang lebih modern, higher-level dan sangat praktis digunakan memang menjadi sangat penasaran untuk belajar menggunakannya. Yah mungkin dengan hitungan tahun saja bukan suatu yang tidak mungkin definisi menulis program itu dengan mengetik. Dengan perkembangan alat input yang lebih modern misal voice recognition, bahkan sudah bisa menjadi alat input untuk query pencarian Google, menulis program nantinya bisa saja hanya dengan natural language seperti bahasa yang kita gunakan sehari-hari.

Tapi ketika sadar, “wah, ini kok bisa seenak ini ya… “. Terlintas untuk googling beberapa pemrograman yang luar biasa dinamis dan tidak perlu repot-repot salah tipe data lah, overflow lah, dll. Saya mencoba melihat dari bahasa apa bahasa itu dibuat. Iya, banyak sekali bahasa pemrograman dinamis itu dibuat dengan sebuah bahasa dengan level pendahulu yang mungkin pendahulunya juga strictly static.

Pertama masuk kuliah Algoritma dan Struktur Data, kami diajarkan bahasa C, kemudian meningkat sedikit ke bahasa C++. Dulu sempat berpikir kenapa kami harus belajar yang “jadul” seperti ini. Beberapa saat setelah mempelajari berbagai metode, konsep-konsep dan kuliah di Ilmu Komputer saya menjadi lebih terbangunkan dan sadar tentang pembekalan bahasa-bahasa tingkat dasar ini.

Selain mempelajari bagaimana mesin bekerja dengan menggunakan program-program (sekumpulan perintah) saya juga menyadari betapa “bodohnya” komputer tanpa adanya seorang programmer. Komputer hanya bisa menjalankan perintah dari programmernya. Bahasa-bahasa seperti C dan C++ mengabstraksikan bagaimana cara kerja mesin, mulai dari membuat alokasi memori, menyisipkan memori, menghapus, membuat sebuah pointer, dll. Hal itu semua berhubungan dengan sistem komputer. Jika ingin mempelajari penggunaan bahasa C yang lebih powerfull, maka kita harus mengetahui terlebih dahulu cara mesin bekerja.

Ya, Organisasi dan Arsitektur Komputer, mata kuliah wajib yang diajarkan di semester awal, di dalamnya mengenalkan kita dengan konsep-konsep perancangan sistem komputer. Dahulu, saya mengira bahwa “Ini hardware banget, buat apa nanti di Ilkomp.. oh mungkin gara-gara memang masih satu jurusan dengan Elektro, jadi saya harus belajar ini juga.” Persepsi saya dulu menganggap Organisasi dan Arsitektur Komputer ini lebih bermanfaat dipelajari oleh anak elektronika. Saya mungkin benar, bahwa itu akan bermanfaat bagi anak Elektro dengan tingkat atas yang ingin mempelajari lebih lanjut tentang arsitektur komputer. Dengan menanyai beberapa teman dari elektro, ternyata benar, di mereka mata kuliah ini menjadi mata kuliah pilihan bukan wajib.

Intinya, saya baru menyadari bahwa kuliah mengenai Organisasi dan Arsitektur Komputer itu tidak rugi, apalagi pada semester berikutnya mempelajari tentang Sistem Operasi, yang awalnya saya berpikir akan banyak mempelajari tentang Sistem operasi apa saja yang ada, ternyata malah banyak mengulang mata kuliah Organisasi dan Arsitektur Komputer untuk pengantarnya. Ternyata belajar Sistem Operasi itu sangat harus mengetahui mesin bekerja, lalu di Sistem Operasi ini penekanannya adalah beberapa hal-hal atau masalah yang sering ditemui saat menghadapi decision untuk mendesain sebuah sistem operasi yang dapat berjalan pada komputer itu. Takjubnya, banyak implementasi yang memang menggunakan bahasa C.

Walaupun C memang termasuk dalam bahasa level tinggi, tapi C berbicara mengenai interaksi dengan sistem. Sedikit motivasi juga saya dapatkan dari salah satu Dosen Ilmu Komputer yang terkenal, Bapak Janoe Hendarto, beliau pernah memberi pertanyaan yang kurang lebih seperti ini :

    “Mengapa game developer terkenal seperti Gameloft itu menggunakan bahasa C?”. Beliau menjawab bahwa bahasa C itu berinteraksi dengan mesin secara langsung. Konsekuensinya memang tinggi apabila ada kesalahan dalam memprogramnya, maka yang menjadi korban bisa jadi komputer itu bisa rusak. Namun, apabila programnya telah jadi tanpa kesalahan, maka Game dengan grafis yang bagus bisa dikompress dengan ukuran kecil dan performa yang lebih bagus tentunya.

Dari situ saya semakin penasaran untuk belajar dasarnya ini. Update: berikut sedikit contoh pengaplikasian programming C , untuk membuat inovasi beberapa sistem dibawah ini.

listbenefit c

Kesimpulan
Bahasa-bahasa tingkat tinggi biasanya mengabaikan masalah yang berhubungan dengan sistem. Biasanya bahasa-bahasa dengan level yang lebih tinggi dan dinamis terdiri dari beberapa layer yang kemudian menghubungkan ke sistem. Semua kode yang ditulis menggunakan bahasa dinamis menyerahkan hasil kode itu kepada layer dibawahnya untuk ditranslate ke level bawahnya hingga menyentuh bahasa mesin.

Knowing how to create a dynamic programming pastinya akan lebih menantang dari pada just implementing (using) the language. Dengan hanya memahami suatu yang basic yang banyak [1], dibandingkan dengan memahami suatu yang dynamic yang banyak [2] mungkin secara aplikatif lebih dominan yang kedua, tapi secara potensi yang ada, yang pertama bisa menyaingi bahkan membuat suatu yang baru yang lebih baik daripada hal-hal yang dipelajari kedua. Pendekatan [1] Bottom Up [2] Top-Down. Ini memang pilihan. Namun, bagaimana bila mendekatinya secara paralel? Sedikit mempelajari teori dasar, kemudian mencoba mempraktikannya dengan mengeksplore teknologi yang baru?[3] It’s your decision!

 

Leave a comment

Your email address will not be published.