Czy istnieje implementacja Prologu lub micro-Prologu na nasz ulubiony komputer? Czytałem o microPrologu na ZX-Spectrum, a chciałem się pobawić Prologiem na Atari.
Prologu nie widze. Jezeli nie jest wymieniony we wspolczesnych opracowaniach to albo w ogole go nie ma, albo bylo to "dawno i nieprawda" - czyli trzeba przejrzec stare amerykanskie magazyny o Atari :)
Poszedlem tropem Zientary, ktory napisal, ze piraci gieldowi mieli Prolog. Przeszukalem wszystkie posiadane przez nas katalogi (Olbit, Megabajt, Hobbit, Bajt, Atarmam):
W "The Blue Book for the Atari Computers", edycja 1983/1984 też nie ma wzmianki o prologu, a ta książeczka jest w miarę kompletna na ówczesny czas. Jeśli już - szukać od 1984 roku wzwyż.
George: przejrzałem ten plik i to nie jest Prolog. Ale można tak z ciekawości obejrzeć. Ładowanie: z poziomu DOSa LOGO po załadowaniu LOAD "D:PROLOG Smacznego!
Czy ktoś obczaja Micro-Prolog w wersji ZX Spectrum, CP/M lub MS-DOS. Chodzi o to, że nie wiem jak wczytać tam SIMPLE. Przy wprowadzaniu reguł wyskakuje Error: 2. W Bajtku pisali o tym, żeby wpisać komendę LOAD SIMPLE i wczytać z magnetofonu ale gdzie znaleźć SIMPLE? Na stronie World of Spectrum przy obrazie Micro-Prolog widać na screenach, że ktoś też nie wiedział jak skorzystać z tego języka bo wyskakiwał mu komunikat Error: 2 przy próbie wprowadzania reguł.
Paul Laughton: Another thing, for O.S.S., I did a language called Prolog, which they sold minimal copies of.
Kevin Savetz: Prolog for the Atari?
PL: Prolog for the Atari.
KS: I don't think I'm aware of that. When I think of O.S.S., I think of BASIC/A+ and Action! and things like that. I know a little bit about Prolog, I read a couple of books about it for the IBM PC in the nineties. Was it basically compatible with that same sort of language?
PL: Well it was compatible through the lines of Prolog. It had special functions in it to do graphics and things like that. It was asically a standard Prolog image. I think there was another Prolog written for the Atari 800 besides the one I wrote.
KS: Because you need competition in the busy Prolog programming space.
PL: If you look up, maybe, O.S.S. Prolog.
KS: I'll have to research this later. Interesting.
Z mojej analizy wynika, że Zientara, wspominając w Bajtku 7 z 1991 roku o języku Prolog na cartridge'u i na kasecie, najprawdopodobniej pomylił Prolog z Pilotem. Obie nazwy są w miarę podobne. Prologu, jak dotychczas, ani mnie, ani innym poszukującym nie udało się jednak znaleźć. A nawet wzmianki o takiej implementacji dla małego Atari. Z kolei Pilot faktycznie na Atari istniał na obu nośnikach: ->link<- . Kolejna przesłanka uprawdopodabniająca taką pomyłkę: na liście Zientary jest nieistniejący język tu Prolog, a nie ma istniejącego języka Pilot.
A co do meritum: Prolog na Atari już jest! W wersji micro-Prolog (jak na ZX Spectrum). Poniżej ekran ze spisem komend po wpisaniu polecenia HELP. Wkrótce więcej informacji na stronie głównej AtariOnline.pl.
Jeśli chodzi o PROLOG, to była wersja na Apple II. Mam do niej nawet dokumentację, niestety w języku francuskim. Zdaje się, że większość dokumentacji była po francusku, bo głównie rozwijany był właśnie we Francji i Kanadzie. PROLOG był napisany w specjalnym języku Candide i do działania potrzebował wirtualnej maszyny Micromegas. Na Apple II stacje dysków były używane jako pamięć wirtualna. Podobno jedna z pierwszych maszyn, na której uruchomiono Prolog, była ODRA i wychodzi, że jak dotychczas jedyna znana kopia oryginalnego kodu źródłowego (z malymi zmianami dla ODRY) ktory byl rozeslany do wielu krajow zachowała się w Polsce.
Fakt. Prolog zawsze miał opinię „języka, na którym ludzie się wykładają” I coś w tym jest, bo to zupełnie inne podejście niż imperatywne myślenie, bardziej matematyka i logika niż pisanie programu krok po kroku.
Co do historii to masz rację, że bardzo silny ośrodek rozwoju był we Francji (np. prace zespołu Alain Colmerauer w Université d'Aix-Marseille), ale początki są trochę bardziej mieszane bo współtwórcą był też Robert Kowalski w UK. Kanada i Francja faktycznie mocno pchnęły to dalej w latach 70./80.
Ten wątek z Apple II i VM Micromegas brzmi jak jedna z ciekawszych implementacji. Prolog miał wtedy masę bardzo egzotycznych runtime’ów, często z własnymi maszynami wirtualnymi i kombinowaniem z pamięcią (zwłaszcza na 8-bitowcach).
Jest też wersja na BBC i dla mnie najważniejsza ta na ZX-Spectrum.
Ale Robert Kowalski wlasnie byl wspoltworca na Université d'Aix-Marseille.
"Zainteresowanie Alaina Colmerauera algorytmami parsowania i przetwarzaniem języka naturalnego (np. automatyczne tłumaczenie i system pytań i odpowiedzi) doprowadziło do rozwoju języka programowania Prolog. W 1967 roku uzyskał doktorat z gramatyki precedensowej na Uniwersytecie w Grenoble. Następnie przeniósł się na Uniwersytet w Montrealu, gdzie zaprojektował język przepisywania drzew o nazwie Q-systems, który został wykorzystany w Projekcie Automatycznego Tłumaczenia do zbudowania automatycznego systemu tłumaczenia z języka angielskiego na francuski. Colmerauer uważał Q-systems za przodka Prologu. Na Colmerauera i jego zespół wpłynęły również inne prace, takie jak artykuł Roberta Floyda „Nondeterministic Algorithms”, praca J. Alana Robinsona nad logiką rezolucji oraz praca Roberta Kowalskiego nad SL-resolutin. Kowalski odwiedził drużynę w Marsylii na tydzień w 1971 roku i dwa miesiące w 1972 roku."
PROLOG 0 "W 1971 roku zespół skonstruował „prymitywny system komunikacji w języku naturalnym” wykorzystujący Q-systems do opisu aspektów języka naturalnego oraz dowód twierdzeń napisany w języku ALGOL-W. Jednak w 1972 roku wpadli na kilka pomysłów, które doprowadziły do stworzenia nowego języka programowania, który mógł obsługiwać oba rodzaje obliczeń:
„Spośród wszystkich systemów rezolucji zaimplementowanych przez Philippe'a,SL-resolution R. Kowalskiego i D. Kuehnera wydawała się najciekawsza. Jej tryb działania, oparty na stosie, był podobny do zarządzania wywołaniami procedur w standardowym języku programowania i dlatego był szczególnie dobrze przystosowany do przetwarzania niedeterminizmu poprzez cofanie się (backtracking) à la Robert Floyd [1967], a nie przez kopiowanie i zapisywanie rezolwentów. Rezolucja SL stała się następnie przedmiotem rozprawy Philippe'a na temat przetwarzania równości formalnej w automatycznym dowodzeniu twierdzeń [Roussel 1972]. Równość formalna jest mniej ekspresywna niż równość standardowa, ale można ją przetwarzać wydajniej. Teza Philippe'a doprowadziła do wprowadzenia predykatu dif (dla ≠) do pierwszej wersji Prologu”. „Po odejściu Roberta, Alain ostatecznie znalazł sposób [który nazwał gramatykami metamorfozy] na tworzenie wydajnych analizatorów. Powiązał predykat binarny N(x,y) z każdym symbolem nieterminalnym N gramatyki, co oznaczało, że x i y są ciągami terminalnymi, dla których istnieje ciąg u zdefiniowany przez x = uy i można go wyprowadzić z N. Reprezentując x i y za pomocą list, każdą regułę gramatyki można zakodować za pomocą klauzuli zawierającej dokładnie taką samą liczbę literałów, jak liczba wystąpień symboli nieterminalnych. W ten sposób możliwe było obejście się bez konkatenacji list. (Ta technika jest obecnie znana jako „technika list różnicowych”). Alain wprowadził również dodatkowe parametry do każdego symbolu nieterminalnego, aby propagować i obliczać informacje. Podobnie jak w systemach Q, analizator nie tylko weryfikował poprawność zdania, ale także wyodrębniał formułę reprezentującą zawartą w nim informację. Nic nie stało już na przeszkodzie stworzeniu systemu komunikacji człowiek-maszyna opartego wyłącznie na „logice”.” „Podjęto drakońską decyzję: kosztem niezupełności wybraliśmy rozwiązanie liniowe z unifikacją tylko między nagłówkami klauzul. Nieświadomie odkryliśmy strategię, która jest zupełna, gdy używane są tylko klauzule Horna. Robert Kowalski zademonstrował to później i wraz z Maartenem van Emdenem zdefiniował współczesną semantykę punktów stałych w programowaniu klauzul Horna.
@gregor2 nie w temacie, ale dość istotne, przynajmniej dla mnie ;)
masz listę bugów 65816 którymi możesz się podzielić? i jesteś pewien, że w obecnie produkowanych prockach nadal one występują?
nie piszę prywatnie na AOL bo się pogubimy co w wątku jest prywatne a co nie ;)
jakbyś miał coś na podstawie czego można napisać jakiś zestaw testów to było by fajnie - z drugiej strony wydaje mi się, że ten procek już powinien być rozpoznany po tylu latach, ale nie mam doświadczenia w pisaniu emulacji takich wynalazków, więc jak masz jakąś wiedzę to by się przydało zrobić testy tego co mamy.
@zbyti Wyslalem Ci powiadomienie na priv. Coc nie wiem czy to tutaj dziala. W kazdym razie zobacz w temacie "szukam programow do przetestowania symulatora 65816" w kategori Programowanie / Programming .
Choc sprawa wygadala beznadziejnie udalo sie odnalesc te wersje PROLOG dla AppleII. Ciekawe ze dziala na moim AppleII Europlus, a nie uruchamia sie na emulatorze AppleWin ;) Przy okazji udalo sie ustalic ze istnieje jeszcze inny PROLOG dzialajacy na AppleII (Small PROLOG)ale ten z kolei wymaga karty z procesorem z80 i systemu CP/M. Wersja Small PROLOG dla systemu CP/M powinna dzialac tez na innych komputerach.
Podaje link do wersji pod CP/M moze komus sie przyda np. jesli ma stacje dyskow z systemem CP/M do Atari http://cpmarchives.classiccmp.org/ftp.php?b=cpm%2Fmirrors%2Foak.oakland.edu%2Fpub%2Fcpm%2Fprolog