Logika pemrograman: Perbedaan antara revisi
Konten dihapus Konten ditambahkan
←Membuat halaman berisi '{{ short description|Paradigma Pemrograman Berdasarkan Logika Formal }} {{ 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 pemrogram...' Tag: kemungkinan perlu pemeriksaan terjemahan |
k pembersihan kosmetika dasar, added uncategorised tag |
||
Baris 24:
:<kbd>bersalah(X) :- manusia(X).</kbd>
Berdasarkan pada sebuah contoh digunakan oleh [[Terry Winograd]] <ref name ="Winograd">
:<kbd>manusia(sokrates).</kbd>
Baris 35:
Penggunaan logika matematika untuk merepresentasikan dan menjalankan [[program komputer]] juga merupakan fitur dari [[kalkulus lambda]], yang dikembangkan oleh [[Alonzo Church]] pada tahun 1930-an. Namun, proposal pertama untuk menggunakan bentuk logika [[bentuk klausal normal|clausal]] untuk merepresentasikan program komputer dibuat oleh [[Cordell Green]].<ref>{{cite conference|first=Cordell|last=Green| url=https://www.ijcai.org/Proceedings/69/Papers/023.pdf|title=Application of Theorem Proving to Problem Solving (Penerapan Teorema Pembuktian untuk Pemecahan Masalah)|conference=IJCAI 1969}}</ref>. Ini menggunakan aksiomatisasi subset dari [[LISP]], bersama dengan representasi relasi masukan-keluaran, untuk menghitung relasi dengan mensimulasikan eksekusi program di LISP. Di sisi lain, Foster dan Elcock, menggunakan kombinasi persamaan dan kalkulus lambda dalam bahasa pemrograman asersi yang tak membatasi urutan dari operasi yang dilakukan.<ref>{{cite conference|first1= J.M.|last1=Foster|first2=E.W.|last2=Elcock|title=ABSYS 1:An Incremental Compiler for Assertions: an Introduction (Sebuah Penyusun Inkremental untuk Pernyataan: Sebuah Pengantar)|conference=Fourth Annual Machine Intelligence Workshop|series=Machine Intelligence|volume=4|place=Edinburgh, UK|publisher=[[Edinburgh University Press]]|date=1969|pages=423–429}}</ref>
Pemrograman logika sekarang dapat ditelusuri kembali ke perdebatan akhir tahun 1960-an dan awalh 1970-an tentang representasi pengetahuan deklaratif dengan prosedural di [[kecerdasan buatan]].Para pendukung representasi deklaratif terutama bekerja di [[Universitas Stanford|Stanford]], terkait dengan [[John McCarthy (ilmuwan komputer)|John McCarthy]], [[Bertram Raphael]] dan Cordell Green, dan di [[Universitas Edinburgh
Meskipun didasarkan pada metode pembuktian logika, [[Planner (bahasa pemrograman)|Planner]], yang dikembangkan di MIT, adalah bahasa pertama yang muncul dalam paradigma prosedural ini.<ref>{{cite conference|first=Carl|last=Hewitt|author-link=Carl Hewitt|title=Planner: A Language for Proving Theorems in Robots (Bahasa untuk Membuktikan Teorema pada Robot)|url=https://www.ijcai.org/Proceedings/69/Papers/030.pdf|conference=IJCAI 1969}}</ref> Perencana menampilkan pemanggilan rencana prosedural yang diarahkan pola dari tujuan (yaitu reduksi tujuan atau [[rangkaian mundur]] dan dari pernyataan asersi atau [[rangkaian maju]]. mplementasi Planner yang paling berpengaruh adalah bagian dari Planner, yang disebut Micro-Planner, yang diimplementasikan oleh [[Gerald Jay Sussman|Gerry Sussman]], [[Eugene Charniak]] dan [[Terry Winograd]]. Dimaan itu digunakan untuk mengimplementasikan program pemahaman bahasa alami Winograd [[SHRDLU]], yang merupakan mercusuar pada waktu itu.
Hayes dan Kowalski di Edinburgh mencoba mendamaikan pendekatan deklaratif berbasis logika untuk representasi pengetahuan dengan pendekatan prosedural Planner. Hayes (1973) mengembangkan bahasa persamaan, Golux, di mana prosedur yang berbeda dapat diperoleh dengan mengubah perilaku pembukti teorema.
[[Asosiasi untuk Pemrograman Logika]] telah ditemukan untuk mempromosikan Pemrogramin Logika di tahun 1986.
Prolog memberikan kebangkitan kepada bahasa-bahasa pemrograman [[Bahasa Pemrograman Logika Aljabar|ALF]], [[Fril]], [[Gödel (bahasa pemrograman)|Gödel]], [[bahasa pemrograman Mercury|Mercury]], [[Oz (bahasa pemrograman)|Oz]], [[Ciao(bahasa pemrograman)|Ciao]], [[Visual Prolog]], [[XSB]], dan [[λProlog]], serta berbagai [[Pemrograman logika serentak|
<ref>{{cite conference
| title = A Deductive Database with Datalog and SQL Query Language (Sebuah Deduksi Basis Data dengan Datalog dan Bahasa Kueri SQL)
Baris 62:
=== Semantik ===
Maarten van Emden dan [[Robert Kowalski]] mendefinisikan tiga semantik untuk program logika klausa Horn, [[Model theory|model-theoretic]], [[Fixed point (matematics)|fixed-point]], dan [[Semantik bukti teoritis|bukti teoritis]], dan menunjukkan bahwa mereka lebih ekuivalen.
=== Logika dan Kontrol ===
{{Main|Pemrograman Deklaratif}}
Pemrograman logika bisa dilihat sebagai deduksi terkontrol. Sebuah konsep penting dalam pemrograman logika adalah separasi dari program kepada komponen logika dan kontrolnya. Dengan bahasa pemrograman logika yang murni, komponen logika sendirik dapat menentukan solusi yang dihasilkan. Komponen kontrol bisa bervariasi untuk memberikan jalan alternatif dalam mengeksekusi logika program. Notasi ini diambil dengan slogan
:Algoritma = Logika + Kontrol
Baris 81:
=== Negasi sebagai Kegagalan ===
{{Main|Negasi sebagai Kegagalan}}
Untuk sebagian besar aplikasi praktis, serta untuk aplikasi yang membutuhkan penalaran non-monotonik dalam kecerdasan buatan, program logika [[Klausa Horn]] perlu diperluas ke program logika normal dengan kondisi negatif. Sebuah "klausa" dalam program logika normal memiliki bentuk:
:<kbd>H :- A<sub>1</sub>, …, A<sub>n</sub>, tidak B<sub>1</sub>, …, tidak B<sub>n</sub>. </kbd>
Baris 90:
Dimana <kbd>H</kbd> dan semua dari <kbd>A<sub>i</sub></kbd> dan <kbd>B<sub>i</sub></kbd> adalah formula atomik. Negasi pada literal negatif <kbd> not B<sub>i</sub></kbd>
{{Uncategorized|date=Februari 2023}}
|