Różnice

Różnice między wybraną wersją a wersją aktualną.

Odnośnik do tego porównania

Both sides previous revision Poprzednia wersja
Nowa wersja
Poprzednia wersja
pl:miw:piw08_prolog_java [2008/05/12 15:16]
miw
pl:miw:piw08_prolog_java [2008/06/19 18:06]
miw
Linia 1: Linia 1:
-====== Opis ====== 
- 
-Wojciech Leś, Michał Łosiewicz, (IS) keepsake@o2.pl,​ colesiu@student.agh.edu.pl 
- 
-Integracja kodu Prologu z Java  
- 
-porównać z projektami z 2006 roku http://​www.ugosweb.com/​jiprolog/​ http://​portal.acm.org/​citation.cfm?​id=787039 http://​www.sics.se/​sicstus|SICStus]] ​ 
- 
-patrz https://​ai.ia.agh.edu.pl/​wiki/​prolog:​prolog_tools#​java_and_prolog ​ 
- 
-InterProlog http://​www.declarativa.com/​interprolog/,​ description,​ how to use, does it make any sense? ​ 
-- najlepiej działa na XSB Prolog, na SWI wg dokumentacji powinno działać, jednak wszystkie przykłady są na XSB, a konwersja wymaga dość dobrej znajomości Interprologa 
- 
-http://​www.swi-prolog.org/​packages/​jpl/​java_api/​index.html , do sprawdzenia ​ 
- 
- 
- 
-====== Java + Prolog rozwiązania ====== 
- 
-Interprolog - stworzony dla XSB Prolog. Posiada interfejsy dla SWI i YAP. Istnieje zarówno Java, jak i Prolog API. Brakuje niestety niedeterministycznych celów w Javie, da się to zrobić tylko przez sztuczne stworzenie listy wszystkich rozwiązań w Prologu. Dokumentacja zawiera podstawowy opis metod i kilka banalnych przykładów. Bardziej rozbudowane przykłady stworzone są z użyciem XSB. Komunikacja odbywa się na zasadzie TCP/IP sockets. 
- 
-JPL - stworzony dla SWI Prolog. Rozprowadzany z tą dystrybucją. Najnowsza wersja - 3.0. Współpracuje praktycznie tylko z SWI. Dokumentacja istnieje do wersji do 2.0, ale poprzez forum można bezpośrednio skontaktować się z autorami projektu. API istnieje dla Javy jak i dla Prologa. Wysokopoziomowe API jest proste w użyciu. ​ 
- 
-Istnieją także interpretery Prologu (właściwie języka Prologo-podobnego) w Javie, jest to dość duża grupa projektów, ale rozwiązania te są dość ubogie i mniej efektywne. ​ 
- 
- 
-====== Porównanie ====== 
- 
-JPL - Interprolog 
- 
-  * Łatwość programowania - JPL jest zdecydowanie prostszy w obsłudze, nie wymaga inicjalizacji maszyny wnioskującej,​ metody Java są intuicyjne 
-  * Szybkość działania - w fazie testów 
-  * Wygoda - Interprolog nie posiada non-deterministic goal api, stąd wszelkie multiple-solutions trzeba generować w prologu i zwracać jako listę rozwiązań,​ która jest obiektem typu String w Javie i trzeba ją parsować, natomiast JPL generuje kolejne rozwiązania z poziomu Java poprzez kolejne wywołania tych samych 2 funkcji 
-  * Dostęp do konsoli interpretera Prologu - JPL musi mieć zdefiniowaną zmienną środowiskową (SWI_HOME_DIR),​ w której jest adres katalogu domowego SWI, w Interprologu w kodzie programu Java należy wywołać SWISubProcessEngine z parametrem jakim jest śćieżka dostępu do interpretera ​ 
-  * Łączność Prolog-Java - w JPL realizuje się to za pomocą 4 predykatów (tworzenie obiektów Java, wywoływanie funkcji, powiązanie obiektu Java ze zmienną w Prologu, ustalenie wartości zmiennej), w Interprologu działa to na zasadzie komunikacji synchronicznej przez Java Message 
- 
-====== Sudoku - przykład wywołania Prologu z poziomu Java ====== 
- 
-===== Interprolog ===== 
- 
-http://​student.agh.edu.pl/​~keepsake/​miw/​ 
- 
-Wywołanie: java -jar Sudoku.jar [prolog compiler] 
- 
-np. java -jar Sudoku.jar plcon 
- 
-Kompilacja: 
- 
-javac -classpath interprolog.jar Sudoku.java 
- 
-jar cfm Sudoku.jar manifest *.class 
- 
- 
-===== JPL ===== 
- 
-http://​student.agh.edu.pl/​~colesiu/​sudoku.rar ​ 
- 
-należy ustawić zmienną środowiskową SWI_HOME_DIR,​ do zmiennej środowiskowej PATH należy dodać SWI_HOME_DIR/​bin 
- 
-====== Problemy ====== 
- 
- 
  
pl/miw/piw08_prolog_java.txt · ostatnio zmienione: 2019/06/27 15:50 (edycja zewnętrzna)
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0