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 tanpa kategori [ * ]
 
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"> {{ cite journal|first=Terry|last=Winograd|author-link=Terry Winograd|title=Understanding natural language (Memahami Bahasa Natural)|journal=[[Cognitive Psychology (journal)|Cognitive Psychology]]|volume=3| issue = 1|date=1972|pages=1–191|doi=10.1016/0010-0285(72)90002-3 }}</ref> untuk mengiilustrasikan bahasa pemrograman [[Planner (bahasa pemrograman)|Planner]]. Sebagai sebuah klausa dalam program logis, bisa digunakan sebagai prosedur untuk mengetes apakah <kbd>X</kbd> adalah <kbd>bersalah</kbd> dengan mengetes apakah <kbd>X</kbd> adalah <kbd>manusia</kbd>, dan sebagai prosedur untuk menemukan <kbd>X</kbd> dimana <kbd>bersalah</kbd> ditemukan sebuah <kbd>X</kbd> dimana seorang <kbd>manusia</kbd> Bahkan fakta-fakta memiliki interpretasi prosedural. Contoh, klausa:
 
:<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 |Edinburgh]], dengan [[John Alan Robinson]] (pengunjung akademik dari [[Universitas Syracuse]]), [[Patrick J. Hayes|Pat Hayes]], dan [[Robert Kowalski]]. Pendukung representasi prosedural terutama dipusatkan di [[MIT]], di bawah kepemimpinan [[Marvin Minsky]] dan [[Seymour Papert]]{{citation needed|date=July 2013}}
 
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. <ref name="Winograd" /> Untuk mengatasi sistem memori yang sangat terbatas pada saat itu, Planner menggunakan backtracking struktur kontrol sehingga hanya satu jalur perhitungan yang mungkin harus disimpan pada satu waktu. Planner melahirkan bahasa pemrograman QA-4, Popler, Conniver, QLISP, dan bahasa konkuren Ether.{{citation needed|date=July 2013}}
 
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. <ref>{{cite conference|first=Pat|last=Hayes|title=Computation and Deduction (Komputasi dan Deduksi)|book-title=Proceedings of the 2nd MFCS Symposium (Kelanjutan dari Simposium MFCS ke-2)|publisher=[[Czechoslovak Academy of Sciences]]|date=1973|pages=105–118}}</ref> Sebaliknya, Kowalski mengembangkan [[resolusi SLD]],<ref name = "Kowalski">{{cite document|first=Robert|last=Kowalski|url=http://www.doc.ic.ac.uk/~rak/papers/IFIP%2074.pdf|title=Predicate Logic as a Programming Language (Predikat Logika sebagai Bahasa Pemrograman)|id=Memo 70|publisher=Department of Artificial Intelligence, [[Edinburgh University]]|date=1973}} Juga dalam kelanjutan kongres IFIP, Stockholm, Belanda utara Publishing Co., 1974, pp.&nbsp;569–574.</ref> varian resolusi SL, <ref>{{cite journal|first1=Robert|last1=Kowalski|first2=Donald|last2=Kuehner|url=http://www.doc .ic.ac.uk/~rak/papers/sl.pdf|title=Linear Resolution with Selection Function (Resolusi Linear dengan Fungsi Seleksi)|journal=[[Artificial Intelligence (journal)|Artificial Intelligence]]|volume=2|issue=3–4|date=Winter 1971|pages=227–260|doi=10.1016/0004-3702(71)90012-9}}</ref> dan ditunjukkan bagaimana memperlakukan implikasi sebagai prosedur reduksi tujuan. Kowalski bersama dengan [[Alain Colmerauer|Colmerauer]] di Marseille, yang telah mengembangkan ide ini dalam desain dan implementasi bahasa pemrograman [[Prolog]].
 
[[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| bahasa pemrograman logika konkuren]],<ref>{{cite conference |first=Ehud |last=Shapiro |title=The family of concurrent logic programming languages (Keluarga dari bahasa pemrograman logis konkuren)|conference=International Summer School on Logic, Algebra and Computation |year=1989 |url=https://apps.dtic.mil/sti/pdfs/ADA213958.pdf |archive-url=https://web.archive.org/web/20170223233755/http://www.dtic.mil/dtic/tr/fulltext/u2/a213958.pdf |archive-date=February 23, 2017 |url-status=live}} Juga muncul di {{Cite journal | doi = 10.1145/72551.72555| title = The family of concurrent logic programming languages (Keluarga dari bahasa pemrograman logis konkuren)| journal = ACM Computing Surveys| volume = 21| issue = 3| pages = 413–510| year = 1989| last1 = Shapiro | first1 = E.| s2cid = 2497630| citeseerx = 10.1.1.73.8108| url = https://dl.acm.org/doi/pdf/10.1145/72551.72555}}</ref> [[pemrograman logika konstrain]]
<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. <ref>{{cite journal|last1=Van Emden|first1=M.H.|last2=Kowalski|first2=R.A.|date=October 1976|title=The semantics of predicate logic as a programming language (Semantik dari Predikat Logika Sebagai Bahasa Pemrograman)|journal=[[Journal of the ACM]]|volume=23|issue=4|pages=733–742|doi=10.1145/321978.321991 |s2cid=11048276 }}</ref>
 
=== 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}}