Ada banyak jenis bahasa pemrograman. Kebanyakan bahasa pemrograman tidak mengikuti satu tipe saja, sehingga sulit untuk menetapkan tipe untuk setiap bahasa. Contoh-contoh dari setiap tipe diberikan di setiap bagian di bawah ini karena mereka adalah contoh terbaik yang terkenal dari tipe tersebut.
Tingkat tinggi vs. tingkat rendah
| ![[icon]](https://www.alegsaonline.com/image/20px-Wiki_letter_w_cropped.svg.png) | Bagian ini memerlukan lebih banyak informasi. (Agustus 2018) |
Bahasa pemrograman tingkat tinggi membutuhkan lebih sedikit pengetahuan tentang perangkat keras dibandingkan dengan bahasa pemrograman tingkat rendah. Bahasa pemrograman tingkat tinggi memerlukan interpreter untuk mengonversi kode sumber ke dalam bahasa pemrograman tingkat rendah.
Pemrograman Deklaratif vs Imperatif
Bahasa pemrograman deklaratif mendeskripsikan sebuah "masalah" tetapi mereka biasanya tidak mengatakan bagaimana masalah tersebut harus dipecahkan. Deskripsi masalah menggunakan logika, dan "memecahkan" masalah sering terlihat seperti membuktikan sistem aksioma logis secara otomatis. Contoh untuk bahasa pemrograman seperti itu adalah Prolog, XSLT, LISP dan SQL.
Bahasa pemrograman imperatif menggambarkan sistem perubahan keadaan. Pada awalnya, program berada dalam keadaan tertentu, dan komputer diberikan langkah-langkah untuk diikuti, untuk melakukan suatu tindakan. Mengikuti langkah-langkah tersebut menyebabkan program "mengubah state".
Secara umum, bahasa pemrograman deklaratif lebih aman dan lebih pendek. Bahasa pemrograman imperatif lebih umum, karena lebih mudah digunakan.
Fungsional vs Prosedural
Pemrograman fungsional melihat pemrograman seperti fungsi dalam matematika. Program menerima input, bersama dengan beberapa informasi, dan menggunakan informasi ini untuk membuat output. Program tidak akan memiliki state di antaranya, dan juga tidak akan mengubah hal-hal yang tidak terkait dengan komputasi.
Program prosedural menspesifikasikan atau mendeskripsikan serangkaian langkah atau perubahan keadaan.
Berbasis tumpukan
Bahasa berbasis tumpukan melihat beberapa memori program seperti tumpukan kartu. Ada sangat sedikit hal yang dapat dilakukan dengan tumpukan. Sebuah item data dapat diletakkan di bagian atas stack. Operasi ini umumnya disebut "push". Item data dapat dihapus dari atas stack. Ini disebut "pop". Anda dapat melihat item di bagian atas stack tanpa menghapusnya. Ini disebut "peek".
Jika sebuah program ditulis sebagai "push 5; push 3; add; pop;" maka akan meletakkan 5 di atas stack, meletakkan 3 di atas 5, menambahkan dua nilai teratas (3 + 5 = 8), mengganti 3 dan 5 dengan 8, dan mencetak bagian atas (8). Contoh untuk bahasa pemrograman yang berbasis tumpukan adalah bahasa Postscript dan Forth.
Berorientasi objek
Bahasa pemrograman berorientasi objek menempatkan data dan fungsi-fungsi yang mengubah data ke dalam satu unit. Unit ini disebut "objek". Objek dapat berinteraksi satu sama lain dan mengubah data objek lain. Ini biasanya disebut enkapsulasi atau penyembunyian informasi. Kebanyakan bahasa pemrograman modern berorientasi objek, atau setidaknya memungkinkan gaya pemrograman ini. Contohnya adalah Java, Python, Ruby, C++, C# dan bahasa C lainnya.
Berorientasi pada aliran
Pemrograman berorientasi aliran melihat pemrograman sebagai penghubung komponen-komponen yang berbeda. Komponen-komponen ini mengirim pesan bolak-balik. Satu komponen tunggal bisa menjadi bagian dari "program" yang berbeda, tanpa perlu diubah secara internal.