Paradigma pemrograman
| English | Bahasa Indonesia |
|---|---|
| paradigm/ˈpærədaɪm/ | paradigma |
| low-level/ləʊ ˈlevl/ | tingkat rendah |
| imperative/ɪmˈperətɪv/ | imperatif |
| declarative/dɪˈklærətɪv/ | deklaratif |
| functional/ˈfʌŋkʃənl/ | fungsional |
| pure functions/pjʊə ˈfʌŋkʃnz/ | fungsi murni |
| logic/ˈlɒdʒɪk/ | logika |
Program yang sama, ditulis dengan empat cara
- Meminta semua pelanggan di Inggris dan seorang programmer C menulis perulangan pada sebuah array. Seorang programmer Haskell menulis filter. Seorang programmer Prolog menyatakan aturan dan mengajukan pertanyaan. Pengguna SQL menulis
SELECT * FROM Customer WHERE Country = 'UK'. - Hanya yang pertama yang mengatakan bagaimana melakukannya. Yang lain mengatakan apa yang diinginkan dan membiarkan bagaimana untuk mesin, yang bebas untuk mengurutkan ulang pekerjaan, menggunakan indeks, atau menjalankannya pada delapan inti prosesor.
- Tidak ada yang lebih baik secara umum. Yang berbeda adalah keputusan mana yang diambil bahasa dari Anda, dan itulah tepat apa itu paradigma.
- Pelajaran ini adalah paradigma yang disebutkan dalam silabus: level rendah, imperatif dan deklaratif.
Pemrograman level rendah
- Pemrograman level rendah bekerja dekat dengan perangkat keras, dalam kode mesin atau bahasa assembly, dengan akses langsung ke register, alamat memori, dan instruksi individu.
- Manfaat: kontrol maksimum dan kecepatan, serta kode sekecil mungkin, yang penting ketika hanya ada kilobyte memori.
- Kerugian: bersifat spesifik arsitektur, sehingga harus ditulis ulang untuk prosesor yang berbeda, dan lambat ditulis serta sulit dipelihara.
- Digunakan di mana perangkat keras harus diperintah secara eksak: driver perangkat, firmware, pengontrol tertanam, dan loop terdalam dari sistem waktu nyata.
- Latih pengalamatan langsung, tidak langsung, indeks, dan relatif dalam pelajaran bahasa assembly. Jejak contoh terpecahkan menunjukkan mengapa operand yang sama dapat menghasilkan hasil yang berbeda.
Manakah yang benar mengenai pemrograman tingkat rendah? Pilih semua yang berlaku.
Kontrol dibeli dengan usaha: assembly lambat ditulis dan sulit dipelihara, itulah sebabnya terbatas pada driver dan firmware.
Pemrograman imperatif
- Pemrograman imperatif, juga disebut prosedural, adalah rangkaian perintah yang mengubah status program: penugasan, kondisional, perulangan, dan panggilan ke prosedur.
- Programmer menentukan bagaimana hasil akan dihitung, langkah demi langkah. Variabel yang menyimpan status adalah intinya.
- Ini adalah gaya Python, C, Java, dan pseudocode, dan ini adalah apa yang hampir semua orang pelajari terlebih dahulu.

