Porównanie implementacji Prologu
Poniższe porównanie implementacji Prologu zawiera odniesienia do względnych zestawów funkcji i wydajności różnych implementacji języka programowania komputerów Prolog .
Ruchliwość
Istnieją implementacje Prologu , które są radykalnie różne, mają inną składnię i semantykę (np. Visual Prolog), a wokół różnych implementacji rozwinęły się społeczności podrzędne.
Kod, który jest ściśle zgodny z podstawowym językiem ISO-Prolog, można przenosić między implementacjami zgodnymi z ISO. Jednak standard ISO dla modułów nigdy nie został zaakceptowany przez większość implementatorów Prologu.
Czynniki, które mogą niekorzystnie wpłynąć na przenośność, obejmują: użycie ograniczonej i nieograniczonej arytmetyki liczb całkowitych, dodatkowe typy, takie jak obiekty łańcuchowe, zaawansowane typy liczbowe (wymierne, złożone), rozszerzenia funkcji, takie jak Unicode , wątki i tworzenie tabel. Korzystanie z bibliotek niedostępnych w innych wdrożeniach i organizacji bibliotek:
Obecnie sposób, w jaki predykaty są rozłożone w bibliotekach i wbudowanych systemach, jest bardzo różny. [...] Na szczęście jest tylko kilka przypadków, w których znajdujemy predykaty o tej samej nazwie, ale różnej semantyce (np.
delete/3
)
Główne cechy
Platforma | Cechy | zestaw narzędzi | Mechanika Prologu | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Nazwa | system operacyjny | Licencja | Natywna grafika | Skompilowany kod | Unikod | Zorientowany obiektowo | Natywna kontrola systemu operacyjnego | Samodzielny plik wykonywalny | Interfejs C | Interfejs Javy | Interaktywny tłumacz | Debuger | Profiler kodu | Składnia |
AllegroProlog | Unix , Windows , Mac OS X | Dostępna jest komercyjna, limitowana bezpłatna edycja | Tak | Tak | Tak | Tak, przez Lispa | Tak | Tak, przez Lispa | Tak, przez Lispa | Tak | Tak | Tak, przez Lispa | S-wyrażenia. Pełna integracja z Common Lispem. | |
BProlog | Unix , Windows , Mac OS X | Bezpłatnie do zastosowań niekomercyjnych | Tak | Tak | Tak | Tak | Tak | Tak | Tak | Tak | Tak | Tak | ISO-Prolog plus obsługa zdarzeń, CLP(FD) i tworzenie tabel | |
cześć | Unix , Windows , Mac OS X | GPL , LGPL | Tak | Tak | Tak | Tak | Tak | Tak | Tak | Tak | Tak | ISO-Prolog plus rozszerzenia | ||
DOS-PROLOG | MS-DOS | Handlowy | Tak | Tak | Tak | Tak | Tak | Tak | Prolog z Edynburga | |||||
Zaćmienie | Linux , Windows , Solaris , macOS | MPL | Tak | Tak | Tak | Tak | Tak | Tak | Tak | Rozszerzony Prolog, wielodialekt, w tym ISO | ||||
Prolog GNU | Unix , Windows , Mac OS X | GPL , LGPL | Tak | Tak | Tak | Tak | Tak | Tak | ISO-Prolog | |||||
JIProlog | JVM , Android | Shareware /Commercial i AGPL | Tak | Tak | Tak przez Javę | Tak | Tak przez Javę | Tak | Tak | Tak | ISO-Prolog | |||
JLog | JVM | GPL | Tak | Tak | Tak | Tak | ISO-Prolog | |||||||
JScriptLog | Przeglądarka internetowa | GPL | Tak | ISO-Prolog | ||||||||||
jTrolog | JVM | LGPL | Tak | Tak | Tak | Tak | Testy ISO-Prolog [ stały martwy link ] | |||||||
LPA-PROLOG | Okna | Handlowy | Tak | Tak | Tak | Tak | Tak | Tak | Tak | Tak | Tak | Tak | Tak | Edynburg Prolog z rozszerzeniami |
Otwórz Prolog | System operacyjny Mac | Darmowe | Tak | |||||||||||
Poplog Prolog | Linux (32- i 64-bitowy), Unix , Windows | Darmowe oprogramowanie typu open source | Tylko przez POP-11 w systemie Linux | Tak | Tak | Tak | Tak | Tak | Tak | Edinburgh Prolog, z interfejsami do Poplog Common Lisp i Pop-11 | ||||
Prolog Scryera | Linux , Windows , macOS | Licencja BSD | Tak | Tak | ISO-Prolog | |||||||||
SICStus Prolog | Unix , Linux , Windows , macOS | Handlowy | Tak | Tak | Tak | Tak | Tak | Tak | Tak | Tak | Tak | Tak | Tak | ISO-Prolog |
Truskawkowy prolog | Windowsa , Uniksa | Darmowy , komercyjny | Tak | Tak | Tak | Tak | Tak | Nie ISO-Prolog + rozszerzenia | ||||||
SWI-Prolog | Unix , Linux , Windows , macOS | Licencja BSD | Tak | Tak | Tak | Tak | Tak | Tak | Tak | Tak | Tak | Tak | ISO-Prolog, Edynburg Prolog | |
tuProlog | JVM , Android | LGPL | Tak | Tak | Tak | Tak | Tak | Tak | ISO-Prolog | |||||
Prolog wizualny | Okna | Darmowy , komercyjny | Tak | Tak | Tak | Tak | Tak | Tak | Tak | Tak | Tak | |||
Prolog XSB | Linux , Windows , Solaris , macOS | LGPL | Tak | Tak | Tak | Tak | Tak | Tak | Tak | Tak | Tak | ISO-Prolog, tabela WFS | ||
YAP-Prolog | Linux , Windows , Solaris , Mac OS X , HP-UX | GPL lub Artystyczne (wybór użytkownika) | Tak | Tak | Tak | Tak | Tak | Tak | Tak | Tak | Zgodność z Edynburgiem, ISO-Prolog, Quintus i SICStus Prolog |
Związane z siecią | ||||||||
---|---|---|---|---|---|---|---|---|
Nazwa | Kompilacja warunkowa | Gniazda | Wielowątkowość | Obstawianie | Klient HTTP | Serwer HTTP | Parser HTML | Potrójny sklep RDF |
BProlog | Tak | |||||||
cześć | Tak | Tak | Tak | Tak | Tak | Tak | Tak | |
Zaćmienie | Tak | Tak | Tak | Tak | Tak | |||
Prolog GNU | Tak | |||||||
LPA-Prolog | Tak | Tak | Tak | Tak | ||||
Prolog Scryera | Tak | Tak | Tak | Tak | Tak | |||
SICStus Prolog | Tak | Tak | Tak | |||||
SWI-Prolog | Tak | Tak | Tak | Tak | Tak | Tak | Tak | Tak |
Prolog wizualny | Tak | Tak | Tak | Tak | Tak | Tak | ||
XSB | Tak | Tak | Tak | Tak | Tak | |||
YAP-Prolog | Tak | Tak | Tak | Tak |
Analiza statyczna
Nazwa | Sprawdzanie typów | Kontroler determinacji | Sprawdzanie wzorców połączeń |
---|---|---|---|
cześć | Tak | Tak | Tak |
Prolog GNU | |||
SICStus Prolog | Tak | ||
SWI-Prolog | Tak | ||
Prolog wizualny | Tak | Tak | Tak |
Prolog | |||
XSB YAP |
optymalizacje
Nazwa | Optymalizacja połączeń ogonowych | Eliminacja punktu wyboru | Przycinanie środowiska | Indeksowanie na czas |
---|---|---|---|---|
cześć | Tak | Tak | Tak | ? |
Zaćmienie | Tak | Tak | Tak | wieloargumentowy (czas kompilacji) |
Prolog GNU | Tak | Tak | Tak | ? |
SICStus Prolog | Tak | Tak | Tak | |
SWI-Prolog | Tak | Tak | Tak | Tak |
Prolog wizualny | Tak (czas kompilacji) | Tak (czas kompilacji) | — | Nie dotyczy (czas kompilacji) |
XSB | Tak | Tak | Tak | ? |
YAP-Prolog | Tak | Tak | Tak | Tak |
Uwolnienie
Nazwa | Wersja | Data |
---|---|---|
AllegroProlog | 1.1.2 | 2018-12-12 |
BProlog | 8.1 | 2014-02-23 |
JIProlog | 4.1.6.1 | 2018-03-17 |
cześć | 1.20.0 | 2021-03-31 |
DOS-PROLOG | 8.0 | |
Zaćmienie | 7.0_54 | 2020-02-26 |
Prolog GNU | 1.4.5 | 2018-07-14 |
JLog | 1.3.6 | 2007-09-13 |
JScriptLog | 0,7,5 beta | 2007-09-10 |
jTrolog | ||
LPA-PROLOG | 8.0 | 2022-07-14 |
Otwórz Prolog | ||
Poplog Prolog | V15.65 | 2015-10-14 |
Prolog Scryera | 0.9.1 | 2022-11-13 |
SICStus Prolog | 4.7.0 | 2021-08-09 |
Truskawkowy prolog | 3.0 Beta 4 | 2013-12-10 |
SWI-Prolog | 8.4.1 | 2021-11-16 |
tuProlog | 3.2.1 | 2017-02-14 |
Prolog wizualny | 10, Zbuduj 1000 | 2021-04-15 |
Prolog XSB | 4.0 | 2021-04-01 |
YAProlog | 6.3.3 | 2013-01-21 |
Wzorce
- Kwestie związane z testowaniem porównawczym: testy porównawcze Odd Prolog , różnice w wydajności.
- Oprogramowanie do testów porównawczych: starsze , Dobry [ permanent dead link ] , Aquarius Benchmark Suite , (Bothe, 1990), (Demoen et al. 2001) , opisy benchmarków
- Wyniki testów porównawczych: B-Prolog , SICStus , XSB, SICStus vs Yap vs hProlog
- Wyniki testów porównawczych: Badanie silników prologowych języka Java przeprowadzone przez Michaela Zeisinga
- Wyniki testów porównawczych: Coroczny test porównawczy OpenRuleBench silników reguł
Linki zewnętrzne
- Przegląd systemów Prolog autorstwa Ulricha Neumerkela
- Ocena zgodności I: Składnia