Kural Motorları Prologda Neden Yazılmıyor? [kapalı]


16

Prolog'da gördüğüm kadarıyla, bir uygulama için bir kural motoru hazırlamak için ideal gibi görünüyor. Yine de, Prolog'da yazılmış bir kural motoru gördüğüme inanmıyorum. Prolog'da (örn. Zayıf çöp toplama algoritması) kural motoru oluşturmak için kullanılmasını engelleyecek bazı doğal sınırlamalar var mı?


7
Merdiven. (neredeyse) hiç kimse prolog bilmiyor ve hatta daha fazla dev, günlük işlerini yapmayan hiçbir şey bilmek istemiyor, böylece eve gidebiliyorlar. Talihsiz, Prolog çok havalı.
Jimmy Hoffa

3
Prolog yine de harika bir edsl yapar.
Prologun

3
@JimmyHoffa Bu azalıyor. Bazı insanlar prolog öğrenir ve daha sonra çalışma hayatlarının geri kalanında proaktif olarak unutmaya çalışırlar.
ZJR

5
3 yakın oy görüyorum - kimse bana sorunun ne olduğunu söylemeyi umursuyor, bu yüzden düzeltebilirim veya geri çekebilir miyim?
Onorio Catenacci

2
Kapatmaya oy verdim, "esasen fikir tabanlı" Beni başka türlü ikna edebilirsen, yakın oyumu geri çekeceğim. Şahsen Prolog'u opak buldum; Bir kural motorunun kuralları tanımlamak için daha sezgisel bir sözdizimine sahip olmasını beklerdim. Ve olan bir programlama dili değil, haddi zatında bir kural motoru için bir sözdizimi prototipi.
Robert Harvey

Yanıtlar:


14

Bebekliklerindeki kural motorları neredeyse sadece Prolog'da yazılmıştır - mantıklı bir dildi. Küçük bir kural seti için harika çalıştılar. Ancak, çok iyi ölçeklenmedikleri ortaya çıktı. Kesin bir referansım yok, ama benim anlayışım, Prolog'un kuralların zincirlenmesini ele alma biçiminin verimsiz olması - taramayı getiren çok büyük yığınlar oluşturmak için yapılan özyinelemeli model.

RETE algoritmasının ve haleflerinin geliştirilmesi, büyük miktarlardaki kuralları işlemek için daha verimli bir yol sağladı ve bu yüzden devralındı.

Belki de modern prolog, erken çalışmaların çoğunun yapıldığı 80'li yıllardan daha verimli olacaktır.




Çılgın bir soru. İnsanlar RETE'yi prologda uygulamadılar, böylece her iki kelimenin de en iyisini elde etmediler mi? (RETE'nin bu prologun yapmadığı çok şey var).
user48956

14

Yanaktaki dil yanıtı: çünkü Kural Motorları'nın yaratıcıları Prolog'u (veya Merkür veya PLANLAYICI veya…) biliyorlarsa, Kural Motorları yazmazlardı, Prolog kullanıyorlardı.


5

Genellikle, bir kural motorunun amacı, başka bir uygulamanın bir parçası olmasıdır. Prolog'da yazılmış uygulamaları görmek oldukça nadirdir ve Prolog'u diğer dillerde yazılmış uygulamalara bağlamak için yaygın olarak kullanılan bir arayüz yoktur.

Diğer uygulamalara eklenmek üzere yazılan kural motorları için kural tabanlı bir araç CLIPS'dir . CLIPS, OPS5'e dayanıyordu ve budama kuralları için Rete algoritmasını kullanıyor .


tamamen doğru değil, harici programlardan Prolog koduna kadar bazı arayüzler var. SWI-Prolog C ++ arayüzü ve R. bağlanmak için bir yol vardır
Rudolf Olah

3
Aslında "hiç kimse" tam uygulamalar için Proolog kullandığından, C veya C ++ ile çalıştığımı gördüğüm tüm prolog motorları, "herkes" özel kütüphaneleri çağırmak için C fonksiyonlarını çağırmanın yollarını kullanır. yani GNU Prolog gprolog.univ-paris1.fr/manual/html_node/gprolog065.html
johannes

Bu işaretçi için teşekkürler @johannes. GNU Prolog'un farkında değildim; C'den çağrılabileceği gerçeği çok daha az
Onorio Catenacci

Ayrıca bakınız: swi-prolog.org
user48956
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.