Logika dan Pemrograman Deklaratif
Logika dan pemrograman deklaratif mengekspresikan masalah sebagai relasi, fakta, dan aturan, menyerahkan pencarian solusi kepada mesin inferensi daripada instruksi langkah demi langkah yang eksplisit.
Definition
Pemrograman logika adalah paradigma deklaratif di mana sebuah program adalah sekumpulan klausa logis (fakta dan aturan), dan komputasi berlangsung melalui deduksi otomatis, biasanya resolusi dengan unifikasi, untuk menjawab kueri terhadap pengetahuan tersebut.
Scope
Topik ini mencakup pemrograman logika berdasarkan klausa Horn dan resolusi (seperti dalam Prolog), pemrograman logika kendala, dan gagasan deklaratif yang lebih luas tentang menentukan apa yang harus berlaku daripada bagaimana menghitungnya. Ini mencakup unifikasi, pencarian mundur (backtracking), semantik model-teoretis dan bukti-teoretis dari program logika, serta pemisahan spesifikasi logis dari kontrol.
Core questions
- Apa artinya menghitung dengan membuktikan tujuan dari klausa logis?
- Bagaimana unifikasi dan pencarian mundur (backtracking) mewujudkan pencarian melalui program relasional?
- Bagaimana pemisahan logika dari kontrol dibuat secara tepat?
- Bagaimana kendala memperluas pemrograman logika murni?
Key theories
- Prinsip resolusi
- Resolusi Robinson memberikan aturan inferensi tunggal yang berorientasi mesin untuk logika orde pertama, menyediakan mesin deduktif yang membuat pemrograman logika layak secara komputasi.
- Logika ditambah kontrol
- Analisis Kowalski membedakan konten logis suatu program (apa yang benar) dari komponen kontrolnya (bagaimana bukti dicari), membingkai pemrograman logika sebagai cara untuk memvariasikan kontrol sambil menjaga logika tetap.
- Semantik deklaratif dan prosedural dari program logika
- Lloyd memformalkan semantik model-teoretis, titik tetap, dan operasional dari program logika definit dan membuktikan korespondensinya, mendasari makna program logika.
Clinical relevance
Teknik deklaratif dan berbasis logika mendasari bahasa kueri basis data, pemecah kendala, representasi pengetahuan, dan mesin aturan. Penekanan mereka pada penentuan masalah daripada algoritma membuat mereka sangat cocok untuk pencarian kombinatorial, konfigurasi, dan tugas penalaran.
History
Prinsip resolusi Robinson tahun 1965 meletakkan dasar deduktif. Pada awal tahun 1970-an Colmerauer dan Roussel menciptakan Prolog, dan Kowalski mengartikulasikan interpretasi prosedural dari klausa Horn. Paradigma ini berkembang pesat sepanjang tahun 1980-an, memengaruhi proyek Generasi Kelima Jepang, dan kemudian berkembang menjadi pemrograman logika kendala dan pemrograman set-jawaban.
Debates
- Kemurnian versus kontrol praktis
- Bahasa pemrograman logika menyeimbangkan ideal logika deklaratif murni dengan kebutuhan praktis akan kontrol eksplisit, seperti cut dan pengurutan, yang meningkatkan efisiensi tetapi mengorbankan pemisahan logika/kontrol yang bersih.
Key figures
- Robert Kowalski
- Alain Colmerauer
- J. Alan Robinson
- John Lloyd
- Philippe Roussel
Related topics
Seminal works
- kowalski1979
- robinson1965
- lloyd1987
- colmerauer1993
Frequently asked questions
- Bagaimana pemrograman logika berbeda dari pemrograman imperatif?
- Alih-alih menentukan urutan operasi, program logika mendeklarasikan fakta dan aturan, dan mesin inferensi mencari bukti yang menjawab kueri, sehingga pemrogram berfokus pada apa yang benar daripada bagaimana menghitungnya.
- Apa itu unifikasi?
- Unifikasi adalah proses menemukan substitusi yang membuat dua istilah logis identik; ini adalah mekanisme inti di mana program logika mencocokkan tujuan dengan kepala klausa.