Declarative and Imperative Programming

Posted on Updated on

Declarative Programming (What)

Declarative programming adalah sebuah paradigma pemrograman yang mengungkapkan logika dari sebuah komputasi tanpa menggambarkan aliran kontrol.

Declarative Programming sering menganggap teori-teori logika formal, dan perhitungan seperti pemotongan dalam ruang logika. Pemrograman deklaratif telah menjadi kepentingan tertentu baru-baru ini, karena dapat sangat menyederhanakan penulisan program paralel.

Hal ini kontras dengan pemrograman imperatif, yang memerlukan algoritma yang diberikan secara eksplisit.

Declarative Programming lebih mendeskripsikan apa yang program dapat kerjakan, daripada

Bagaimana untuk menyelesaikannya

Contoh:

* Program yang menjelaskan apa yang harus dilakukan perhitungan dan bukan bagaimana untuk menghitung itu

* Setiap bahasa pemrograman yang tidak memiliki efek samping (atau lebih spesifik, adalah referentially transparan)

Common bahasa deklaratif termasuk orang-orang ekspresi reguler, logika pemrograman, dan pemrograman fungsional.

an umbrella term that includes a number of other programming paradigms:

1. Functional programming

Functional programming adalah paradigma programming yang melakukan komputasi sebagai evaluasi dari mathematical functions dan menghindari keadaan (state) dan perubahan (mutable) data. Penekanan aplikasi daari functions, sangat kontras dengan gaya imperative programming, yang menekannkan perubahan keadaan (state)

Functional programming, dan khususnya pemrograman fungsional murni, adalah upaya untuk mengurangi atau menghilangkanefek samping, maka dianggap deklarative.

Functional programming juga digunakan dalam industry domain-specific programming language seperti R (statistics), Matematika (simbolik matematika), J and K (financial analysis), dan XSLT (XML). Widespread declarative domain spesific languages seperti SQL dan Lex/Yacc, menggunakan beberapa element dari functional progrmmaing, khususnya dalam menjauhkan perubahan nilai. Spreadsheets dapat juga ditampilkan sebagai functional programming language.

2. Logic programming

Logic programming, dalam arti luas, adalah penggunaan logika matematis untuk

pemrograman komputer. Logika digunakan sebagai declarative representation language murni, dan teorema-prover atau model-generator digunakan sebagai pemecah masalah. Pemecahan masalah tugas dibagi antara para programmer, yang bertanggung jawab hanya untuk memastikan kebenaran program dinyatakan dalam bentuk logis, dan teorema-prover atau model-generator, yang bertanggung jawab untuk memecahkan masalah secara efisien.

Namun, logic programming, dalam arti sempit adalah menggunakan logic baik sebagai declarative dan procedural representation language. Hal ini didasarkan pada fakta bahwa backwards reasoning theorema-prover diterapkan pada kalimat deklaratif dalam bentuk implikasi:

Contoh

Jika B1 dan … dan Bn kemudian H

memperlakukan implikasi pengurangan tujuan-prosedur:
untuk menampilkan / memecahkan H, menampilkan / memecahkan B1 dan … dan Bn.

Misalnya, memperlakukan implikasi:
Jika Anda menekan tombol sinyal alarm,
maka Anda siaga sopir kereta api dari kemungkinan darurat

sebagai prosedur:
Untuk memperingatkan pengemudi kereta dari kemungkinan darurat,
tekan tombol sinyal alarm.

3. Constraint programming

Dalam Constraint programming hubungan antara variable-variabel dinyatakan dalam bentuk kendala, menentukan properti dari solusi dapat ditemukan. Himpunan knedala ini dipecahkan dengan memberi nilai untuk setiap variabel solusi sehingga konsisten dengan jumlah kendala.

Constraint programming sering digunakan sebagai pelengkap paradigma lain :  functional, logical atau bahkan imperative programming.

4. Domain-specific languages

  • Contoh Bahasa Declarative

–        regular expressions,

–        a subset of SQL,

–        CSS,

–        HTML,

–        MXML,

–        XAML,

–        XSLT,

–        SVG

5. Hybrid languages

Makefiles, sebagai contoh, menetapkan dependensi dalam declarative fashion, tetapi mencakup daftar imperatif untuk mengambil tindakan juga. Demikian pula, yacc menetapkantata bahasa bebas konteks declaratively, tetapi termasuk potongan kode dari sebuah host bahasa, yang biasanya penting (seperti C).

Pemrograman deklaratif program sering menganggap teori-teori logika formal, dan perhitungan seperti pemotongan dalam ruang logika. Pemrograman deklaratif telah menjadi kepentingan tertentu baru-baru ini, karena dapat sangat menyederhanakan penulisan program paralel.

Imperative Programming (How)

Imperative programming adalah paradigma programming yang mendeskripsikan komputasi dalam terminologi pernayataan yang merubah program state (keadaan). Dengan kata lain imperative mood dalam bahasa biasa mengekspresikan perintah untuk melakukan aksi, imperative programs mendefinisikan urutan dari perintah untuk komputer agar bisa dieksekusi.

Terminasi yang digunakan berbeda dengan declarative programming, yang mengekspresikan apa yang ingin dikerjakan, tanpa meresepkan bagaimana untuk melakukannya dari rangkaian aksi yang diterima.

Functional dan logical programming adalah contoh pendekatan declarative.

Contoh Procedural Programming Languages additional imperative programming languages.

–          C++

–          Perl

–          Python

–          PHP

–          Java

–          Ruby

Procedural Programming

Prosedural programming adalah imperative programming dalam program yang dibangun dari satu atau lebih procedure (juga dikenal sebagai subroutines atau functions).

Procedural programming dapat dipertimbangkan sebagai langkah ke arah declarative programming. Programmer sering menyebutkan, sederhana dari melihat nama, arguments dan pengembalian tipe dari procedure (dan related comments), keterangan procedure mengharuskan untuk melakukan tanpa perlu melihat detail dari bagaimana procedure untuk mencapai hasil tersebut. Dalam waktu yang sama, program lengkap masih imperative karena ia mengatur pernyataan untuk dieksekusi dan memerintah eksekusi untuk lebih luas lagi.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s