This article is currently only available in Indonesian.
Pada dasarnya, komputer hanyalah sebuah mesin yang tidak dapat melakukan apapun tanpa “instruksi” dari manusia. Kumpulan instruksi yang diberikan kepada komputer untuk di-eksekusi (dilaksanakan, dijalankan) inilah yang sering kita kenal sebagai program komputer, dan penulis program tersebut kita kenal dengan sebutan programmer.
1.1. Bahasa Pemrograman
Agar dapat dieksekusi oleh komputer, sebuah program harus ditulis dengan bahasa yang “dimengerti” oleh komputer, yakni bahasa mesin. Bahasa mesin tersusun sepenuhnya dari angka-angka, yang tentu tidak mudah untuk diingat oleh para programmer. Sebagai alat bantu mengingat, para programmer kemudian mulai melabeli instruksi-instruksi tersebut dengan rangkaian huruf (umumnya merupakan singkatan dari sebuah kata, biasa dikenal dengan istilah mnemonics), yang pada akhirnya melahirkan bahasa assembly.
Dengan adanya bahasa assembly, pekerjaan seorang programmer menjadi jauh lebih mudah. Meski demikian, programming (membuat program) masih merupakan suatu pekerjaan yang sulit dan menyita waktu, karena baik bahasa mesin maupun assembly hanya menyediakan instruksi-instruksi dasar yang sangat berkaitan erat dengan perangkat keras komputer dan tidak dapat dengan mudah dipahami oleh manusia.
Agar proses memprogram menjadi lebih mudah dan efisien, para ahli pun kemudian mulai menciptakan bahasa-bahasa baru yang lebih mudah dibaca, ditulis, dan dipahami oleh manusia. Bahasa-bahasa pemrograman ini umumnya dikenal dengan istilah high-level languages (bahasa-bahasa tingkat tinggi) karena sifatnya yang lebih “menyerupai” bahasa manusia. Di sisi lain, bahasa mesin dan assembly disebut sebagai low-level languages (bahasa-bahasa tingkat rendah) karena kedekatannya dengan perangkat keras komputer. Info »
Pembagian tingkat bahasa ini bersifat relatif dan mungkin berubah sesuai perkembangan zaman. Pada saat bahasa assembly baru diciptakan, bahasa tersebut dapat dianggap sebagai bahasa tingkat tinggi. Namun, dengan munculnya berbagai bahasa pemrograman yang lebih “dekat” dengan bahasa manusia, posisi bahasa assembly pun tergeser menjadi bahasa tingkat rendah. Hal yang sama kini mulai terjadi terhadap bahasa-bahasa pemrograman yang memungkinkan akses langsung ke perangkat keras komputer, misalnya bahasa C. Beberapa kalangan sudah mulai menggolongkan bahasa C ke dalam bahasa tingkat rendah. Apabila seseorang menyebut bahasa pemrograman, pada umumnya yang dimaksud adalah bahasa pemrograman tingkat tinggi.
Tentu saja, komputer tetap hanya dapat mengeksekusi program yang ditulis dengan bahasa mesin. Oleh sebab itu, program yang ditulis dengan bahasa selain bahasa mesin harus diterjemahkan terlebih dahulu ke bahasa mesin sebelum dapat dieksekusi oleh komputer. Program untuk menerjemahkan program dalam bahasa assembly ke bahasa mesin umum dikenal dengan nama assembler. Karena pada intinya bahasa assembly hanya memetakan instruksi-instruksi berupa angka menjadi bentuk rangkaian huruf bermakna, maka proses penerjemahan ini dapat dilakukan dengan mudah dan cepat. Sementara itu, supaya lebih mudah dipahami manusia, bahasa tingkat tinggi tidak hanya melakukan pemetaan satu-ke-satu, tetapi juga melakukan berbagai bentuk abstraksi. Info »
Abstraksi dilakukan dengan menyembunyikan detail sehingga kita dapat lebih fokus pada “konsep” yang hendak dinyatakan. Sebagai contoh, sebuah bahasa tingkat tinggi dapat menyediakan instruksi untuk menampilkan tulisan ke layar monitor. Karena telah dilakukan abstraksi, kita tidak perlu lagi memfokuskan diri pada detail bagaimana komputer mengatur titik-titik mana yang harus “dinyalakan” pada monitor sehingga tulisan tersebut tertampilkan dalam bentuk yang dapat kita baca. Kita dapat memusatkan pikiran pada hal yang lebih penting, yaitu isi tulisan tersebut.
Abstraksi tersebut mengakibatkan penerjemahan bahasa tingkat tinggi ke bahasa mesin lebih sukar dilakukan dan memakan waktu lebih lama. Namun, di balik “kekurangan” tersebut, bahasa tingkat tinggi menawarkan berbagai kelebihan. Selain menjadikan proses menulis dan membaca program jauh lebih mudah (yang secara tidak langsung juga mengurangi kemungkinan terjadinya kesalahan pada program), bahasa tingkat tinggi juga memungkinkan kita menulis program yang lebih bersifat portable. Dengan kata lain, kita dapat membuat program yang dapat dijalankan pada berbagai jenis komputer dengan sedikit bahkan tanpa perubahan. (Biasanya, kita hanya perlu membuat penerjemah baru yang akan menerjemahkan bahasa tingkat tinggi tersebut ke bahasa mesin komputer di mana program akan dieksekusi.)
1.2. Interpreter vs Compiler
Secara umum, penerjemahan suatu bahasa ke bahasa lainnya dapat dilakukan dalam 2 cara. Cara pertama adalah dengan melakukan penerjemahan secara parsial, sedikit demi sedikit, misalnya kalimat per kalimat. Sedangkan cara kedua adalah penerjemahan secara total, sekaligus.
Pola yang sama berlaku pula dalam penerjemahan suatu bahasa pemrograman ke bahasa mesin. Penerjemahan dapat dilakukan instruksi-per-instruksi maupun sekaligus untuk keseluruhan program. Program yang melakukan penerjemahan dengan cara yang pertama (instruksi-per-instruksi) dikenal dengan istilah interpreter, sedangkan program yang melakukan penerjemahan dengan cara kedua (sekaligus) umum dikenal dengan istilah compiler. Karena itu, proses penerjemahan cara pertama dapat disebut juga sebagai proses interpretasi dan cara kedua umum dikenal dengan sebutan kompilasi.Info »
Sebagai ilustrasi, andaikan kita bayangkan bahwa program kita adalah sebuah naskah pidato dalam sebuah bahasa asing yang tidak dimengerti oleh calon pendengarnya (dalam hal ini merepresentasikan komputer) dan kita mempunyai dua orang penerjemah: interpreter dan compiler. Sang interpreter akan menyampaikan terjemahannya berselingan dengan pembaca pidato, kalimat-per-kalimat. Di lain pihak, compiler akan menyampaikan terjemahannya setelah keseluruhan naskah pidato selesai dibacakan.
Meski pada kenyataannya hanya terdapat interpreter saja atau compiler saja untuk bahasa-bahasa tertentu, secara teoretis kita dapat membuat interpreter maupun compiler untuk setiap bahasa pemrograman.
Bersambung…

