Mengapa (tidak) pemrograman logika?

13

Saya belum pernah mendengar tentang penggunaan bahasa pemrograman logis (seperti Prolog) dalam industri perangkat lunak, saya juga tidak tahu penggunaannya dalam pemrograman hobi atau proyek sumber terbuka. Itu (Prolog) digunakan sebagai bahasa akademik sampai batas tertentu, meskipun (mengapa itu digunakan dalam akademisi?).

Ini membuat saya bertanya-tanya, mengapa Anda harus menggunakan pemrograman logika, dan mengapa tidak? Mengapa tidak mendapatkan penggunaan industri yang terdeteksi?

Anto
sumber

Jawaban:

8

Di luar dunia akademis ... Saya pernah mendengar tentang itu lebih banyak digunakan dalam AI, kadang-kadang dalam game (saya mendengarnya mendorong AI dalam seri Black & White). Saya juga pernah mendengar variasi yang digunakan untuk menjalankan mesin aturan untuk bisnis tertentu dan simulasi ekonomi.

Dugaan saya untuk kurangnya adopsi adalah:

  • Ini aneh - kebanyakan orang tidak terbiasa pemrograman di dalamnya, dan mereka dapat melakukan apa yang mereka butuhkan dalam bahasa lain.
  • Kurangnya dukungan vendor - Jika Microsoft tiba-tiba mulai mendorong Prolog # (dengan bobot penuh. NET library dan toolset dan dukungan formal di belakangnya) sebagai The Next Big Thing - dan kemudian IBM dan Oracle datang dengan sesuatu untuk bersaing, saya bertaruh Anda akan melihatnya mengambil!
  • Kurangnya integrasi - Saya tidak tahu perpustakaan apa yang tersedia untuk Prolog - terakhir saya memeriksa tidak ada banyak perpustakaan grafis atau jaringan, yang berarti bahwa "aplikasi" Prolog harus dibungkus dengan aplikasi lain yang berinteraksi dengan bagian-bagian lainnya. dunia.
FrustratedWithFormsDesigner
sumber
"a Prolog" application "harus dibungkus dengan aplikasi lain yang berinteraksi dengan seluruh dunia." Itu sebenarnya fitur bagi kami. Kita bisa lebih mudah mengisolasi bit prolog karena antarmuka untuk itu sangat sederhana.
S.Lott
@ S.Lott: Oke, saya bisa melihat itu mungkin juga positif, meskipun ketika saya masih di sekolah dan ingin benar - benar membuat aplikasi dengan Prolog, saya menemukan pipa ledeng dan kabel di antara potongan-potongan itu menjadi tantangan dan hambatan utama.
FrustratedWithFormsDesigner
5

Kami menggunakannya untuk membuat parser. Itu lebih mudah untuk dikerjakan daripada lex / yacc.

Mengapa tidak mendapatkan penggunaan industri yang terdeteksi?

Ini tidak bisa dijawab. Apa artinya "terdeteksi"? Siapa yang perlu mendapatkan memo deteksi?

http://www.meridiansystems.com/landing/ppc/prolog/getvideo.asp

Tanyakan Meridian Software tentang penawaran prolog mereka jika Anda menginginkan fakta.

Namun, ada beberapa hambatan untuk masuk yang saya alami.

Pertama, prolog bisa lambat. Ketika ada banyak aturan kandidat dan tidak ada operasi pemotongan sederhana untuk membatasi ruang pencarian, perlu beberapa saat untuk menyelesaikan sesuatu.

Kedua, prolog tidak prosedural atau fungsional, sehingga banyak programmer menolak menggunakannya. (Menariknya, beberapa programmer menolak menggunakan SQL juga. Untuk itu, beberapa programmer enggan menggunakan SQL dan melakukan hal-hal aneh seperti menghindari bergabung dengan operasi, atau mengklaim bahwa COUNT(*)secara ajaib tidak efisien.)

Ketiga, prolog membutuhkan pemikiran yang cukup jelas tentang berbagai kasus. Pemrograman prosedural dapat menjadi ceroboh dan masih berfungsi dengan baik. Pernyataan yang tidak dapat dieksekusi dapat diterima.

Berikut ini dapat diterima di sebagian besar lingkaran.

b = a + 1
if a > b: # always False

Pemikiran keruh semacam ini membuat Anda kesulitan dalam prolog.

S.Lott
sumber
2

Salah satu masalah adalah bahwa Prolog tidak benar-benar pemrograman dalam logika predikat tingkat pertama, yang secara komputasi tidak bisa diterapkan (saya tidak ingat sampai sejauh mana, tapi itu tidak dalam NP, dan jika Anda menambahkan aritmatika ke dalamnya, itu secara formal tidak dapat diputuskan). Karena itu, ini penyederhanaan.

Dalam logika, proposisi dapat dibuktikan benar, terbukti salah, atau tidak terbukti baik. Prolog hanya terbukti dan tidak terbukti, "tidak terbukti" biasanya berarti palsu. Selain itu, urutan klausa Prolog dapat mempengaruhi eksekusi, yang tidak berlaku untuk klausa logis. Dalam kursus yang saya gunakan, saya mulai berpikir tentang Prolog sebagai bahasa pencocokan pola lebih dari bahasa logis.

Oleh karena itu, pemrograman Prolog tidak banyak bergantung pada kebenaran logis seperti bahasa Prolog itu sendiri. Ini adalah bahasa yang berguna dalam beberapa hal, tapi itu tidak mendekati mainstream, dan belum memiliki alat dan manfaat komunitas dari bahasa seperti C ++.

David Thornley
sumber