-
21. Data: 2014-05-24 23:43:05
Temat: Re: Prolog i hierarchiczna baza faktów
Od: Sebastian Biały <h...@p...onet.pl>
On 2014-05-24 19:09, A.L. wrote:
>> prologa. Innymi slowy zapytanie Prologowe jest moim zapytaniem które
>> chcę używać.
> jakiego rodzaju to sa zapytania (przykaldy).
"Kto mieszka na ulicy X i ma blond włosy".
> Kto bedzie generowal
> zapytania prologowe?
Uzytkownik. Przy czym userem jest *programista* a nie Kowalski. I raczej
nie jest to programator od PHP tylko ktoś rozumiejący po co i jak.
> I jak? "Jak" w sensie technicznym?
Wpisze sobie *gdzieś*. To szczegół techniczny wymagający posiadania
jakiegoś embedowanego języka logicznego którzy umozliwi takie a nie inne
zadawanie pytań i cięzko mi odpowiedzieć na pytanie jak to będzie jak
już będzie. Ogólnie gdzieś mozna bedzie wpisać to zapytanie w Prologu.
Powiedzmy w jakimś pliku.
> Czy
> uzytkownik podejcie do kumputera i wklepie zapytanei w Prologu?... Cos
> mi sie nei widzi...
Bo to nie jest soft dla ludzi, tylko dla programistów. IMHO dadzą radę.
Prolog jest na tyle czytelny że nawet jesli sami nie napisza, to jest
szansa że zmodyfikują exampla.
> Zapytanie w rodzalju "podaj mi wszystkei autobusy do Kielc i Radomia
> ktore maja polaczenie do Krakowa tego samego dnia" nei da sie zapisac
> w jednej linijce prologu
Nie chodzi o jedną linijkę. To może być kilkadziesiąt linijek. Chodzi o
to aby w ogóle można było takie zapytanie zmodyfikować bądź wręcz
zapisać od zera *bez* zmiany oprogramowania. Nie chcę hardkodować
zapytań bo ich może być bardzo dużo i nie jestem w stanie przewidzieć
wszystkich.
Chcę doprowadzić do tego że user może zmienić pewne elementy systemu u
siebie w miarę prosty sposób. Od razu zaznaczam że odzyskanie bazy
wiedzy jest samo w sobie sporym wyzwaniem co oznacza że sens istnienia
oprogramowania jest. Chodzi o uczynienie go bardziej elastycznym.
Mozna to sobie wyobrazić tak: jest oprogramowanie CAD. Oprogramowanie to
może mieć zahardkodowane funkcje. Ale może też mieć elastyczny system
skryptów pozwalający tworzyć wlasne funckcje. Kto jest programistą
poradzi sobie. Więc u mnie chodzi o taką własnie elastyczność.
Dostarczam *coś* user to przerabia jeśli chce więcej i bardziej
specyficznie dla siebie.
Innym przykładem niech będzie synteza języków VHDL czy Verilog. Tam
nalezy znaleźć pewne struktury w kodzie. To jakie niestety nie zawsze
jest znane na etapie tworzenia syntezera bo moga być różne implementacje
dopuszczalne w FPGA. I znowu user może dostarczyć odpowiednie zapytania
ktore np. znajduja w projekcie przerzutniki napisane w pewien
specyficzny sposób i implementują je za pomocą tego co dostarcza
hardwareowo FPGA.
Innymi słowy nie przejmował bym sie kto bedzie tego Prologa czy coś
innego uzywał. Raczej bedzie to ktoś świadomy co robi.
-
22. Data: 2014-05-25 01:26:55
Temat: Re: Prolog i hierarchiczna baza faktów
Od: A.L. <a...@a...com>
On Sat, 24 May 2014 23:43:05 +0200, Sebastian Biały
<h...@p...onet.pl> wrote:
>
>Innymi słowy nie przejmował bym sie kto bedzie tego Prologa czy coś
>innego uzywał. Raczej bedzie to ktoś świadomy co robi.
Tak na pierwszy rzut oka:
1. Nauczenie kogos aby byl tworczym a nei odtworczym programista w
Prologu to 12 do 18 miesiecy. Byla keidys dluga dyskusja na ten temat
na comp.lang.prolog. Zgodne jest to mniej wiecej z moim doswiadczeniem
wzgledem prob edukacji wspolpracownikow. Tylko z jednym sie udalo
2. Jak zrobic "embedding"? Na ogol nei da sie "zanurzyc" interpretera
w aplikacji, "zanurza sie run-time system nie zawierajacy
interpretera. Wiec jak ci programisci beda pisac swoje kawalki, i jak
one sie beda kontaktowaly z Prologiem?
3. Gdzie bedzie baza danych (wiedzy)? Baza wiedzy dla Prologu to zbior
predykatow. Prolog na bardzo slabe mozliwosci wzgledem wspolpracy z
zewnetrznymi bazami danych, czy po prostu zewnetrznymi nosnikami
informacji
4. Jak sie aplikacja "glowna" (java, C++) bedzie kontaktowala z
Prologiem?
Pytam jako "adwokat diabla", bo sam owe problemy jakos-tam
rozwiazalem. Ale ogolnie, nie bylo to ani latwe ani przyjemne, i
ogolnie, po latach, uwazam ze uzycie Prologu to byla neispecjalnie
dobra decyzja.
A.L.
-
23. Data: 2014-05-25 02:58:13
Temat: Re: Prolog i hierarchiczna baza faktów
Od: Andrzej Jarzabek <a...@g...com>
On 24/05/2014 22:43, Sebastian Biały wrote:
> On 2014-05-24 19:09, A.L. wrote:
>>> prologa. Innymi slowy zapytanie Prologowe jest moim zapytaniem które
>>> chcę używać.
>> jakiego rodzaju to sa zapytania (przykaldy).
>
> "Kto mieszka na ulicy X i ma blond włosy".
Do takich zapytań świetnie nadaje się SQL.
-
24. Data: 2014-05-25 04:27:51
Temat: Re: Prolog i hierarchiczna baza faktów
Od: A.L. <a...@a...com>
On Sun, 25 May 2014 01:58:13 +0100, Andrzej Jarzabek
<a...@g...com> wrote:
>On 24/05/2014 22:43, Sebastian Biały wrote:
>> On 2014-05-24 19:09, A.L. wrote:
>>>> prologa. Innymi slowy zapytanie Prologowe jest moim zapytaniem które
>>>> chcę używać.
>>> jakiego rodzaju to sa zapytania (przykaldy).
>>
>> "Kto mieszka na ulicy X i ma blond włosy".
>
>Do takich zapytań świetnie nadaje się SQL.
Owszem, ale nie wszystko da sie zalatwic przy pomocy SQL. SQL nei
zlatwia "reachability problem" - na przykald mamy graf polaczen
lotniczych miedzy miastami. SQL nei poradzi sobie z zapytaniem: Czy
istnieje polaczenie miedzy miastami A i B?"
Przez "polaczenie" rozumiemy tu nei tylko polaczenie bezposrednie, a
polaczenie z dowolna iloscia stopow posrednich. To wymaga policzenia
"transitive closure" grafu, a to jest ponad sily SQL (z grubsza).
Wlasciwiie nei tyle SQL, co algebry relacyjnej
Prolog poradzi sobie znakomicie
A.L.
P.S. Gdyby ktos nei byl pzrekonany:
http://wwwis.win.tue.nl/~tcalders/teaching/advancedD
B09/notes/lecture02.pdf
-
25. Data: 2014-05-25 09:21:43
Temat: Re: Prolog i hierarchiczna baza faktów
Od: Sebastian Biały <h...@p...onet.pl>
On 2014-05-25 01:26, A.L. wrote:
> 1. Nauczenie kogos aby byl tworczym a nei odtworczym programista w
> Prologu to 12 do 18 miesiecy. Byla keidys dluga dyskusja na ten temat
> na comp.lang.prolog. Zgodne jest to mniej wiecej z moim doswiadczeniem
> wzgledem prob edukacji wspolpracownikow. Tylko z jednym sie udalo
Zgadzam się że to nie jest łatwe. Ale nie musi. Podobnie jak nie musisz
znać VB aby pisać makra w Excelu, wystarczy zobaczyć przykłady i miec
ogólne pojęcie o programowaniu. Czy jest jakiś język zorientowany
logicznie łatwiejszy od Prologa?
> 2. Jak zrobic "embedding"? Na ogol nei da sie "zanurzyc" interpretera
> w aplikacji, "zanurza sie run-time system nie zawierajacy
> interpretera. Wiec jak ci programisci beda pisac swoje kawalki, i jak
> one sie beda kontaktowaly z Prologiem?
SWI-Prolog ma interfejs C/C++. Nie wiem jakiej jakości. Do sprawdzenia.
Być może do eksperymentu będzie to jakaś pokraczna hybryda typu Castor
http://www.mpprogramming.com/cpp/default.aspx
na pierwszy rzut. Co prawda nie pozwoli na pisanie relacji przez usera
ale pozwoli ocenić czy wogole da się relacje odzyskać i jest o co walczyć.
Ostatecznie może to być zewnętrzny exe i już.
> 3. Gdzie bedzie baza danych (wiedzy)?
Obecnie mam ją w pamięci. Idealnie gdyby tam została.
> Baza wiedzy dla Prologu to zbior
> predykatow. Prolog na bardzo slabe mozliwosci wzgledem wspolpracy z
> zewnetrznymi bazami danych, czy po prostu zewnetrznymi nosnikami
> informacji
Owszem, to już doczytałem. Dlatego ostatecznie mogę ją zserializować do
postaci która będzie plikiem tekstowym pozwalającym zwykłemu Prologowi w
exe na odczytanie.
> 4. Jak sie aplikacja "glowna" (java, C++) bedzie kontaktowala z
> Prologiem?
Dowolnie. Idealnie gdyby mozliwa była komunikacja dwustronna natywnie -
baza wiedzy jest wprost używana przez prolog a wyniki zapytań sa wprost
widoczne natywnie. Aż do "wszystko jest serializowane do prologa w te i
nazad i odpalany prolog.exe".
Mała uwaga: wydajnośc nie ma znaczenia na ten moment, interesuje mnie
*czytelność*, ponieważ to jest eksperyment którego celem jest
stwierdzenie czy jestem w stanie wydobyc pewne relacje i jakim kosztem.
Jeśli eksperyment sie powiedzie wtedy bede mógl na spokojnie ocenić czy
Prolog to jest to czy nie i ewentualnie rozwiązać problemy embedowania.
> Pytam jako "adwokat diabla", bo sam owe problemy jakos-tam
> rozwiazalem. Ale ogolnie, nie bylo to ani latwe ani przyjemne, i
> ogolnie, po latach, uwazam ze uzycie Prologu to byla neispecjalnie
> dobra decyzja.
Jaki więc inny język (logiczny?) pozwalający na podobne zapytania co prolog?
Napisanie "wlasnego języka zapytań" uważam za gruba przesadę. Z drugiej
strony jedyny powszechnie znany język logiczny to Prolog. Wyboru dużego
nie mam.
-
26. Data: 2014-05-25 11:55:40
Temat: Re: Prolog i hierarchiczna baza faktów
Od: "intuicjonista" <n...@b...pl>
Użytkownik "A.L." <a...@a...com> napisał w wiadomości
news:c9k2o9lblaig5eog1r4fttrghtml66s51p@4ax.com...
> On Sun, 25 May 2014 01:58:13 +0100, Andrzej Jarzabek
> <a...@g...com> wrote:
>
>>On 24/05/2014 22:43, Sebastian Biały wrote:
>>> On 2014-05-24 19:09, A.L. wrote:
>>>>> prologa. Innymi slowy zapytanie Prologowe jest moim zapytaniem które
>>>>> chcę używać.
>>>> jakiego rodzaju to sa zapytania (przykaldy).
>>>
>>> "Kto mieszka na ulicy X i ma blond włosy".
>>
>>Do takich zapytań świetnie nadaje się SQL.
>
> Owszem, ale nie wszystko da sie zalatwic przy pomocy SQL. SQL nei
> zlatwia "reachability problem" - na przykald mamy graf polaczen
> lotniczych miedzy miastami. SQL nei poradzi sobie z zapytaniem: Czy
> istnieje polaczenie miedzy miastami A i B?"
ze względu na ograniczenia samego SQL
bazy danych sa zwykle wyposazane w dodatkowe
rozszerzenia/języki np. oracle posiada język PL/SQL
MS-SQL posiada TSQL ( i zapewne C# :))- a w nich
można napisać praktycznie wszystko. Klasyczne
jest np. planowanie produkcji w systemach ERP.
Pozostaje kwestia efektywnosci ale to inna sprawa.
-
27. Data: 2014-05-25 16:00:03
Temat: Re: Prolog i hierarchiczna baza faktów
Od: Andrzej Jarzabek <a...@g...com>
On 25/05/2014 03:27, A.L. wrote:
> On Sun, 25 May 2014 01:58:13 +0100, Andrzej Jarzabek
> <a...@g...com> wrote:
>> On 24/05/2014 22:43, Sebastian Biały wrote:
>>> On 2014-05-24 19:09, A.L. wrote:
>>>> jakiego rodzaju to sa zapytania (przykaldy).
>>> "Kto mieszka na ulicy X i ma blond włosy".
>> Do takich zapytań świetnie nadaje się SQL.
>
> Owszem, ale nie wszystko da sie zalatwic przy pomocy SQL.
Chodziło mi o to, że jeśli SQL się nie nadaje, to powinno się myśleć i
podawać przykłady zapytań, do których SQL się nie nadaje.
-
28. Data: 2014-05-25 19:25:12
Temat: Re: Prolog i hierarchiczna baza faktów
Od: A.L. <a...@a...com>
On Sun, 25 May 2014 09:21:43 +0200, Sebastian Biały
<h...@p...onet.pl> wrote:
>Jaki więc inny język (logiczny?) pozwalający na podobne zapytania co prolog?
>
>Napisanie "wlasnego języka zapytań" uważam za gruba przesadę. Z drugiej
>strony jedyny powszechnie znany język logiczny to Prolog. Wyboru dużego
>nie mam.
Hm... Prolog czytelny?... jak odczytac takie cos
bagof(Z,X^Y^p(X,Y,Z),Bag).
Ja sam mialem problemy z moimi wlasnymi programami po 3 miesiacach nie
dotykania
Inny jesyk zawierajacy w sobie logic programming to Mozart-OZ
Ale wracajac do pryncypiow: malo sensowne wydaje mi sie wybieranie
jezyka ZANIM sie sformuluje problem w miare scicly i formalny sposob.
Moze w ogole zadne "programwoani w logice" nei jest potzrebne?
W kazdym razie, za darmo udzielam porady: uzywalem Prologa do
aplikacji komercyjnych przez 10 lat. Napisalem cwierc miliona linii
kodu. I gdybym mial robic podobna rzecz drugi raz, zastanowilbym sie
dobzre czy wybrac Prolog. Po 10 latach Prolog zostal wywalony co
wsztscy przyjeli z ulga. Co zamiast Prologu? Program w Javie
implementujeccy to co tzreba i tylko to co tzreba
A.L.
-
29. Data: 2014-05-25 19:33:49
Temat: Re: Prolog i hierarchiczna baza faktów
Od: Sebastian Biały <h...@p...onet.pl>
On 2014-05-25 19:25, A.L. wrote:
> Ale wracajac do pryncypiow: malo sensowne wydaje mi sie wybieranie
> jezyka ZANIM sie sformuluje problem w miare scicly i formalny sposob.
> Moze w ogole zadne "programwoani w logice" nei jest potzrebne?
Byc może. Chcę to sprawdzić doświadczalnie. Mam część zapytań w postaci
kodu w C++ i działa. Nie podoba mi się jednak, język silnie typowany nie
pozwala mi się skupić na istocie problemu. Pozwolił mi jednak dowieść że
dane jestem w stanie odzyskać zgodnie z pomyslem. Teraz rozglądam się za
czymś do programowania logicznego bo być może uzyskam to samo prościej
(w zapisie). Języka nie wybieram jeszcze. Na razie stukam i pukam w
problem w celu zbadania czy można i jak można.
> W kazdym razie, za darmo udzielam porady: uzywalem Prologa do
> aplikacji komercyjnych przez 10 lat. Napisalem cwierc miliona linii
> kodu. I gdybym mial robic podobna rzecz drugi raz, zastanowilbym sie
> dobzre czy wybrac Prolog. Po 10 latach Prolog zostal wywalony co
> wsztscy przyjeli z ulga. Co zamiast Prologu? Program w Javie
> implementujeccy to co tzreba i tylko to co tzreba
Jedną z opcji do rozważenia jest dokładnie takie coś. Zamiast Java -
JavaScript, aby było łatwiej embedować. Ba, to doświadczenie mam już za
sobą i w zasadzie dało by radę. Jednak dalej ilośc kodu emulująca zapis
logiczny jest znaczna. W ogóle zapisywanie zapytań w językach
imperatywnych wygląda na przekomplikowane i gubi sens.
Język jest mało ważny. Ma być tylko znany i embedowalny. Prolog to
eksperyment. Może nie będzie warto a może będzie. Chcę sprawdzić.
Dlatego pytam jak sprawdzić w Prologu.
-
30. Data: 2014-05-25 23:30:57
Temat: Re: Prolog i hierarchiczna baza faktów
Od: g...@g...com
W dniu sobota, 24 maja 2014 20:02:04 UTC+2 użytkownik A. L. napisał:
> On Sat, 24 May 2014 10:44:44 -0700 (PDT), g...@g...com
> wrote:
>
> >Nie chce z Panem dyskutowac, bo do tej pory wszelkie dyskusje z Panem
> >nie mialy dla mnie zadnej wartosci,
>
> I nawzajem.
W takim razie moze na przyszlosc da Pan sobie spokoj z takimi
personalnymi wycieczkami jak "widac masz tylko te jedna ksiazke
na polce". Czemu to mialo sluzyc?
> Scheme JEST na smietniku historii i nikt nei bedzie uczyl sie Scheme
> zbeby pzreczytac ksizke. Konec. Kropka.
Ma Pan tupet, zeby wypowiadac sie za wszystkich ludzi.
> Niech Pan zmusi studentow do nauczenai sie Scheme. Bedzie Pan mial na
> uczelni rewolucje. Wiec tak czy siak, takimi czy innymi wykretami od
> teg osie odchodzi.
Ja nie bede nikogo do niczego zmuszal. Albo ktos czegos chce, albo
nie chce. W najgorszym razie moge kogos probowac zachecic i cierpliwie
wyjasniac podstawy.
> NIKT NEI UZYWA SCHEME DO NICZEGO.
Nawet niedaleko Pana, na Uniwersytecie Wroclawskim, mozna spotkac
panstwa Biernackich, ktorzy uzywaja Scheme'u w swoich badaniach:
http://www.ii.uni.wroc.pl/~mabi/
http://www.ii.uni.wroc.pl/~dabi/
Scheme jest tez uzywany w licznych kursach programowania, m.in.
"Introduction to systematic program design" na Courserze albo
w zajeciach z programowania dla dzieci Bootstrap World:
http://www.bootstrapworld.org/
Ponadto producent gier komputerowych "Naughty Dog" uzywa Racketa
do opracowywania narzedzi deweloperskich dla swoich gier
http://www.youtube.com/watch?v=oSmqbnhHp1c
> studenci palcacy 50 tysiecy dolcow
> rocznei za nauke nei czhcz sie uczyc rzeczy ktore sa na rynku
> niepotzrebne. Niestety, nikt disiaj nei studiuje dla przyjemnosci
> studiwoania.
Ja znam wiele osob, ktore studiuja dla przyjemnosci studiowania.
(Choc zgodze sie, ze raczej nie na politechnice)
> Nawet na MIT. Jeszcze raz: nie twierdze se TRESC SICP sie
> zdezaktualizowala. Nie twierdze z FORMA KSAIZKOWA sie
> zdezaktualizowala. Twierdze ze pzrekaz oparty na Scheme sie
> zdezaktualizowal, co twierdzil sa mSussmau usprawiedliwajac pzrejscie
> na Pythona.
Jezeli poda mi Pan zrodlo, w ktorym Sussman twierdzi cos takiego,
to przyznam Panu racje. Jednak pomimo wielu wysilkow wlozonych
w googlowanie, nie znalazlem ani jednej przeslanki, ktora potwierdzialaby
Panskie stwierdzenie. Tym bardziej, ze mowienie o "przejsciu na Pythona"
jest niedorzeczne, bo po prostu mowa jest o dwoch roznych kursach,
poruszajacych inne tresci (nawet jesli czesciowo sie pokrywajace).
> Mozna wylozyc TRESCI SICP przy pomocy Pythona. Co wlasnie zrobilem,
> konczac semestralny kurs Functional Programming ku zadowoleniu
> studentow
Ciekawi mnie, w jaki sposob wylozyl Pan temat ewaluatora
niedeterministycznego, nie majac w Pythonie do dyspozycji "first class
continuations". Rownie ciekawe wydaje mi sie to, jak poradzil sobie
Pan z ewaluatorem metacyklicznym bez homoikonicznosci, i czy Panskim
studentom naprawde podobaly sie komplikacje wynikajace z wprowadzenia
nietrywialnej skladni.
Ale szczerze mowiac raczej mam wrazenie, ze palnal Pan po prostu
nieprzemyslana glupote wypowiadajac sie o ksiazce, ktorej Pan nie
przeczytal, i zamiast przyznac sie do bledu, brnie Pan w coraz
wymyslniejsze stwierdzenia (tj. ze "SICP sie zdezaktualizowal",
ale "tresc SICP sie nie zdezaktualizowala", tylko "forma SICP
sie zdezaktualizowala", ale wcale nie chodzi o forme, itd.)
A dodatkowo w dosc ordynarny sposob rzuca Pan pod moim adresem
jakies niemerytoryczne docinki.