Belajar memprogram tidak sama dengan belajar belajar bahasa pemrograman. Belajar memprogram berarti mempelajari metodologi pemecahan masalah, kemudian menuliskan algoritma pemecahan masalah dalam notasi tertentu. Sedangkan belajar bahasa pemrograman berarti belajar memakai suatu bahasa komputer, aturan tata bahasanya, intrusksi-instruksinya, tata cara pengoprasian compiler-nya, dan memanfaatkan instruksi-instruksi tersebut untuk membuat program yang ditulis hanya dalam bahasa itu saja.
Di dalam pemrograman, kita lebih menekankan pada pemecahan masalah, sementara menulis kode program adalah aktivitas terakhir. Mula-mula kita pikirkan rancangan pemecahan masalah tanpa tergantung pada bahasa pemrograman yang digunakan atau komputer yang menjalankan program pemrograman yang digunakan atau komputer yang menjalankan program itu nanti. Rancangan tersebut berisi urutan langkah-langakah pencapaian solusi yang biasanya ditulis dalam notasi-notasi deskriptif (notasi ini kita namakan notasi algoritmik). Karena belajar memprogram yang baik bukanlah belajar membuat program “yang penting hasilnya benar”, tetapi perlu dipikirkan membuat program dengan menggunakan skema yang benar. Hal ini, akan membuat program yang kita buat dapat bersih dari kesalahan yang timbul pada waktu eksekusi.
Bila rancangan pemecahan masalah sudah dibuat dengan skema yang benar, maka rancangan tersebut siap dikodekan ke dalam bahasa pemrograman agar program bisa dieksekusi oleh komputer. Disinilah perlunya kita belajar bahasa pemrograman. Ada banyak bahasa pemrograman yang tersedia saat ini, tetapi desain pemecahan masalah harus dapat diterjemahkan ke dalam bahasa apapun.
Hingga saat ini terdapat puluhan bahasa pemrograman. Kita dapat menyebutkan antara lain bahasa rakitan (assembly), Fortran, Cobol, Ada, PL/I, Algol, Pascal, C, C++, Basic, Prolog, LISP, PRG, bahasa-bahasa simulasi seperti CSMP, Simscript, GPSS, Dinamo, dan masih banyak lagi. Belakangan juga muncul bahasa pemrograman baru seperti Java dan C#. Berdasarkan tujuan aplikasinya, bahasa pemrograman dapat digolongkan menjadi dua kelompok:
- Bahasa pemrograman bertujuan khusus (specific purpose programming language). Yang termasuk kelompok ini adalah Cobol (untuk terapan bisnis dan administrasi), Fortran (Aplikasi komputasi Ilmiah), bahasa assembly (aplikasi pemrograman mesin), prolog (aplikasi kecerdasan buatan, bahasa-bahasa simulasi (Simscript), dan sebagainya.
- Bahasa pemrograman bertujuan umum (general purpose programming language) yang dapat digunakan untuk berbagai aplikasi. Yang termasuk kelompok ini adalah bahasa pascal, Basic, dan C, C++.
Tentu saja pembagian ini tidak benar-benar kaku. Bahasa-bahasa bertujuan khusus tidak berarti tidak bisa digunakan untuk aplikasi lain. Cobol misalnya, dapat juga digunakan untuk terapan ilmiah, tetapi tentu kemampuanya sangat terbatas. Yang jelas, bahasa-bahasa pemrograman yang berbeda dikembangkan untuk bermacam-macam kegunaan yang berbeda pula.
Berdasarkan “kedekatan” bahasa pemrograman apakah lebih condong ke bahasa mesin atau ke bahasa manusia, maka bahasa pemrograman juga dapat dikelompokan atas dua macam:
- Bahasa tingkat rendah. Bahas ini dirancang agar setiap instruksinya langsung dikerjakan oleh komputer, tanpa harus melalui penerjemahan (translator). Contohnya adalah bahasa mesin (machine language). Bahasa mesin adalah sekumpulan kode biner (0 dan 1). Setiap perintah dalam bahasa mesin langsung “dimengerti” oleh mesin dan langsung dikerjakan. Bahasa tingkat rendah bersifat primitif, sangat sederhana, dan relatif sulit dipahami manusia. Bahasa assembly dimasukan kedalam kelompok ini karena “notasi” yang dipakai dalam bahasa ini merupakan bentuk “manusiawi” dari bahasa mesin, dan untuk melaksanakan instruksinya masih diperlukan penerjemahan (oleh assembler) ke dalam bahasa mesin. Bahasa tingkat rendah merupakan bahasa pemrograman generasi pertama yang pernah ditulis orang.
- Bahasa tingkat tinggi. Bahasa jenis ini membuat program menjadi lebih mudah dipahami, lebih manusiawi, dan lebih dekat ke bahasa manusia (bahasa inggris terutama). Kelemahannya, program dalam bahasa tingkat tinggi tidak dapat langsung dilaksanakan oleh komputer. Ia perlu diterjemahkan terlebih dahulu oleh sebuah translator bahasa (yang disebut kompilator atau compiler) ke dalam bahasa mesin sebelum akhirnya dieksekusi oleh CPU.
Tahapan pelaksanaan program oleh komputer
Sebenarnya batasan penggolongan bahasa pemrograman itu tidak selalu jelas. Pengertian tentang apa yang dimaksud dengan bahasa tingkat tinggiseringkali berbeda pada beberapa penulis. Ada penulis yang mendefinisikan bahasa tingkat tinggi dari sudut pandang kemudahan pemakaianya serta orientasinya yang lebih dekat ke bahasa manusia. Les Goldschlager menuliskan spektrum bahasa mulai dari bahasa tingkat tinggi(Pascal, Ada, PL/I, Cobol), bahasa tingkat menengah (Assembly, Basic, Fortran), sampai bahasa tingkat rendah (Bahasa mesin).