Mengapa Mesin Aturan Tidak Ditulis Dalam Prolog? [Tutup]

16

Dari apa yang saya lihat tentang Prolog, sepertinya itu akan ideal untuk membuat mesin aturan untuk suatu aplikasi. Namun, saya tidak percaya saya pernah melihat mesin aturan yang ditulis dalam Prolog. Apakah ada batasan bawaan dalam Prolog (mis. Algoritma pengumpulan sampah yang buruk) yang akan mencegahnya digunakan untuk membangun mesin aturan?

Onorio Catenacci
sumber
7
Tangga. (hampir) tidak ada yang tahu prolog, dan bahkan lebih banyak devs tidak ingin tahu apa pun yang tidak menyelesaikan pekerjaan sehari-hari mereka sehingga mereka bisa pulang. Sayangnya, Prolog cukup keren.
Jimmy Hoffa
3
Prolog menghasilkan edsl yang bagus. Memasukkan prolog dalam bahasa seperti Haskell atau Skema adalah pendekatan yang biasanya saya ambil
Daniel Gratzer
3
@JimmyHoffa Itu berkurang. Beberapa orang mempelajari prolog dan kemudian mencoba melupakannya secara proaktif selama sisa kehidupan kerja mereka.
ZJR
5
Saya melihat 3 suara dekat - siapa pun yang mau memberi tahu saya apa yang salah dengan pertanyaan tersebut sehingga saya dapat memperbaikinya atau menariknya?
Onorio Catenacci
2
Saya memilih untuk menutup sebagai "terutama berdasarkan pendapat." Jika Anda bisa meyakinkan saya sebaliknya, saya akan menarik kembali suara dekat saya. Saya pribadi menemukan Prolog buram; Saya berharap mesin aturan memiliki sintaks yang lebih intuitif untuk mendefinisikan aturan. Dan itu adalah bahasa pemrograman, bukan prototipe sintaksis untuk mesin aturan per se.
Robert Harvey

Jawaban:

14

Mesin aturan pada masa bayi ditulis hampir secara eksklusif di Prolog - itu adalah bahasa yang logis. Untuk seperangkat aturan kecil, mereka bekerja dengan baik. Namun, ternyata skala mereka tidak terlalu baik. Saya tidak memiliki referensi yang pasti, tetapi pemahaman saya adalah bahwa cara Prolog menangani rantai aturan tidak efisien - model rekursif yang dibuat untuk membuat tumpukan sangat besar yang membawanya ke perayapan.

Pengembangan algoritma RETE dan penerusnya memungkinkan cara yang lebih efisien untuk memproses sejumlah besar aturan, dan mengambil alih.

Mungkin prolog modern akan lebih efisien daripada di tahun 80-an, ketika sebagian besar pekerjaan awal dilakukan.

Matthew Flynn
sumber
Lihat juga: stackoverflow.com/questions/3364191/…
Matthew Flynn
1
Artikel lain yang membahas hal ini: haleyai.com/wordpress/2013/06/22/…
Matthew Flynn
Pertanyaan gila Bukankah orang-orang mengimplementasikan RETE dalam prolog, sehingga mendapatkan yang terbaik dari kedua kata? (Ada banyak hal yang RETE tidak lakukan seperti prolog).
user48956
14

Lidah-dalam-pipi menjawab: karena jika pembuat Mesin Peraturan tahu tentang Prolog (atau Merkuri atau PERENCANAAN atau ...) mereka tidak akan menulis Mesin Aturan, mereka akan menggunakan Prolog.

Jörg W Mittag
sumber
5

Secara umum, inti dari mesin aturan adalah bahwa ia merupakan bagian dari aplikasi lain. Agak jarang melihat aplikasi yang ditulis dalam Prolog, dan tidak ada antarmuka yang tersedia untuk menghubungkan Prolog ke aplikasi yang ditulis dalam bahasa lain.

Salah satu alat berbasis aturan untuk mesin aturan, yang ditulis untuk ditambahkan ke aplikasi lain, adalah CLIPS . CLIPS didasarkan pada OPS5 dan menggunakan algoritma Rete untuk aturan pemangkasan.

Tangurena
sumber
tidak sepenuhnya benar, ada beberapa antarmuka dari program eksternal ke kode Prolog. SWI-Prolog memiliki antarmuka C ++ dan cara untuk terhubung ke R.
Rudolf Olah
3
Sebenarnya semua mesin prolog yang saya lihat berfungsi dengan C atau C ++ sebagai "tidak ada" yang menggunakan Proolog untuk aplikasi yang lengkap, tetapi "semua orang" memiliki cara untuk memanggil fungsi C untuk memanggil lib khusus. yaitu GNU Prolog gprolog.univ-paris1.fr/manual/html_node/gprolog065.html
johannes
Terima kasih untuk pointer @johannes. Saya sama sekali tidak mengetahui GNU Prolog; apalagi fakta bahwa itu dapat dipanggil dari C.
Onorio Catenacci
Lihat juga: swi-prolog.org
user48956