Paradigma Bahasa
Paradigma pemrograman adalah gaya fundamental yang mengatur bagaimana komputasi diekspresikan, mulai dari mutasi keadaan imperatif hingga model fungsional, logis, dan deklaratif.
Definition
Paradigma pemrograman adalah seperangkat konsep dan prinsip penataan yang koheren untuk mengatur komputasi dalam suatu bahasa, mendefinisikan apa unit dasar suatu program (pernyataan, ekspresi, objek, relasi) dan bagaimana mereka tersusun.
Scope
Area ini mencakup paradigma utama bahasa pemrograman dan model komputasi yang mendasarinya: pemrograman imperatif dan berorientasi objek yang dibangun di atas keadaan yang dapat berubah (mutable state) dan pengiriman pesan (message passing); pemrograman fungsional yang dibangun di atas evaluasi ekspresi dan fungsi tingkat tinggi (higher-order functions); pemrograman logika dan batasan (constraint programming) yang dibangun di atas relasi dan pencarian; serta metaprogramming, di mana program memanipulasi program. Ini membahas bagaimana paradigma membentuk desain bahasa, pertukaran (trade-off) yang terkandung di dalamnya, dan bagaimana bahasa multi-paradigma modern menggabungkannya.
Sub-topics
Core questions
- Apa yang membedakan satu paradigma dari yang lain, dan apakah perbedaan ini tajam atau hanya masalah penekanan?
- Bagaimana paradigma memengaruhi kebenaran program, modularitas, dan penalaran?
- Dapatkah gaya imperatif dan deklaratif disatukan, dan apa yang diperoleh atau hilang dengan mencampurkannya?
- Bagaimana model komputasi yang mendasari (mesin von Neumann, kalkulus lambda, resolusi) memengaruhi suatu paradigma?
Key theories
- Pemrograman fungsional sebagai aljabar program
- Backus berpendapat bahwa pemrograman fungsional berbasis kombinator membebaskan bahasa dari hambatan von Neumann dengan memberikan program aljabar hukum ekuasional untuk penalaran dan transformasi.
- Algoritma = Logika + Kontrol
- Pemisahan Kowalski antara spesifikasi logis suatu masalah dari strategi kontrol yang digunakan untuk menyelesaikannya mendasari paradigma deklaratif/logika dan menjelaskan apa yang membedakannya dari kode prosedural.
- Kerangka bahasa kernel multi-paradigma
- Van Roy dan Haridi menyajikan paradigma sebagai ekstensi inkremental dari bahasa kernel kecil, menunjukkan bagaimana konsep seperti keadaan (state), konkurensi, dan kemalasan (laziness) dapat ditambahkan atau dihapus untuk mendapatkan kembali setiap paradigma.
Clinical relevance
Pilihan paradigma memiliki konsekuensi praktis untuk rekayasa perangkat lunak: gaya fungsional dan deklaratif membantu penalaran ekuasional, kemampuan uji (testability), dan paralelisasi, sementara dekomposisi berorientasi objek mendukung modularitas skala besar. Bahasa modern semakin memadukan paradigma, sehingga memahami pertukaran mereka menginformasikan pemilihan bahasa dan desain idiomatik.
History
Pemrograman imperatif berasal dari arsitektur von Neumann program tersimpan dan bahasa-bahasa awal seperti Fortran dan Algol. Lisp (1958) memperkenalkan ide-ide fungsional yang berakar pada kalkulus lambda. Tahun 1970-an menyaksikan pemrograman logika (Prolog) dan kebangkitan pemrograman terstruktur dan kemudian berorientasi objek (Simula, Smalltalk). Kuliah Penghargaan Turing Backus tahun 1977 mengkristalkan kritik fungsional terhadap gaya imperatif, dan dekade-dekade berikutnya menghasilkan bahasa yang semakin multi-paradigma.
Debates
- Imperatif versus deklaratif sebagai prinsip pengorganisasian utama
- Debat yang telah berlangsung lama menimbang keterusterangan dan kontrol kinerja kode imperatif terhadap keuntungan penalaran dan kemampuan komposisi dari gaya deklaratif dan fungsional; sebagian besar bahasa modern menyelesaikannya dengan mendukung keduanya.
Key figures
- John Backus
- Robert Kowalski
- Peter Van Roy
- Harold Abelson
- Gerald Jay Sussman
Related topics
Seminal works
- backus1978
- kowalski1979
- vanroy2004
- abelson1996
Frequently asked questions
- Apakah pemrograman berorientasi objek merupakan paradigma yang terpisah dari pemrograman imperatif?
- Pemrograman berorientasi objek biasanya diperlakukan sebagai disiplin penataan yang berlapis pada paradigma imperatif: ia mengatur keadaan yang dapat berubah ke dalam objek dengan perilaku yang dienkapsulasi, tetapi masih bergantung pada perubahan keadaan dan pengurutan.
- Apakah paradigma saling eksklusif?
- Tidak. Banyak bahasa yang banyak digunakan adalah multi-paradigma, menggabungkan fitur fungsional, berorientasi objek, dan imperatif sehingga pemrogram dapat memilih gaya yang paling sesuai untuk setiap tugas.