Program komputer adalah serangkaian instruksi yang mengarahkan
komputer untuk melakukan tugas tertentu. Seorang programmer, kadang- kadang dinamakan developer, membuat atau memodifikasi program komputer. Untuk menulis sebuah program kita menggunakan sebuah bahasa pemrograman. Bahasa pemrograman adalah kumpulan dari kata- kata yang sudah didefinisikan sebelumnya (predefined words) yang dikombinasikan dengan menggunakan suatu aturan yang sudah didefinisikan sebelumnya (predefined rules) yang biasanya disebut dengan sintaks.
B. Sejarah dan Generasi Bahasa Pemrograman
Bahasa permograman dapat dikelompokkan ke dalam dua
kelompok yaitu bahasa tingkat rendah (low-level language) dan bahasa tingkat tinggi (high-level language). Bahasa tingkat rendah bersifat machine-dependent dimana bahasa pemrograman ini hanya berjalan pada satu tipe komputer saja. Contoh bahasa dalam kelompok ini adalah bahasa mesin dan bahasa assembly. Bahasa tingkat tinggi umumnya bersifat machineindependent, dimana bahasa ini dapat berjalan pada tipe-tipe komputer yang berbeda.
Sejak dulu hingga kini, bahasa pemrograman telah berevolusi dari
bahasa yang lebih mendekati bahasa mesin ke bahasa yang lebih mendekati bahasa manusia. Pada awal kemunculan komputer sekitar tahun 1940an, bahasa pemrograman yang ada adalah bahasa mesin (machine language). Masing-masing jenis komputer pada masa itu memiliki bahasa mesinnya sendiri. Bahasa mesin terdiri dari kombinasi serangkaian bit 0 dan 1 seperti contoh pada Gambar 1. Gambar 1. Program dalam Bahasa Mesin
Bahasa biner merupakan bahasa mesin yang di mengerti oleh
komputer, bahasa biner berbasis angka dua (2). Untuk memahami bahasa biner ini maka terlebih dahulu kita harus mengetahui perpangkatan bilangan dua (2) yang sudah tidak asing lagi. Jika kita ingin menerjemahkan bahasa kita ke dalam bahasa mesin, maka kita harus mengonversikannya menjadi bilangan-bilangan biner.
Misalnya Kita akan mengonversikan angka 254 yang merupakan
bilangan berbasis sepuluh (10) kedalam bilangan berbasis biner. Untuk menyelesaikan contoh tersebut maka terlebih dahulu kita harus mengenal perpangkatan bilangan dua. Setelah kita memahami bilangan berbasis dua maka tahap selanjutnya adalah penyelesaian dengan mengurangkan bilangan berbasis dua (2) secara beruntun. Angka 254 yang berbasis sepuluh (10) diubah kedalam bilangan biner yang berbasis dua (2) dengan langkah mengurangkan bilangan berbasis dua (2) secara beruntun. Jika ada bernilai satu (1) dan jika tidak ada bernilai Nol (0), sehingga bilangan Binernya adalah 11111110.
Pada tahun 1950an, Grace hopper, seorang matematikawan
membangun konsep dari sebuah bahasa pemrograman dengan menggunakan simbol untuk mewakili instruksiinstruksi pada bahasa mesin. Bahasa pemrograman ini dikenal dengan bahasa simbolik (symbolic language). Contoh bahasa simbolik dapat dilihat pada Gambar 2. Pada Gambar 2 dapat dilihat perintah-perintah dasar pada pemrograman dengan bahasa simbolik. Pola instruksi ini biasanya merupakan serialisasi dari sejumlah bilangan biner yang digabungkan hingga membentuk opcode untuk melakukan pemindahan (MOV), lompatan (JMP), operasi aritmatika, penyimpanan (PUSH), ataupun pengambilan nilai (POP), dan lain-lain. Sebuah program yang disebut assembler digunakan untuk menerjemahkan simbol ke dalam instruksi yang sebenarnya dalam bahasa mesin. Karena itulah symbolic language disebut juga assembly language.
Gambar 2. Program dalam bahasa simbolik
Perkembangan bahasa pemrograman selanjutnya mulai tahun
1960an yaitu dengan munculnya bahasa tingkat tinggi (high level language). Bahasa tingkat tinggi dirancang sehingga programmer tidak lagi harus memikirkan pengkodean sebuah instruksi mesin ke dalam simbol-simbol. Beberapa contoh bahasa pemrograman tingkat tinggi adalah BASIC, COBOL, Pascal, Ada, C, C++, dan Java. Struktur dari bahasa tingkat tinggi umumnya telah mengikuti struktur bahasa manusia (Gambar 3). Struktur pemrograman pada Gambar 3 menggambarkan program perkalian dua buah bilangan integer yang dideklarasikan dalam variable number1 dan number2 dan variable hasil dideklarasikan sebagai bilangan integer dengan nama variable result.
Bahasa tingkat tinggi memiliki sebuah kesamaan dengan bahasa
simbolik, yaitu harus dikonversi ke dalam bahasa mesin. Hal ini karena satu-satunya bahasa yang dimengerti komputer adalah bahasa mesin. Jadi baik bahasa simbolik maupun bahasa tingkat tinggi keduanya tetap harus melalui proses penerjemahan ke dalam bahasa mesin. Proses ini dikenal dengan proses kompilasi (compilation). Compiler adalah program yang mengkonversi seluruh source program ke dalam bahasa mesin sebelum program tersebut dieksekusi. Gambar 3. Program dalam bahasa C++
Adapun proses dari penulisan program sampai menghasilkan
sebuah executable (machine language) file adalah sebagai berikut:
1. menulis dan mengedit program
2. melakukan kompilasi terhadap program
3. melakukan link program dengan modul dan library yang dibutuhkan
Tempat yang digunakan untuk menulis dan mengedit program
disebut text editor. Program setelah ditulis dan disimpan dalam tempat penyimpanan disebut sebagai source file. Pada tahap kedua source file kemudian dikompilasi ke dalam bahasa mesin menjadi sebuah file yang disebut object file. Object file kemudian mengalami proses ketiga yang disebut dengan linking process. Linker akan menghubungkan semua fungsi yang terdapat dalam program dengan modul dan library yang diperlukan untuk menghasilkan executable file.
Sebuah compiler menerjemahkan seluruh isi program sebelum
mengeksekusinya. Sedangkan interpreter menerjemahkan dan mengeksekusi satu pernyataan (statement) setiap waktu. Sebuah interpreter membaca sebuah pernyataan dan mengkonversinya ke satu atau lebih instruksi bahasa mesin dan kemudian mengeksekusi instruksi bahasa mesin tersebut. Hal ini dilakukan sebelum interpreter bergerak ke pernyataan berikutnya dalam program. Salah satu keuntungan interpreter adalah ketika dia menemukan error pada saat mengkonverksi satu baris kode program, pesan error akan segera ditampilkan pada layar dan program berhenti dieksekusi. Berbeda dengan compiler, interpreter tidak menghasilkan object program.
C. Kategori dan Contoh Bahasa Pemrograman Tingkat Tinggi
Bahasa pemrograman tingkat tinggi dikategorikan berdasarkan pendekatan
yang digunakan untuk menyelesaikan suatu masalah dan kateori dari masalah yang dapat diselesaikan. Terdapat 5 kategori bahasa pemrograman tingkat tinggi seperti terlihat pada Gambar 4.
Gambar 4. Kategori Bahasa Pemrograman
1. Bahasa prosedural mengeksekusi setiap baris perintah satu persatu dari
awal sampai akhir sesuai dengan urutan prosedur yang terdapat didalamnya. Contoh bahasa pemrograman prosedural adalah FORTRAN, COBOL, Pascal, dan C. Bahasa procedural dinamakan juga bahasa generasi ketiga (third-generation languange (3GL)). Dengan menggunakan bahasa pemrograman ini, progammer menggunakan kata-kata seperti bahasa Inggris untuk menulis instruksi. Sebagai contoh, PRINT untuk mencetak, ADD kependekan dari addition (penambahan).
2. Bahasa berorientasi obyek memiliki pandangan yang berbeda untuk
menyelesaikan masalah. Bahasa berorientasi obyek memecah masalah menjadi obyek-obyek yang saling berkaitan. Contoh bahasa pemrograman berorientasi obyek adalah C++, Java dan C#. 3. Bahasa fungsional, sebuah program dianggap sebagai sebuah fungsi matematika. Contoh bahasa pemrograman fungsional adalah LISP dan Scheme.
4. Bahasa deklaratif menggunakan prinsip logika matematika untuk
menjawab masalah yang ada. Program terdiri dari beberapa statement pendahuluan yang memuat fakta, untuk kemudian diakhiri dengan beberapa kesimpulan. Contoh bahasa pemrograman deklaratif adalah Prolog.