Satu perintah setelah yang lain, masing-masing mengubah apa yang disimpan
Pemrograman imperatif (prosedural) didasarkan pada:
Kode imperatif memberikan perintah langkah demi langkah (penugasan, perulangan, pemanggilan) yang mengubah status.
Pemrograman deklaratif
- Pemrograman deklaratif menyatakan apa yang akan dihitung, bukan bagaimana. Runtime menghitung langkah-langkahnya.
- Pemrograman fungsional composing fungsi murni, yang tidak memiliki efek samping: input yang sama selalu menghasilkan output yang sama, dan tidak ada sesuatu di luar fungsi yang berubah. Haskell dan Lisp adalah contohnya.
- Pemrograman logika menyatakan fakta dan aturan, dan mesin menjawab kueri melalui inferensi. Prolog adalah contohnya.
- SQL adalah bahasa deklaratif yang hampir semua orang kenali: kueri mengatakan baris mana yang diinginkan, dan database memutuskan bagaimana menemukannya.
Makmal konsep pengaturcaraan
Sambungkan contoh kepada idea pengaturcaraan yang ditunjukkannya.
Pemrograman deklaratif berarti Anda menentukan:
Kode deklaratif (fungsional, logika, SQL) menyatakan tujuan; sistem operasi memutuskan langkah-langkahnya.
Fungsi murni (pemrograman fungsional):
Kemurnian berarti tanpa efek samping dan hasil deterministik, yang membuat kode fungsional mudah dipahami.
Paradigma deklaratif (fungsional, logika, SQL) menyatakan APA yang akan dihitung dan membiarkan sistem operasi memutuskan bagaimana, sementara kode imperatif merinci setiap langkah.
Kueri SQL menyatakan baris mana yang Anda inginkan, bukan cara memindai tabel—kebalikan dari kode imperatif langkah demi langkah.
Fungsi murni selalu menghasilkan output yang sama untuk input yang sama dan tidak memiliki ____.
Itulah yang memungkinkannya diuji secara terpisah, dijalankan secara paralel dengan aman, dan hasilnya disimpan dalam cache.
Contoh worked: identifikasi paradigma
FOR i ← 1 TO n : total ← total + A[i] : NEXT i— imperatif: rangkaian perintah yang mengubah status yang disimpan ditotal.SELECT Name FROM Customer WHERE Country = 'UK'— deklaratif: ia mengatakan baris mana yang diinginkan dan bukan bagaimana mencarinya.LDD 200 : ADD 201 : STO 202— level rendah: instruksi assembly yang menargetkan lokasi memori secara langsung.parent(X, Y) :- father(X, Y).— deklaratif, khususnya pemrograman logika: aturan dari mana mesin menyimpulkan jawaban.- Sebutkan paradigm dan fitur kode yang menunjukkan hal itu.
Cocokkan setiap fragmen dengan paradigmanya.
Perintah yang mengubah status, pernyataan apa yang diinginkan, instruksi yang mengakses memori, dan aturan inferensi.
Membandingkannya
| Paradigma | Mengatakan | Kekuatan | Penggunaan tipikal |
|---|---|---|---|
| level rendah | instruksi eksak | kontrol, kecepatan, ukuran | driver, firmware |
| imperatif | bagaimana, langkah demi langkah | langsung dan familiar | pemrograman umum |
| deklaratif | apa yang diinginkan | ringkas, runtime mengoptimalkan | kueri, aturan, transformasi data |
- Bahasa modern mencampur mereka. Python adalah imperatif tetapi memiliki fitur fungsional; SQL berada di dalam program yang ditulis secara imperatif. Sebuah paradigma adalah gaya, bukan tembok.
Cocokkan setiap paradigma dengan ide intinya.
Imperatif menjelaskan bagaimana langkah demi langkah; OO memodelkan objek; fungsional menggunakan fungsi murni; deklaratif menyatakan tujuan.
Apa perbedaan mendasar antara pemrograman imperatif dan deklaratif?
Karena versi deklaratif tidak menetapkan caranya, sistem operasi mungkin mengurutkan ulang pekerjaan, menggunakan indeks, atau menjalankannya secara paralel.
Contoh dikerjakan: mengapa efek samping penting
- Fungsi murni tidak memiliki efek samping. Jelaskan satu manfaat.
- Karena input yang sama selalu memberikan output yang sama dan tidak ada yang berubah di luar, fungsi murni dapat diuji secara terisolasi: tidak ada setup, tidak ada status tersembunyi yang harus diatur.
- Ia juga dapat dijalankan secara paralel dengan aman, karena dua panggilan tidak dapat saling mengganggu, dan hasilnya dapat dikalku.
- Kontrasnya: rutinitas imperatif yang memperbarui variabel global berperilaku berbeda tergantung pada apa yang telah berjalan sebelumnya, yang merupakan penyebab mengapa bug seperti itu sulit ditemukan.
⟦⟧ Nilai yang sering terlewat
- Imperatif mengatakan bagaimana; deklaratif mengatakan apa. Kontras ini adalah jawaban untuk sebagian besar pertanyaan di sini.
- Kerugian level rendah adalah bahwa ia bersifat spesifik arsitektur dan sulit dipelihara, bukan karena ia "lama".
- Fungsi murni tidak memiliki efek samping dan memberikan output yang sama untuk input yang sama. Kedua bagian diperlukan.
- SQL adalah deklaratif. Ini adalah contoh yang paling sering digunakan dalam ujian, jadi Kenali itu.
Anda telah memahaminya
- paradigma adalah gaya dalam menyusun kode, dan bahasa modern mencampur beberapa
- level rendah: kode mesin atau assembly, akses langsung ke perangkat keras, kontrol dan kecepatan maksimum, tetapi spesifik arsitektur dan sulit dipelihara
- imperatif: rangkaian perintah yang mengubah status, menentukan bagaimana; gaya Python, C, dan pseudocode
- deklaratif: menyatakan apa yang diinginkan dan meninggalkan bagaimana untuk runtime, sebagai pemrograman fungsional dengan fungsi murni, pemrograman logika dengan fakta dan aturan, dan SQL