Kami belajar bahwa sebagian besar bahasa diklasifikasikan sebagai salah satu dari keduanya, "berdasarkan hubungan" atau "tingkat tinggi".
Konsep-konsep itu ortogonal. "Relation-based" berarti bahwa semantik bahasa didasarkan pada konsep relasi, yaitu asosiasi banyak-ke-banyak antara dua set (relasi adalah fondasi matematika di belakang tabel SQL). "Tingkat tinggi" berarti bahasa tersebut mengandung banyak abstraksi yang menyembunyikan banyak detail teknis yang mendasarinya (seperti lokasi memori, register CPU, akses disk, operasi bitwise, dll.). SQL tentu saja berbasis relasi, karena tujuan utamanya adalah untuk menggambarkan data relasional dan operasi di atasnya. SQL juga tingkat yang cukup tinggi; itu tidak menyediakan sarana apa pun untuk mengakses byte pada disk secara langsung, dan tidak memberi tahu Anda perincian tentang bagaimana ia menyimpan datanya (setidaknya SQL standar tidak;
Faktanya, ada lebih banyak sumbu di mana bahasa pemrograman (dan data) dapat diklasifikasikan; yang sangat menarik adalah deklaratif vs imperatif . Bahasa deklaratif menggambarkan apa sesuatu adalah ; bahasa imperatif menggambarkan cara melakukan sesuatu. DDL bagian dari SQL sebagian besar deklaratif, meskipun kata kunci penting yang tampak (" CREATE TABLE
", ' DROP DATABASE
', dll), dan bahkan bagian manipulasi data ( SELECT
, UPDATE
, INSERT
, DELETE
) masih cukup deklaratif. Properti SQL yang sangat menarik adalah bahwa ia tidak lengkap Turing: Anda tidak dapat menulis loop tanpa batas dalam standar ANSI SQL sederhana.
Pemrograman fungsional berpusat pada beberapa ide inti:
- fungsi adalah warga negara kelas satu (yaitu, mereka dapat digunakan sebagai nilai, sebagai input ke fungsi lain, dan sebagai output dari fungsi lain)
- fungsi tingkat tinggi (fungsi yang beroperasi pada fungsi, atau fungsi yang mengembalikan fungsi)
- kemurnian (fungsi murni adalah yang tidak memiliki efek samping; fungsi murni tidak dapat melakukan I / O, tidak dapat membaca atau memodifikasi keadaan global, dan tidak dapat mengambil argumen referensi non-const. Fungsi murni sangat menarik karena mereka akan selalu menghasilkan output yang sama dengan input yang sama)
SQL tentu tidak berputar di sekitar fungsi sebagai alat utama untuk memodelkan hal-hal, tetapi itu agak merangkul ide kemurnian - permintaan yang sama dijalankan pada database yang sama akan menghasilkan hasil yang sama, setiap kali (kecuali untuk pemesanan). Memanggil SQL sebagai bahasa 'fungsional' sedikit sulit meskipun IMO.