2014-05-17 14 views
8

Poszukuję pracy naukowej lub innej publikacji porównującej różne abstrakcyjne maszyny (więcej niż jedną) do wykonania Prologu z tłumaczami prologów nieopartymi na maszynach abstact. To, co widziałem do tej pory, to fakt, że większość implementacji wydaje się oprzeć swoje interpretery prologów na Warren Abstract Machine, chociaż zaproponowano inne abstrakcyjne maszyny (np. Vienna Abstract Machine, Tree-Oriented Abstract Machine) i nie ma żadnej ogólnej porównań. Interesuje mnie porównanie wydajności (, a nie), chociaż wszyscy porównywalni tłumacze powinni pozwolić na programowanie z ograniczeniami logicznymi.Porównanie abstrakcyjnych maszyn do wykonywania Prologu

+2

Zobacz http://stackoverflow.com/questions/4478615/alternatives-to-the-wam/4504325 Nie jest jasne, co jeszcze może oznaczać przez porównanie. To, co rozumiemy przez "wykonanie prologu z tłumaczeniem Prologa nie opartym na abstrakcyjnych maszynach" nie jest dla mnie jasne: każda implementacja jest oparta na jakiejś abstrakcyjnej maszynie. – false

+1

@false, mogę napisać interpreter Prolog używając C++, a następnie nie będzie on oparty na żadnej abstrakcyjnej maszynie. I przez porównanie rozumiem na przykład testowanie, jak efektywnie (pod względem czasu obliczeniowego, zużycia pamięci) każdy interpreter działa. –

+1

Nawet wtedy używasz abstrakcyjnej maszyny. Nadal jest wiele decyzji, które należy podjąć. Pomyśl o cofnięciu/zwrocie. – false

Odpowiedz

2

Możesz zbudować programowanie logiczne wiązań na zwykłym prologu , jeśli wprowadzisz pewne prymitywy dla zapisanego sklepu z ograniczeniami i niektóre prymitywy dla haków unifikujących. Np:

SICStus Prolog: przypisanym Zmienne
http://sicstus.sics.se/sicstus/docs/3.7.1/html/sicstus_17.html

Jekejeke Minlog: Mała Solver
http://www.jekejeke.ch/idatab/doclet/prod/en/docs/15_min/10_docu/02_reference/04_examples/05_solver.html
http://www.jekejeke.ch/idatab/doclet/prod/en/docs/15_min/15_stdy/06_bench/10_examples/02_addensure/01_referensure.p.html

oczywiście można wyświetlić dodatkowe prymitywy jak nowe instrukcje w abstrakcyjna maszyna. Ale w obu przypadkach powyżej prymitywy są dodane na poziomie predykatu, tak że nasuwa się pytanie, czy naprawdę istnieje potrzeba abstrakcyjnej maszyny do programowania logicznego wiązań.

Oczywiście można znaleźć kilka sugestii programowania logicznego ograniczających abstrakcyjnych maszyn również za pośrednictwem google.

Bye