Apa perbedaan antara paradigma pemrograman deklaratif dan prosedural ? Bisakah Anda memberikan beberapa contoh?
Paradigma pemrograman apa lagi yang ada?
Jawaban:
Ada beberapa sub-paradigma dari paradigma pemrograman imperatif, seperti paradigma pemrograman prosedural atau berorientasi objek.
Dalam paradigma pemrograman imperatif, Anda menjelaskan algoritme selangkah demi selangkah, pada berbagai derajat abstraksi.
Contoh bahasa pemrograman yang mendukung paradigma prosedural:
Ini biasanya mengacu pada bahasa yang menunjukkan hierarki tipe yang mewarisi metode dan status dari tipe dasar ke tipe turunan, tetapi juga menyertakan JavaScript berbasis prototipe yang tidak biasa.
Contoh bahasa pemrograman yang mendukung paradigma OO:
Ada beberapa sub-paradigma dari paradigma pemrograman deklaratif, seperti paradigma pemrograman fungsional atau logika.
Dalam paradigma pemrograman deklaratif, Anda menggambarkan hasil atau tujuan, dan Anda mendapatkannya melalui " kotak hitam ". Kebalikan dari imperatif.
Contoh bahasa pemrograman yang mendukung paradigma pemrograman deklaratif:
Pemrograman fungsional menekankan penerapan fungsi tanpa efek samping dan tanpa keadaan yang bisa berubah. Sistem deklaratif di atas menunjukkan aspek tertentu dari pemrograman fungsional.
Contoh bahasa pemrograman yang mendukung paradigma fungsional deklaratif:
Pemrograman deklaratif adalah tempat Anda mengatakan apa yang Anda inginkan tanpa harus mengatakan bagaimana melakukannya. Dengan pemrograman prosedural, Anda harus menentukan langkah-langkah yang tepat untuk mendapatkan hasilnya.
Misalnya, SQL lebih deklaratif daripada prosedural, karena kueri tidak menentukan langkah-langkah untuk menghasilkan hasilnya.
Izinkan saya memberi Anda contoh dunia nyata: Saya butuh secangkir teh.
Prosedural:
Deklaratif:
Dalam bahasa prosedural, Anda mendefinisikan keseluruhan proses dan memberikan langkah-langkah bagaimana melakukannya. Anda tinggal memberikan pesanan dan menentukan bagaimana proses tersebut akan dilayani.
Dalam bahasa deklaratif, Anda tinggal mengatur perintah atau urutan, dan membiarkannya di sistem bagaimana menyelesaikan pesanan itu. Anda hanya membutuhkan hasil Anda tanpa menggali bagaimana seharusnya dilakukan.
Pemrograman Prosedural:
Dalam pemrograman prosedural, ketika program dimulai, itu mengikuti serangkaian instruksi. Instruksi dapat berubah berdasarkan beberapa file atau konten memori, tetapi secara keseluruhan, itu tidak terlalu bervariasi. masukan ke program biasanya bukan dari masukan pengguna secara real-time, melainkan dari kumpulan data yang telah dikumpulkan sebelumnya.
Pemrograman Deklaratif:
Dalam pemrograman yang digerakkan oleh Peristiwa Deklaratif, terpusat di sekitar tubuh data dengan tindakan opsional yang dapat dilakukan oleh program. Misalnya, setiap "peristiwa" dalam pengolah kata adalah setiap mouse atau keyboard (atau file) perubahan yang mempengaruhi data, dokumen. Mereka tidak perlu dilakukan dalam urutan apa pun. Pemrograman yang digerakkan oleh peristiwa mengambil bentuk program kecil (penangan peristiwa) yang semuanya bekerja pada kumpulan data yang sama, sehingga setiap program kecil dapat menggunakan data yang sama, dokumen dalam contoh ini.
Perbedaan utama antara dua bahasa pemrograman adalah, Dalam pemrograman prosedural, kami memberi tahu komputer cara menyelesaikan masalah dan dalam pemrograman deklaratif, kami memberi tahu komputer masalah apa yang ingin kami selesaikan.
Untuk mengatasi komentar yang mungkin dan mungkin memberikan contoh di antara perbedaan keduanya. Ansible adalah prosedural dimana sesuatu seperti wayang atau terraform bersifat deklaratif. Misalnya, Anda membuat file yaml yang memungkinkan untuk menerapkan 10 contoh ec2 seperti ini:
-ec2: count: 10 image: ami-058c6e5b73b074cd2 instance_type: t2.micro
Jika Anda menjalankan file itu dua kali, Anda akan mendapatkan 20 instance t2.micro ec2. Jika Anda menulis padanannya dalam bahasa deklaratif seperti terraform dan menjalankannya dua kali, Anda hanya akan memiliki 10 instans t2.micro yang berjalan tidak peduli berapa kali Anda menjalankannya. Bahasa deklaratif menentukan status akhir. Bahasa prosedural hanya melakukan apa yang Anda perintahkan tanpa memperhatikan keadaan saat ini atau masa lalu.
Jadi YAML adalah bahasa pemrograman deklaratif? Karena kita mendefinisikan apa yang kita inginkan daripada menulis logika yang sebenarnya.
Saya menanyakan ini karena jika ada yang tahu Ansible yang merupakan alat manajemen konfigurasi, ia menggunakan YAML tetapi masih termasuk dalam kategori bahasa prosedural.
Dalam pendekatan prosedural Anda menyandikan instruksi Anda untuk mencapai hasil. Dalam pendekatan deklaratif Anda mendefinisikan apa yang perlu dipecahkan sebagai pengetahuan dalam memecahkan masalah. Silahkan lihat contoh pendekatan Prosedural atau Deklaratif yang saya terapkan di kedua pendekatan.
Seperti yang Anda lihat pada contoh, dalam pendekatan deklaratif, Anda tidak perlu menginstruksikan BAGAIMANA cara memecahkan masalah.