Logika pemrograman

Templat:Paradigma Pemrograman Logika Pemrograman adalah paradigma pemrograman yang sebagian besar didasari dalam logika formal. Seluruh program yang ditulis pada sebuah logika bahasa pemrograman adalah sekelompok kalimat-kalimat dalam bentuk logis, mengekspresikan fakta-fakta, dan peraturan-peraturan tentang beberapa permasalahan yang didalam bagian tersebut. Bahasa pemrograman logika sebagian besar termasuk Prolog, jawaban sekelompok pemrograman atau _answer set programming_ (ASP) dan Datalog. Dalam seluruh bahasa-bahasa berikut, peraturan-peraturannya ditulis dalam bentuk klausa: dan telah dibaca secara deklaratif sebagai implikasi logis: H disebut kepala atau _head_ dari peraturan dan B1, ..., Bn dipanggil badan atau body. Fakta-fakta adalah peraturan-peraturan yang tak memiliki badan, dan ditulis dalam bentuk simpleks: Dalam kasus yang simpleks dimana H, B1, ..., Bn adalah semuanya formula atomik, klausa-klausa ini dipanggil klausa definit atau Klausa Horn. Namun, ada banyak ekstensi dari kasus simpleks ini, untuk kasus yang paling penting adalah dimaan kondisi-kondisinya dalam tubuh dari sebuah klausa, bisa juga dari negasi dari formula atomik. Bahasa pemrograman logis termasuk dalam ekstensi ini memiliki ilmu pengetahuan yang merepresentasikan kapabilitas dari logika non-monoton. Dalam ASP atau _Answer Set Programming_ atau jawaban sekelompok pemrograman dan Datalog, program logika hanya memiliki satu bacaan dari deklaratif, dan eksekusinya adalah dilakukan dengan melakukan bukti prosedur atau model generator yang perilakunya tidak dimaksudkan untuk dikontrol oleh programmer. Namun, dalam keluarga bahasa Prolog, program logis juga memiliki interpretasi Prosedural sebagai prosedur reduksi tujuan: Pertimbangkan juga klausa berikut sebagai contohnya: Berdasarkan pada sebuah contoh digunakan oleh Terry Winograd untuk mengiilustrasikan bahasa pemrograman Planner. Sebagai sebuah klausa dalam program logis, bisa digunakan sebagai prosedur untuk mengetes apakah X adalah bersalah dengan mengetes apakah X adalah manusia, dan sebagai prosedur untuk menemukan X dimana bersalah ditemukan sebuah X dimana seorang manusia Bahkan fakta-fakta memiliki interpretasi prosedural. Contoh, klausa: bisa digunakan sebagai prosedur untuk menunjukkan bahwa sokrates adalah manusia, dan sebagai prosedur untuk mencari X adalah sebagai human dengan "memberikan" sokrates untuk X. Pembacaan deklaratif untuk program logis bisa digunakan oleh programmer untuk memeriksa kebenarannya. Lebih lagi, berdasarkan logika program transformasi, teknik-tekniknya bisa dilakukan juga untuk mentransformasi program logika menjadi program ekuivalen secara logis yang sama-sama lebih efisien. Dalam keluarga bahasa pemrograman logika Prolog, seorang programmer bisa menggunakan perilaku penyelesaian masalah yang telah diketahui dari mekanisme eksekusi untuk meningkatkan efesiensi dari sebuah program.