Pertanyaan Perbedaan antara Pemrograman Deklaratif dan Prosedural?


Dalam salah satu wawancara saya, mereka menanyakan perbedaannya Pemrograman Deklaratif dan Pemrograman prosedural jenis.

Apa perbedaan antara mereka dengan contoh?

P.S: Bisakah Anda memberi tahu saya selain kedua hal ini dan pemrograman berorientasi obyek, bahasa pemrograman jenis apa yang ada? Karena mereka mungkin bertanya perbedaan antara bahasa pemrograman lain juga. Dan ada pertanyaan serupa seperti ini tapi terlalu tersebar.


75


asal


Jawaban:


Deklaratif

Jelaskan hasil dan dapatkan melalui kotak hitam. Lawan dari imperatif. Contoh:

  • yacc
  • Treetop
  • SQL
  • Ekspresi Reguler
  • lex
  • XSLT
  • markup, troff, CSS, VHDL

Prosedural atau Imperatif

Jelaskan algoritma dan langkah-langkah proses, pada berbagai tingkat abstraksi.

  • C, sebagian besar bahasa legacy
  • PHP, kebanyakan
  • dalam arti tertentu semua bahasa utama

Berorientasi pada objek

  • Cenderung berada dalam kategori prosedural, biasanya mengacu pada bahasa yang menunjukkan hierarki tipe yang mewarisi kedua metode dan status dari jenis basis ke tipe turunan, tetapi juga mencakup JavaScript berbasiskan prototipe yang tidak biasa. Dimensi terpisah dari kategori lain di sini.

Fungsional

Anda meninggalkan yang satu ini. Pemrograman fungsional menekankan penerapan fungsi tanpa efek samping dan tanpa status bisa berubah. Sistem deklaratif di atas menunjukkan aspek-aspek tertentu dari pemrograman fungsional.

  • Skema
  • Erlang
  • OCaml
  • Haskell
  • Lisp, tergantung. (Lisp mungkin layak kategori uniknya sendiri)
  • Clojure, agak
  • Ruby, agak kurang
  • F #
  • Scala

86



Pemrograman deklaratif adalah di mana Anda mengatakan apa yang Anda inginkan tanpa harus mengatakan bagaimana melakukannya. Dengan pemrograman prosedural, Anda harus menentukan langkah-langkah yang tepat untuk mendapatkan hasilnya.

Sebagai contoh, SQL lebih deklaratif daripada prosedural, karena pertanyaan tidak menentukan langkah-langkah untuk menghasilkan hasil.


54



Dengan kata sederhana, saya memiliki contoh dunia nyata di mana saya membutuhkan secangkir teh.

Prosedural: 

  1. Pergi ke dapur
  2. Dapatkan Gula, Susu, dan Teh,
  3. Campur mereka dan panaskan api sampai mendidih
  4. Masukkan itu ke dalam cangkir dan bawa ke saya

Deklaratif:

  1. Dapatkan saya secangkir teh.

Dalam bahasa prosedural, Anda mendefinisikan seluruh proses dan memberikan langkah-langkah bagaimana melakukannya. Anda hanya memberikan pesanan dan menentukan bagaimana proses akan dilayani.

Dalam bahasa deklaratif, Anda cukup mengatur perintah atau perintah, dan membiarkannya pada sistem bagaimana menyelesaikan pesanan itu. Anda hanya perlu hasil Anda tanpa menggali bagaimana itu harus dilakukan.

Salam,


13



Pemrograman prosedural:

Dalam pemrograman prosedural, ketika program dimulai, ia mengikuti serangkaian instruksi. Instruksi dapat berubah berdasarkan pada beberapa file atau konten memori, tetapi secara keseluruhan, itu tidak bervariasi secara luas. input ke program biasanya bukan dari input pengguna secara real-time, melainkan dari kumpulan data yang telah dikumpulkan sebelumnya.

Pemrograman Deklaratif:

Dalam pemrograman berbasis Perkiraan Acara memusatkan di sekitar kumpulan data dengan tindakan opsional yang dapat diambil program. Misalnya, setiap "acara" dalam pengolah kata adalah setiap perubahan mouse atau keyboard (atau file) yang mempengaruhi data, dokumen (s). Mereka tidak perlu dilakukan dalam urutan apa pun. Event driven programming mengambil bentuk program kecil (event handler) yang semuanya bekerja pada satu set data umum, sehingga setiap program kecil dapat menggunakan data yang sama, dokumen dalam contoh ini.


5



Dalam pendekatan prosedural Anda menyandikan instruksi Anda untuk mencapai hasil. Dalam pendekatan deklaratif Anda mendefinisikan apa yang perlu dipecahkan sebagai pengetahuan memecahkan masalah. Silahkan lihat Pendekatan prosedural atau deklaratif contoh saya diimplementasikan dalam kedua pendekatan.

Seperti yang Anda lihat dalam contoh, dalam pendekatan deklaratif, Anda tidak perlu menginstruksikan BAGAIMANA cara memecahkan masalah.


-2