Różnice

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

Odnośnik do tego porównania

pl:miw:miw08_prolog_java [2008/05/26 02:15]
miw
pl:miw:miw08_prolog_java [2017/07/17 10:08]
Linia 1: Linia 1:
-====== Opis ====== 
-Piotr, Strzelczyk, <​pit.strzelec@gmail.com>​ 
- 
-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? ​ 
- 
-====== Spotkania ====== 
- 
-===== 08.03.04 ===== 
-  * zbieranie materiałów 
- 
- 
-===== 080318 ===== 
-  * selekcja (co odpada i //​dlaczego//​ -> np. brak dostępu do narzędzi) 
-  * klasyfikacja:​ podobieństwa i różnice -> klasy 
- 
- 
- 
- 
-===== 080401 ===== 
-  * próba zrobienia car, ew przerobienia istn. przykładów dla 2 środowisk? 
-  * dokładny opis uruchom kodu pod win i linux! prolog+jdk 
-  * pliki z kodem do pobrania z wiki ->​namespace 
- 
- 
-===== 080415 ===== 
-  * j.w. interprolog 
- 
- 
-===== 080429 ===== 
-  * jpl -> minihowto(helloworld) 
-  * tuprolog 
-  * porównujemy:​ funkcjonalnośc (czy taka sama/​inna?​),​ sposób implementacji funkcjonalności 
-  * synchronizacja?​ buforowanie?​ 
- 
-===== 080527 ===== 
-  * skończyć z interprolog 
-  * nagłówki na stronach z przykładami 
-  * różnice: dla programisty (jak tego uzyć), w architekturze (linkowanie,​instalacja,​uruchamianie) (jak to działa) 
- 
-====== Projekt ====== 
-[[pl:​prolog:​prolog_lab:​prolog_lab_2#​cwiczenieprosty_system_ekspertowy|Car ES]] 
- 
- 
-====== Sprawozdanie ====== 
- 
- 
-==== 1. Wybranie najciekawszych linków oraz porównanie bibliotek. ==== 
- 
-=== 1.1. Opis linków oraz ostateczna decyzja o ich użyteczności. === 
- 
-**Opis wniosków (legenda):​** 
-  * OK! - link jest użyteczny i przydatny 
-  * OK (-> nazwa_biblioteki)! - link zawierający ciekawe dodatkowe informacje, albo bardziej szczegółowy opis biblioteki o nazwie podanej w nawiasie 
-  * OK! NEUTRAL! - link jest użyteczny i przydatny, ale mogą wystąpić kłopty ze względu na małą ilość informacji (związanych z daną biblioteką) 
-  * NEUTRAL! - link do biblioteki, której opis jest bardzo ubogi i nie rokuje sukcesem jej użycie 
-  * OUT! - link nie użyteczny, następuje rezygnacja z niego 
-  * INFO! - link do strony zestawiającej informacje związane z tematyką (np. zestawienie wszystkich bibliotek integrujących Javę i Prolog) 
- 
----- 
- 
-**JIProlog** 
- 
-Link: 
-http://​www.ugosweb.com/​jiprolog/​index.aspx 
- 
-Opis: 
-8min - poddanie się z próbą uruchomienia apletu 
- 
-Bardzo szybko znalezione API (odrazu link) 
- 
-Wygląda obiecująco,​ bo jest to program napisany w języku Java oraz pozwala integrować w bardzo łatwy sposób Prolog'​u z Javą. Predykaty Prologu mogą być uruchamiane z poziomu javy (opis na stronie) 
- 
-Forum dość ubogie, mało odnośnie samego kodowanie. Główne tematy związane bardziej z middletami i wykorzystaniem jiprolog na komórki. Forum dwujęzyczne (włoski, angielski), więc nie które tematy są w innym języku (włoskim) niż angielski (przeglądnięcie tylko samych tematów). 
- 
-Manual jest w download-ach,​ więc znalezienie jego zajmuje trochę czasu (nie widać linku na głównej stronie). 
- 
-Dokumentacja 73 strony (przeglądnięta na szybko przelotem) wnioski: 
-  * bardzo bogaty opis z przykładami,​ jeżeli chodzi o integrację java -> prolog 
-  * mało napisane o samej integracji prolog -> java 
-  * integracja prolog -> java, wygląda obiecująco (najprawdopodobniej można uruchamiać cały program wprost z poziomu Javy) 
-  * pierwsze wrażenie dość pozytywne (subiektywne wrażenie autora) 
-  * wrażenie z przeglądniecia forum zaczyna się potwierdzać,​ sporo stron dokumentacji poświęcone platformie J2ME 
-  * znalezienie kodu przykładowego zajęło około 10min 
-  * przykład kodu prolog -> java bardzo ubogi (może wynika to z dużej możliwości tej biblioteki, ograniczając konieczność nadmiernego kodowania) 
- 
- 
-Wniosek: OK! 
- 
- 
----- 
- 
-Link: 
-http://​portal.acm.org/​citation.cfm?​id=787039 
- 
-Opis: 
-Program do analizy programów napisany po części w Javie po części w Prologu. Wygląda na to, że raczej strona mało użyteczna, jeżeli chodzi o integrację Prolog -> Java. 
- 
-Wniosek: OUT! 
- 
- 
----- 
- 
-**SICStus 4** 
-Link: 
-http://​www.sics.se/​isl/​sicstuswww/​site/​index.html 
- 
-Opis: 
-Wygląda na to, że umożliwia integrację Prologu z serwerami Javy oraz Javę z serwerem Prologu! 
- 
-Dokumentacja 1246 stron (przeglądana na szybko przelotem) wnioski: 
-  * integracja przez PrologBeans 
-  * kod Javy wywołuje zapytanie do Prologu (wniosek z przykładu) 
-  * ogółem wrażenie, że użyteczne jest to w celu tworzenia aplikacji webowych opartych o Javę 
-  * wydaje się, że skonfigurowanie środowiska może być cięższe (najprawdopodobniej potrzebny serwer aplikacyjny np Tomcat) 
- 
-Wniosek: OK, NEUTRAL! 
- 
- 
----- 
- 
-**Declarativa InterProlog** 
-Link: 
-http://​www.declarativa.com/​interprolog/​ 
- 
-Opis: 
-Strona bardzo prosta, przejrzysta i szybko można znaleść tego czego się potrzebuje. 
- 
-Dokumentacja w pliku .doc (przeglądana na szybko przelotem) wnioski: 
-  * bardzo krótka 
-  * zwięzła i wygląda na bardzo konkretną 
-  * szybko można znaleść tego co się szuka 
- 
- 
- 
-Opis mechanizmu działania (bardzo ogólne wnioski, po przeglądnięciu dokumentacji przelotem: 
-Najprawdopodobniej uruchamiany jest '​silnik'​ prologu, następnie nasłuchiwacz (listener) Prologu. Same zapytania wysyłane są string-iem, zgodnie z konwencją prologu. 
- 
-Wniosek: OK! 
- 
- 
----- 
- 
-**JPL swi-prolog** 
- 
-Link: 
-http://​www.swi-prolog.org/​packages/​jpl/​java_api/​index.html 
- 
-Opis: 
-Działa tylko z użyciem SWI-Prolog 
- 
-Strona prosta i łatwa w przeglądzie i znajdywaniu informacji 
- 
-Dokumentacja w formie HTML (przeglądana na szybko przelotem) wnioski: 
-  * prosta 
-  * szybko można znaleść przykład 
-  * wygląda na to, że Java wywołuje zapytania do Prologu (przypomina to działanie biblioteki JIProlog) 
- 
- 
-Wniosek: OK! 
- 
- 
----- 
- 
-Link: 
-http://​www.jaist.ac.jp/​~fuji/​work/​docs/​html4/​jpro_p2.html 
- 
-Opis: 
-Strona z bardzo dobrym przykładem użycia JPL. 
- 
-Wniosek: OK ( -> JPL)! 
- 
- 
----- 
- 
-**PrologCafe** 
- 
-Link: 
-http://​kaminari.istc.kobe-u.ac.jp/​PrologCafe/​ 
- 
-Opis: Na stronie pisze, że bazuje na jProlog, ale link przekierowuje na stronę JLog 
- 
-Wniosek: OUT! 
- 
- 
----- 
- 
-**jProlog** 
- 
-Link: 
-http://​www.cs.kuleuven.ac.be/​~bmd/​PrologInJava/​ 
- 
-Opis: 
-Wyglada na to, że są to własne napisane klasy, umożliwające korzystanie z Prologu pod Javą. Brak jakichkolwiek dokumentacji,​ sam kod umieszczony na stronie. Tworzenie termów itd jest możliwe przez odpowiednie funkcje. 
- 
-Wniosek: NEUTRAL! 
- 
- 
----- 
- 
-Link: 
-http://​ktiml.mff.cuni.cz/​~bartak/​prolog/​implementations.html#​prolog_in 
- 
-Opis: 
-Strona zestawiające projekty łączące Prolog z Javą 
- 
-Wniosek: INFO! 
- 
- 
----- 
- 
-Link: 
-http://​www.robert-tolksdorf.de/​vmlanguages.html 
- 
-Opis: 
-Strona zestawiająca integrację innych języków programowania z JVM. Znajduje się tutaj również Prolog. 
- 
-Wniosek: INFO! 
- 
- 
----- 
- 
-**JLog** 
- 
-Link: 
-http://​jlogic.sourceforge.net/​ 
- 
-Opis: 
-Wygląda na to, że jest to tylko interpreter Prologu napisany w Javie. 
- 
-Wniosek: OUT! 
- 
- 
----- 
- 
-Link: 
-http://​portal.acm.org/​citation.cfm?​id=1103379.1103383&​coll=GUIDE&​dl=GUIDE 
- 
-Opis: 
-Zawiera informacje o tuProlog lecz dość ogólnikowe i ubogie! 
- 
-Wniosek: OUT! 
- 
- 
----- 
- 
-Link: 
-http://​www.kprolog.com/​jipl/​index_e.html 
- 
-Opis: 
-Niestety z nieznajomych względów link nie działa. Podjęto prubę wejścia na stronę www.kprolog.com co się zakończyło sukcesem, lecz niestety oprócz tekstu "​Prolog compiler"​ reszta tekstu na stronie jest w jakiś chinśkich, albo Japońskich ślaczkach :p. Próba znalezienia jakiegoś linku, który zmieniłby język zakończyła się powodzeniem. Strona angielska jest bardzo uboga, ale za to nie zawiera krzaczków! Jest to najprawdopodobniej tylko kompilator Prologu! 
- 
-Wniosek: OUT! 
- 
- 
----- 
- 
-**TuProlog** 
- 
-Link: 
-http://​alice.unibo.it/​xwiki/​bin/​view/​Tuprolog/​ 
- 
-Opis: 
-Ciężko znaleść dobre materjały. Dokumentacja dość przeciętna (po szybkim przeglądnięciu). Wygląda na to, że prolog jest uruchamiany bezpośrednio z Javy, lub przez pisanie kodu dość podobnego do SWI Prolog, ale nie widać coś w stylu wykonania zapytania! Może jest to wykonywane w czasie rzeczywistym (równolegle z wykonaniem kodu Javy)! 
- 
- 
-Wniosek: OK! NEUTRAL! 
- 
- 
----- 
- 
-**MINERWA** 
- 
-Link: 
-http://​www.ifcomputer.co.jp/​MINERVA/​ 
- 
-Opis: 
-Produkt komercyjny, dobrze udokumentowany oraz bardzo łatwo znaleść przykłady urzycia. Ponieważ jest to produkt płatny, nie będzie nas bardziej interesował. Można oczywiście na próbę ściągnąć MINERWĘ nie ponosząc kosztów, ale jedynie na potrzeby własne, w celu przetestowania produktu. 
- 
-Wniosek: OUT! 
- 
- 
----- 
- 
-Link: 
-http://​homepages.fh-regensburg.de/​~mpool/​mpool07/​proceedings/​8.pdf 
- 
-Opis: 
-Pdf opisujący integrację Prologu z Java 1.5. Dokument opiera się o tuProlog i zawiera przykłady kodu, co powinno ułatwić ewentualne zagłębianie się w tuProlog. 
- 
-Wniosek: OK ( -> tuProlog)! 
- 
- 
----- 
- 
-Link: 
-http://​www.prolog.info/​compilers.html 
- 
-Opis: 
-Strona opisująca kompilatory Prologu (nie które z nich mogą zawierać biblioteki integrujące Prolog z Javą). 
- 
-Wniosek: OUT! 
- 
- 
----- 
- 
-Link: 
-http://​kaminari.istc.kobe-u.ac.jp/​logic/​jprolog.html 
- 
-Opis: 
-Strona zestawia biblioteki integrujące Prolog z Javą! 
- 
-Wniosek: INFO! 
- 
- 
----- 
- 
- 
- 
- 
-=== 1.2. Porównanie wybranych bibliotek. === 
- 
-|              ^ Zasada działania ​    ^ Wspierane OS         ^ Działa na następujących maszynach Prologu ​        ^ Wersja Javy         ^ 
-^ JIProlog ​    | Umożliwia wywołanie predykatów z Prologu bez wymagania znajomości JNI, albo tworzenie własnych predykatów z poziomu Javy          | Windows, Linux, Mac OS X          | Większość popularnych (wspiera specyfikację Edimburgh'​ską oraz większość specyfikacji ISO          | od 1.1          | 
-^ InterProlog ​ | Umożliwia wywołanie dowolnej komendy Prologu przez objekt PrologEngine|Windows,​ Linux, Mac OS X                      | XSB Prolog, SWI Prolog, YAP Prolog ​         | od 1.4 | 
-^ JPL          | Zbiór klas Javy i funkcji w C dostarczających interfejs pomiędzy Prologiem, a Javą, używa JNI (Java Nativ Interface) | Windows (tylko wersja JPL 2.0.2), Linux (tylko wersja JPL 1.0.1) ​        | SWI Prolog | brak informacji | 
-^ TuProlog ​    | Wymaga tylko obecności JVM oraz zainicjalizowania jednego pliku .jar, który zawiera najważniejsze mechanizmy maszyny Prologu | brak dokładnych informacji, prawdopodobnie Windows, ale skoro to wymaga tylko załadowania .jar to najprawdopodobniej pójdzie na wszystkich OS wspieranych przez Javę | Brak wymagań! | brak informacji | 
- 
- 
- 
- 
- 
- 
- 
- 
- 
- 
- 
- 
- 
- 
- 
- 
- 
- 
- 
- 
- 
- 
- 
-==== 2. Instalacja wybranych bibliotek ==== 
-=== 2.1. Instalacja InterPrologu === 
-== 2.1.1. Instalacja pod system operacyjny Windows == 
- 
-  - Instalacja Java JDK (wersja 1.5). 
-    * Uruchom stronę: http://​java.sun.com/​javase/​downloads/​index_jdk5.jsp i wybierz przycisk download przy JDK 5.0 Update 15 
-    * Wybierz opcję "​accept"​ 
-    * Klikni na "​Windows Offline Installation,​ Multi-language"​ 
-    * Pojawi się okienko pytające, czy ma zapisać plik, klikamy przycisk zapisz i wybieramy miejsce na dysku, gdzie chcemy aby został zapisany plik 
-    * Następnie uruchom zapisany plik na dysku i postępuj zgodnie z instrukcją instalacji (wystarczy zaakceptować licencję i klikać "​dalej"​).W trakcie instalacji należy zwrócić uwagę na miejsce na dysku, gdzie zostanie zainstalowane oprogramowanie! 
-    * Kliknii Start -> Uruchom. 
-    * wpisz w puste pole cmd i kliknii "​ok"​. 
-    * następnie należy wejść do katalogu gdzie zostało zainstalowane jdk i dostać się do podkatalogu "​bin"​. 
-    * należy zapamiętać tą ścieżkę (1) 
-    * uruchomić polecenie javac, jeżeli nie pojawi się tekst w stylu "​polecenie javac jest źle napisane, albo nie mogło zostać odnaleźione"​ oznacza to, że instalacja jdk zakończyła się sukcesem 
-  - Ustawienie zmiennej środowiskowej (Java). 
-    * kliknii prawym przyciskiem myszy na ikonę "Mój Komputer"​ 
-    * wybierz opcję "​Właściwości"​ 
-    * wejdź w zakładkę "​Rozszeżone"​ 
-    * kliknii przycisk "​Zmienne środowiskowe"​ 
-    * kliknii w przycisk "​Nowe"​ w dolnej części okna 
-    * jako nazwę zmiennej wpisz "​JAVA_BIN"​ 
-    * jako wartość zmiennej wpisz ścieżkę (1) 
-    * kliknii ok 
-    * klknii ok 
-    * kliknii ok 
-  - Instalacja SWI-Prolog. 
-    * Uruchom stronę: http://​www.swi-prolog.org/​dl-stable.html 
-    * wybierz oprogramowanie dla Windows zgodne z wersją systemu na której pracujesz 
-    * zapisz plik instalacyjny na dysku 
-    * uruchom go 
-    * postępuj zgodnie z instrukcją instalacji (należy zapamiętać ścieżkę, gdzie zainstalowano SWI-Prolog (2))  
-  - Ustawienie zmiennej środowiskowej (Prolog). 
-    * kliknii prawymp przyciskiem myszy na ikonę "Mój Komputer"​ 
-    * wybierz opcję "​Właściwości"​ 
-    * wejdź w zakładkę "​Rozszeżone"​ 
-    * kliknii przycisk "​Zmienne środowiskowe"​ 
-    * kliknii w przycisk "​Nowe"​ w dolnej części okna 
-    * jako nazwę zmiennej wpisz "​SWI_BIN_DIRECTORY"​ 
-    * jako wartość zmiennej wpisz ścieżkę (2) oraz dopisz "​\bin"​ (3) 
-    * kliknii ok 
-    * klknii ok 
-    * kliknii ok  
-  - Instalacja InterPrologu. 
-    * Wejdź na stronę: http://​www.declarativa.com/​interprolog/​INSTALL.htm i wybierz w sekcji 3 link nazwany "​here",​ albo odrazu kliknii w link: http://​www.declarativa.com/​interprolog/​interprolog212.zip 
-    * rozpakuj plik .zip 
-    * wejdź do rozpakowanego katalogu, następnie wejdź do katalogu WindowsScripts 
-    * kliknii prawym przyciskiem na pliku windowsVariables.bat i wybierz opcję "​Edytuj"​ 
-    * w miejsce zmiennych JAVA_BIN oraz SWI_BIN_DIRECTORY należy wpisać własne ścieżki dostępu (patrz ścieżka (1) i (3)) 
-    * zapisz zmiany w pliku 
-    * uruchom w tym samym katalogu plik runSWISPlistener.bat,​ jeżeli pojawi się konsola będąca interpreterem Prologu to instalacja zakończyła się sukcesem 
- 
-=== 2.2. Instalacja JIProlog === 
-== 2.2.1. Instalacja pod system operacyjny Windows == 
- 
-  - Instalacja Java JDK (wersja 1.5). 
-    * Uruchom stronę: http://​java.sun.com/​javase/​downloads/​index_jdk5.jsp i wybierz przycisk download przy JDK 5.0 Update 15 
-    * Wybierz opcję "​accept"​ 
-    * Klikni na "​Windows Offline Installation,​ Multi-language"​ 
-    * Pojawi się okienko pytające, czy ma zapisać plik, klikamy przycisk zapisz i wybieramy miejsce na dysku, gdzie chcemy aby został zapisany plik 
-    * Następnie uruchom zapisany plik na dysku i postępuj zgodnie z instrukcją instalacji (wystarczy zaakceptować licencję i klikać "​dalej"​).W trakcie instalacji należy zwrócić uwagę na miejsce na dysku, gdzie zostanie zainstalowane oprogramowanie! 
-    * Kliknii Start -> Uruchom. 
-    * wpisz w puste pole cmd i kliknii "​ok"​. 
-    * następnie należy wejść do katalogu gdzie zostało zainstalowane jdk i dostać się do podkatalogu "​bin"​. 
-    * należy zapamiętać tą ścieżkę (1) 
-    * uruchomić polecenie javac, jeżeli nie pojawi się tekst w stylu "​polecenie javac jest źle napisane, albo nie mogło zostać odnaleźione"​ oznacza to, że instalacja jdk zakończyła się sukcesem 
-  - Ustawienie zmiennej środowiskowej (Java). 
-    * kliknii prawym przyciskiem myszy na ikonę "Mój Komputer"​ 
-    * wybierz opcję "​Właściwości"​ 
-    * wejdź w zakładkę "​Rozszeżone"​ 
-    * kliknii przycisk "​Zmienne środowiskowe"​ 
-    * kliknii w przycisk "​Nowe"​ w dolnej części okna 
-    * jako nazwę zmiennej wpisz "​JAVA_BIN"​ 
-    * jako wartość zmiennej wpisz ścieżkę (1) 
-    * kliknii ok 
-    * klknii ok 
-    * kliknii ok 
-  - Instalacja SWI-Prolog. 
-    * Uruchom stronę: http://​www.swi-prolog.org/​dl-stable.html 
-    * wybierz oprogramowanie dla Windows zgodne z wersją systemu na której pracujesz 
-    * zapisz plik instalacyjny na dysku 
-    * uruchom go 
-    * postępuj zgodnie z instrukcją instalacji (należy zapamiętać ścieżkę, gdzie zainstalowano SWI-Prolog (2))  
-  - Ustawienie zmiennej środowiskowej (Prolog). 
-    * kliknii prawymp przyciskiem myszy na ikonę "Mój Komputer"​ 
-    * wybierz opcję "​Właściwości"​ 
-    * wejdź w zakładkę "​Rozszeżone"​ 
-    * kliknii przycisk "​Zmienne środowiskowe"​ 
-    * kliknii w przycisk "​Nowe"​ w dolnej części okna 
-    * jako nazwę zmiennej wpisz "​SWI_BIN_DIRECTORY"​ 
-    * jako wartość zmiennej wpisz ścieżkę (2) oraz dopisz "​\bin"​ (3) 
-    * kliknii ok 
-    * klknii ok 
-    * kliknii ok  
-  - Instalacja JIPrologu. 
-    * Uruchom stronę: http://​www.ugosweb.com/​jiprolog/​download.aspx 
-    * popierz plik z sekcji JIProlog SDK nazwany JIPrologSDK.zip 
-    * rozpakuj plik 
- 
-=== 2.3. Instalacja JPL === 
-== 2.3.1. Instalacja pod system operacyjny Windows == 
- 
-  - Należy zainstalować JDK (patrz rodział 2.1.1 podpunkt 1). 
-  - Należy ustawić zmienne środowiskowe dla JDK (patrz rodział 2.1.1 podpunkt 2). 
-  - Należy zainstalować SWI Prolog (patrz rozdział 2.1.1 podpunkt 3). 
-  - Należy ustawić zmienne środowiskowe dla umożliwienia pracy bibliotece JPL (która jest dostarczana jako pakiet SWI Prologu): 
-    * kliknii prawym przyciskiem myszy na ikonę "Mój Komputer"​ 
-    * wybierz opcję "​Właściwości"​ 
-    * wejdź w zakładkę "​Rozszeżone"​ 
-    * kliknii przycisk "​Zmienne środowiskowe"​ 
-    * wybierz z listy zmienną środowiskową PATH 
-    * kliknii na przycisk Edytuj 
-    * na końcu pola "​Wartość zmiennej"​ wpisz ;​SWI_HOME\bin,​ gdzie SWI_HOME to katalog domowy SWI Prologu (czyli np. C:\Program Files\pl) 
-    * kliknii ok 
-    * klknii ok 
-    * kliknii ok  
- 
-=== 2.4. Instalacja TuProlog === 
-== 2.4.1. Instalacja pod system operacyjny Windows == 
- 
-  - Wejdź na stronę [[http://​alice.unibo.it/​xwiki/​bin/​view/​Tuprolog/​Download]]. 
-  - Wybierz wersję 2.1. 
-  - Zapisz plik na dysku. 
-  - Wypakuj plik w dowolnym katalogu. 
- 
- 
- 
- 
- 
- 
- 
- 
- 
- 
- 
-==== 3. Zaimplementowanie systemu eksperckiego przy pomocy wybranych bibliotek ==== 
- 
-W bibliotekach wymienionych w rozdziale 2 podjęto próbę zaimplementowania systemu eksperckiego [[pl:​prolog:​prolog_lab:​prolog_lab_2#​cwiczenieprosty_system_ekspertowy|Car ES]] . 
- 
-=== 3.1. InterProlog === 
- 
-Implementacja kodu została umieszczona [[pl:​miw:​miw08_prolog_java:​InterProlog|tutaj]]. 
- 
-=== 3.2. JIProlog === 
- 
-Implementacja kodu została umieszczona [[pl:​miw:​miw08_prolog_java:​JIProlog|tutaj]]. 
- 
-=== 3.3 JPL === 
- 
-Implementacja kodu została zamieszczona [[pl:​miw:​miw08_prolog_java:​jpl|tutaj]]. 
- 
-=== 3.4 TuProlog === 
- 
-Implementacja kodu została zamieszczona [[pl:​miw:​miw08_prolog_java:​tuProlog|tutaj]]. 
- 
- 
- 
- 
- 
- 
- 
-==== 4. Porównanie wybranych bibliotek integrujących Prolog z Javą ==== 
- 
-=== 4.1. Porównanie funkcjonalności === 
- 
-== 4.1.1. JPL == 
-Nie wymaga uruchomienia silnika prologu, gdyż JPL jest zintegrowany z SWI Prologiem. Aby wykonać zapytanie do Prologu wystarczy stworzyć obiekt **Query** i przekazać mu np. w konstruktorze zapytanie prologowe. Funkcjonalność jest bardzo zbliżona do tradycyjnego programowania w Prologu. Wystarczy stworzyć plik prologowy .pl i następnie przez obiekt Query wykonać zapytanie typu **consult('​nasz_plik.pl'​).** . W ten sposób łatwo stworzyć bazę wiedzy w Prologu. Kolejnym zapytaniem przy pomocy obiektu Query można spróbować uruchomić (jak to jest w naszym przypadku) system ekspercki, albo wykonać zapytanie prologowe w celu uzyskania wiedzy. 
- 
-Obiekt Query jest zlinkowany z aktualnym zapytaniem do silnika prologu. 
- 
-Sama biblioteka jest zestawem klas napisanych w języku C/C++ i Java. 
- 
-== 4.1.2. TuProlog == 
- 
-Jest to biblioteka napisana czysto w języku Java. Można ją porównać do symulatora prologu. W celu "​wirtualnego uruchomienia prologu"​ (jest to uruchumienie silnika tuProlog) tworzy się obiekt **Prolog**. 
- 
-== 4.1.3. InterProlog == 
-Aby móc najpierw korzystać z prologu trzeba zadeklarować obiekt prezentujący silnik obiektu oraz go zainicjalizować odpowiednim konstruktorem w zależności od używanego rodzaju prologu. Zapytanie prologowe można wykonać na różne sposoby. Najprostszym sposobem jest wywołanie metody deterministicGoal("​x"​),​ gdzie jako '​x'​ podajemy polecenie prologowe. Nie można używać kropki przy podawaniu poleceń. Przez deterministicGoal() można również wywołać załadować program i uruchomić go. Aby jednak móc komunikować się z prologiem (czyli móc odpowiadać na pytania np. systemu eksperckiego) konieczne jest stworzenie obiektu, uruchomiającego okienko Javowe, będące konsolą prologu. 
- 
-== 4.1.4. JIProlog == 
-Ponieważ, JIProlog okazuje się być shareware, dlatego ograniczono się z komentowaniem i opisywaniem tej biblioteki. 
- 
-=== 4.2. Porównanie wszystkich bibliotek. === 
-JIProlog niestety w trakcie implementacji okazał się być częściowo shareware. Była to nie miła niespodzianka,​ gdyż nagle w trakcie implementacji przy wywołaniu jednej metody wyskoczyło okienko informujące,​ że ta biblioteka posiada pewne funkcje nie będące freeware. Z wymienionych tu względów biblioteka ta została najgorzej oceniona i odpadła z dalszej części jej analizowania. 
-TuProlog jest dość ciekawym pomysłem, ale ze względu na fakt, że nie jest to w pełni rozwinięty symulator prologu, brakuje mu pewnych możliwości. Okazuje się, że zaimplementowanie systemu eksperckiego przerasta tą bibliotekę. Może jest to możliwe, ale w porównaniu z JPL, czy InterProlog,​ gdzie plik prologowy można od razu załadować tutaj stanowi to barierę nie do przejścia. Może projekt z biegiem czasu zostanie na tyle rozbudowany,​ że stanie się znaczną konkurencją dla JPL oraz InterPrologu,​ ale wówczas może się pojawić nurtujące pytanie o wydajność (w sensie szybkości przetwarzania) takiego symulatora prologu. 
-Od wyżej wymienionych bibliotek znacznie odstaje JPL i InterProlog. Obie biblioteki umożliwiają załadowanie pliku prologowego "​.pl"​. Powoduje to dość znaczną redukcję kodu. Programy nie przekraczają praktycznie 10 linii kodu (dla przypadku implementacji systemu eksperckiego car.pl). Występują jednak różnice w realizacji celu obu bibliotek. Jeżeli chodzi o samą konfigurację systemu do pracy z oboma bibliotekami to InterProlog jest 100% wygranym. Aby zainstalować JPL trzeba przeczytać uważnie instrukcję i dodać liczne zmienne środowiskowe,​ jak i do odpowiednich plików SWI Prologu. InterProlog w tej kwestii wymaga dodania tylko jednej zmiennej środowiskowej. 
-Jeżeli chodzi o szybkość zapoznania się z daną biblioteką to SWI Prolog jest lepszy (subiektywna ocena autora). Bardzo szybko można uruchomić przykład dość prosty i intuicyjny pozwalający zrozumieć zasadę korzystania z JPL. InterProlog okazał się bardziej skomplikowany,​ a przykłady niestety nie uruchamiały się. W trakcie próby poznawania InterPrologu powstał kłopot z uruchomieniem jego. Okazało się, że InterProlog potrzebuje znać dokładną ściężkę do pliku uruchomieniowego prologu. 
-Sama realizacja systemu eksperckiego okazała się również łatwiejsza w SWIPrologu, gdyż uruchamia on na konsoli w osobnym oknie system ekspercki car.pl i wpisywanie odpowiedzi jest dość łatwe i intyitywne. InterProlog zmusza do wywołania klasy, która uruchamia okienko javowe będące konsolą prologu (pod javą). Problematyczne dla późniejszego użytkownika jest korzystanie z tego okienka. Jest ono mało intuitywne. Odpowiedzi wpisuje się pod spodem w osobnym wydzielonym polu. Mimo licznych metod i klas związanych z obsługą GUI, okazało się nie możliwe stworzenie własnego interface'​u,​ który by obsługiwał bezpośrednio uruchomiony program. 
- 
- 
- 
-==== 5. Wnioski. ==== 
- 
-Obecnie wydaje się, że z porównanych bibliotek JIProlog, TuProlog, JPL oraz InterProlog tylko ostatnie dwie nadają się do intergracji Javy i Prologu. JPL jest biblioteką znacznie bardziej intuicyjną dla programistów Prologu (subiektywna ocena autora) natomiast InterProlog bardziej wymaga od użytkownika znajomość Javy. Samo uruchomienie systemu eksperckiego car.pl pozwala wyciągnąć wniosek, że InterProlog przez komunikację przez okienko Javowe jest bardziej bliższy językowi Java. JPL wydaje się jednak dawać większą swobodę w programowaniu i jest bardziej nastawiony na prostotę w implementacji. JPL posiada jednak pewne wady. Ogranicza on się przede wszystkim tylko do jednej wersji prologu - SWI Prolog. InterProlog oferuje obsługę trzech rodzajów prologu - SWI Prolog, XSB Prolog, YAP Prolog. Ciężko jest jest jednoznacznie określić, która biblioteka jest lepsza - jest to ocena zależna od użytkownika. Jeżeli ktoś poszukuje biblioteki mającej wiele możliwości,​ która oferuje wiele rozwiązań oraz programista lubi język Java, to godny polecenia jest InterProlog. Jeżeli komuś zależy na prostocie i szybkości realizacji celu to warto jednak skorzystać z JPL. 
- 
-====== Materiały ====== 
-Ciekawe linki z wiki: 
- 
--standard: 
-http://​www.ugosweb.com/​jiprolog/​index.aspx http://​portal.acm.org/​citation.cfm?​id=787039 
-http://​www.sics.se/​isl/​sicstuswww/​site/​index.html http://​www.declarativa.com/​interprolog/​ 
-http://​www.swi-prolog.org/​packages/​jpl/​java_api/​index.html 
- 
--JSP + Prolog: 
-http://​www.jaist.ac.jp/​~fuji/​work/​docs/​html4/​jpro_p2.html 
- 
--Kolejne propozycje: 
-http://​kaminari.istc.kobe-u.ac.jp/​PrologCafe/​ 
-http://​ktiml.mff.cuni.cz/​~bartak/​prolog/​implementations.html#​prolog_in 
-http://​www.robert-tolksdorf.de/​vmlanguages.html 
-http://​jlogic.sourceforge.net/​ 
- 
- 
-Własne znalezione linki: 
- 
-http://​portal.acm.org/​citation.cfm?​id=1103379.1103383&​coll=GUIDE&​dl=GUIDE 
-http://​kaminari.istc.kobe-u.ac.jp/​PrologCafe/​ 
-http://​www.cs.kuleuven.ac.be/​~bmd/​PrologInJava/​ 
-http://​www.kprolog.com/​jipl/​index_e.html 
-http://​www.swi-prolog.org/​packages/​jpl/​ 
- 
--ciekawe linki (może być interesujące):​ 
-http://​alice.unibo.it/​xwiki/​bin/​view/​Tuprolog/​ 
-http://​www.ifcomputer.co.jp/​MINERVA/​ 
- 
--Coś o integracji Java 5.0 z Prolog: 
-http://​homepages.fh-regensburg.de/​~mpool/​mpool07/​proceedings/​8.pdf 
- 
--Liniki do prologu (strony zestawiające informacje):​ 
-http://​www.prolog.info/​compilers.html 
-http://​kaminari.istc.kobe-u.ac.jp/​logic/​jprolog.html 
  
pl/miw/miw08_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