Gaya pemrograman imperatif dipraktikkan dalam pengembangan web dari tahun 2005 hingga 2013.
Dengan pemrograman imperatif, kami menulis kode yang mencantumkan apa yang seharusnya dilakukan aplikasi kami, langkah demi langkah.
Gaya pemrograman fungsional menghasilkan abstraksi melalui cara pintar menggabungkan fungsi.
Ada disebutkan pemrograman deklaratif dalam jawaban dan mengenai hal itu saya akan mengatakan bahwa pemrograman deklaratif mencantumkan beberapa aturan yang harus kita ikuti. Kami kemudian memberikan apa yang kami sebut sebagai beberapa kondisi awal untuk aplikasi kami dan kami membiarkan aturan-aturan semacam itu mendefinisikan bagaimana aplikasi itu berlaku.
Sekarang, deskripsi singkat ini mungkin tidak masuk akal, jadi mari kita melihat perbedaan antara pemrograman imperatif dan deklaratif dengan menelusuri analogi.
Bayangkan kita tidak membangun perangkat lunak, tetapi kita membuat kue untuk mencari nafkah. Mungkin kita adalah tukang roti yang buruk dan tidak tahu cara membuat kue yang lezat seperti yang seharusnya.
Jadi bos kita memberi kita daftar arah, apa yang kita ketahui sebagai resep.
Resepnya akan memberi tahu kami cara membuat pai. Satu resep ditulis dengan gaya imperatif seperti:
- Campurkan 1 cangkir tepung
- Tambahkan 1 butir telur
- Tambahkan 1 cangkir gula
- Tuang adonan ke dalam wajan
- Masukkan wajan ke dalam oven selama 30 menit dan 350 derajat F.
Resep deklaratif akan melakukan hal berikut:
1 cangkir tepung, 1 telur, 1 cangkir gula - keadaan awal
Aturan
- Jika semuanya tercampur, masukkan ke dalam wajan.
- Jika semuanya tidak dicampur, taruh dalam mangkuk.
- Jika semuanya ada di dalam panci, letakkan dalam oven.
Jadi pendekatan imperatif ditandai dengan pendekatan langkah demi langkah. Anda mulai dengan langkah pertama dan lanjutkan ke langkah 2 dan seterusnya.
Anda akhirnya berakhir dengan beberapa produk akhir. Jadi membuat pai ini, kami mengambil bahan-bahan ini mencampurnya, menaruhnya di dalam panci dan di oven dan Anda mendapatkan produk akhir Anda.
Dalam dunia deklaratif, ini berbeda. Dalam resep deklaratif kita akan memisahkan resep kita menjadi dua bagian yang terpisah, mulai dengan satu bagian yang mencantumkan status awal resep, seperti variabel. Jadi variabel kami di sini adalah jumlah bahan dan jenisnya.
Kami mengambil kondisi awal atau bahan awal dan menerapkan beberapa aturan padanya.
Jadi kita mengambil kondisi awal dan melewati mereka melalui aturan ini berulang-ulang sampai kita siap untuk makan pai stroberi rhubarb atau apa pun.
Jadi, dalam pendekatan deklaratif, kita harus tahu cara menyusun aturan ini dengan benar.
Jadi aturan yang kita mungkin ingin memeriksa bahan atau negara kita, jika dicampur, masukkan ke dalam panci.
Dengan keadaan awal kami, itu tidak cocok karena kami belum mencampur bahan kami.
Jadi aturan 2 mengatakan, jika tidak tercampur maka campurlah dalam mangkuk. Oke ya aturan ini berlaku.
Sekarang kami memiliki semangkuk bahan campuran sebagai keadaan kami.
Sekarang kita menerapkan negara baru itu ke aturan kita lagi.
Jadi aturan 1 mengatakan jika bahan dicampur tempatkan mereka dalam panci, oke ya sekarang aturan 1 berlaku, mari kita lakukan.
Sekarang kita memiliki keadaan baru ini di mana bahan dicampur dan dalam wajan. Aturan 1 tidak lagi relevan, aturan 2 tidak berlaku.
Aturan 3 mengatakan jika bahan-bahannya ada di dalam wajan, letakkan di dalam oven, bagus aturan yang berlaku untuk keadaan baru ini, mari kita lakukan.
Dan kita berakhir dengan pai apel panas yang lezat atau apa pun.
Sekarang, jika Anda seperti saya, Anda mungkin berpikir, mengapa kita tidak melakukan pemrograman imperatif. Ini masuk akal.
Ya, untuk aliran sederhana ya, tetapi sebagian besar aplikasi web memiliki aliran lebih kompleks yang tidak dapat ditangkap dengan baik oleh desain pemrograman imperatif.
Dalam pendekatan deklaratif, kita mungkin memiliki beberapa bahan awal atau keadaan awal seperti textInput=“”
, variabel tunggal.
Mungkin input teks dimulai sebagai string kosong.
Kami mengambil status awal ini dan menerapkannya pada seperangkat aturan yang ditentukan dalam aplikasi Anda.
Jika pengguna memasukkan teks, perbarui input teks. Ya, sekarang itu tidak berlaku.
Jika template diberikan, hitung widget.
- Jika input teks diperbarui, render kembali templat tersebut.
Yah, semua ini tidak berlaku sehingga program hanya akan menunggu sebuah peristiwa terjadi.
Jadi pada titik tertentu pengguna memperbarui input teks dan kemudian kita mungkin menerapkan aturan nomor 1.
Kami dapat memperbarui itu ke “abcd”
Jadi kami baru saja memperbarui pembaruan teks dan input teks, aturan nomor 2 tidak berlaku, aturan nomor 3 mengatakan jika input teks diperbarui, yang baru saja terjadi, lalu render ulang templat, lalu kami kembali ke aturan 2 yang mengatakan jika templat diberikan , hitung widgetnya, oke mari kita hitung widgetnya.
Secara umum, sebagai programmer, kami ingin mengusahakan desain pemrograman yang lebih deklaratif.
Imperatif tampak lebih jelas dan jelas, tetapi pendekatan deklaratif berskala sangat baik untuk aplikasi yang lebih besar.