Porovnání implementací Prologu - Comparison of Prolog implementations
Následující Porovnání implementací Prologu poskytuje odkaz na relativní sady funkcí a výkon různých implementací Prolog počítač programovací jazyk.
Přenosnost
Existuje Prolog implementace které jsou radikálně odlišné, s odlišnou syntaxí a odlišnou sémantikou (např. Visual Prolog)[1] a subkomunity se vyvinuly kolem různých implementací.[1]
Kód, který přesně odpovídá základnímu jazyku ISO-Prolog, je přenosný napříč implementacemi kompatibilními s ISO. Standard ISO pro moduly však většina implementátorů Prolog nikdy nepřijala.[1]
Mezi faktory, které mohou nepříznivě ovlivnit přenositelnost, patří: použití ohraničené vs. neomezené celočíselné aritmetiky, další typy, jako jsou řetězcové objekty, pokročilé číselné typy (racionální, komplexní), rozšíření funkcí, jako Unicode, vlákna a předložení.[2] Použití knihoven, které nejsou k dispozici v jiných implementacích a organizaci knihoven:[1]
V současné době se způsob, jakým jsou predikáty rozloženy po knihovnách a integrovaných systémech, výrazně liší. [...] Naštěstí existuje jen málo případů, kdy najdeme predikáty se stejným názvem, ale s odlišnou sémantikou (např.
smazat / 3
)
Hlavní rysy
Plošina | Funkce | Sada nástrojů | Prolog Mechanics | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
název | OS | Licence | Nativní grafika | Zkompilovaný kód | Unicode | Objektově orientovaný | Nativní ovládání OS | Samostatný spustitelný soubor | Rozhraní C.[3] | Rozhraní Java[3] | Interaktivní tlumočník | Debugger | Profiler kódu | Syntax |
BProlog | Unix, Okna, Mac OS X | Zdarma pro nekomerční použití | Ano | Ano | Ano | Ano | Ano | Ano | Ano | Ano | Ano | Ano | ISO-Prolog, plus zpracování událostí, CLP (FD) a předložení | |
JIProlog | JVM, Android | Shareware / Obchodní a AGPL | Ano | Ano | Ano přes Javu | Ano | Ano přes Javu | Ano | Ano | Ano | ISO-Prolog | |||
Čau | Unix, Okna, Mac OS X | GPL, LGPL | Ano | Ano | Ano | Ano | Ano | Ano | Ano | Ano | Ano | ISO-Prolog, plus rozšíření | ||
DOS-PROLOG | MS-DOS | Shareware | Ano | Ano | Ano | Ano | Ano | Ano | Edinburgh Prolog | |||||
Zatmění | Linux, Okna, Solaris, Operační Systém Mac | MPL | Ano | Ano | Ano | Ano | Ano | Ano | Ano | Extended Prolog, Multi-dialect, including ISO | ||||
GNU Prolog | Unix, Okna, Mac OS X | GPL, LGPL | Ano | Ano | Ano | Ano | Ano | Ano | ISO-Prolog | |||||
Jekejeke Prolog | JVM, Android | Vyhodnocení distribuce | Ano | Ano | Ano | Ano | Ano | Ano | Ano | Ano | ISO-Prolog, Java API | |||
JLog | JVM | GPL | Ano | Ano | Ano | Ano | ISO-Prolog | |||||||
JScriptLog | Webový prohlížeč | GPL | Ano | ISO-Prolog | ||||||||||
jTrolog | JVM | LGPL | Ano | Ano | Ano | Ano | ISO-Prolog testy[trvalý mrtvý odkaz ] | |||||||
LPA-PROLOG | Okna | Komerční | Ano | Ano | Ano | Ano | Ano | Ano | Ano | Ano | Ano | Ano | Ano | Edinburgh Prolog s příponami |
Otevřete Prolog | Operační Systém Mac | Freeware | Ano | |||||||||||
Poplog Prolog | Linux (32 a 64 bitů), Unix, Okna | Zdarma otevřený zdroj | Pouze skrz POP-11 v systému Linux | Ano | Ano | Ano | Ano | Ano | Ano | Edinburgh Prolog s rozhraními pro Poplog Common Lisp a Pop-11 | ||||
SICStus Prolog | Unix, Linux, Okna, Operační Systém Mac | Komerční | Ano | Ano | Ano | Ano | Ano | Ano | Ano | Ano | Ano | Ano | Ano | ISO-Prolog |
Jahodový prolog | Okna, Unix | Freeware, Obchodní | Ano | Ano | Ano | Ano | Ano | Ne rozšíření ISO-Prolog + | ||||||
SWI-Prolog | Unix, Linux, Okna, Operační Systém Mac | Licence BSD | Ano | Ano | Ano | Ano | Ano | Ano | Ano | Ano | Ano | Ano | ISO-Prolog, Edinburgh Prolog | |
tuProlog | JVM, Android | LGPL | Ano | Ano | Ano | Ano | Ano | Ano | ISO-Prolog | |||||
Vizuální prolog | Okna | Freeware, Obchodní | Ano | Ano | Ano | Ano | Ano | Ano | Ano | Ano | Ano | |||
XSB Prolog | Linux, Okna, Solaris, Operační Systém Mac | LGPL | Ano | Ano | Ano | Ano | Ano | Ano | Ano | Ano | Ano | ISO-Prolog, předloženo WFS | ||
YAP-Prolog | Linux, Okna, Solaris, Mac OS X, HP-UX | GPL nebo umělecké (volba uživatele) | Ano | Ano | Ano | Ano | Ano | Ano | Ano | Ano | Kompatibilní s Edinburghem, ISO-Prolog, Quintus a SICStus Prolog |
Související s webem | ||||||||
---|---|---|---|---|---|---|---|---|
název | Podmíněná kompilace | Zásuvky | Vícevláknové | Předložení | HTTP klient | HTTP server | Analyzátor HTML | RDF Triple store |
BProlog | Ano | |||||||
Čau | Ano | Ano | Ano | Ano | Ano | Ano | Ano | |
Zatmění | Ano | Ano | Ano | Ano | Ano | |||
GNU Prolog | Ano | |||||||
Jekejeke Prolog | Ano | Ano | Ano | Ano | Ano | |||
LPA-Prolog | Ano | Ano | Ano | Ano | ||||
SICStus Prolog | Ano | Ano | Ano | |||||
SWI-Prolog | Ano | Ano | Ano | Ano | Ano | Ano | Ano | Ano |
Vizuální prolog | Ano | Ano | Ano | Ano | Ano | Ano | ||
XSB | Ano | Ano | Ano | Ano | Ano | |||
YAP-Prolog | Ano | Ano | Ano | Ano |
Statická analýza
název | Kontrola typu | Kontrola rozhodnosti | Kontrola vzoru volání |
---|---|---|---|
Čau | Ano | Ano | Ano |
GNU Prolog | |||
Jekejeke Prolog | |||
SICStus Prolog | Ano | ||
SWI-Prolog | Ano | ||
Vizuální prolog | Ano | Ano | Ano |
XSB | |||
YAP-Prolog |
Optimalizace
název | Optimalizace koncového volání | Vyloučení bodu volby | Ořezávání prostředí | Just-in-time indexování |
---|---|---|---|---|
Čau | Ano | Ano | Ano | ? |
Zatmění | Ano | Ano | Ano | více argumentů (čas kompilace) |
GNU Prolog | Ano | Ano | Ano | ? |
Jekejeke Prolog | Ano (runtime) | Ano (runtime) | Ano (runtime) | Ano |
SICStus Prolog | Ano | Ano | Ano | |
SWI-Prolog | Ano | Ano | Ano | Ano |
Vizuální prolog | Ano (čas kompilace) | Ano (čas kompilace) | N / A | N / A (čas kompilace) |
XSB | Ano | Ano | Ano | ? |
YAP-Prolog | Ano | Ano | Ano | Ano |
Uvolnění
název | Verze | datum |
---|---|---|
BProlog | 8.1 | 2014-02-23 |
JIProlog | 4.1.6.1 | 2018-03-17 |
Čau | 1.19.0 | 2020-03-21 |
DOS-PROLOG | 6.0 | |
Zatmění | 7.0_54 | 2020-02-26 |
GNU Prolog | 1.4.5 | 2018-07-14 |
Jekejeke Prolog | 1.3.1 | 2018-11-02 |
JLog | 1.3.6 | 2007-09-13 |
JScriptLog | 0,7,5 beta | 2007-09-10 |
jTrolog | ||
LPA-PROLOG | 7.0 | 2019-12-19 |
Otevřete Prolog | ||
Poplog Prolog | V15.65 | 2015-10-14 |
SICStus Prolog | 4.6.0 | 2020-05-04 |
Jahodový prolog | 3.0 Beta 4 | 2013-12-10 |
SWI-Prolog | 8.2.3 | 2020-11-23 |
tuProlog | 3.2.1 | 2017-02-14 |
Vizuální prolog | 9.0, build 902 | 2019-04-26 |
XSB Prolog | 3.8 | 2017-10-29 |
YAProlog | 6.3.3 | 2013-01-21 |
Srovnávací hodnoty
- Problémy se srovnáváním: Zvláštní benchmarking Prologu „Výkonnostní rozdíly.[4]
- Srovnávací software: starší, Dobry[trvalý mrtvý odkaz ], Referenční sada Vodnáře (Bothe, 1990),[5] (Demoen et al. 2001), popisy benchmarku
- Výsledky srovnávacího testu: B-Prolog, SICStus, XSB,[6] SICStus vs Yap vs hProlog[7]
- Výsledky srovnávacího testu: Průzkum motorů Java Prolog Michael Zeising
- Výsledky srovnávacího testu: OpenRuleBench každoroční měřítko open-source motorů pravidel
Reference
- ^ A b C d Wielemaker, J .; Costa, V. T. S. (2011). "O přenositelnosti aplikací Prolog". Praktické aspekty deklarativních jazyků. Přednášky z informatiky. 6539. p. 69. CiteSeerX 10.1.1.1030.9396. doi:10.1007/978-3-642-18378-2_8. ISBN 978-3-642-18377-5.
- ^ Jan Wielemaker a Vıtor Santos Costa: Přenositelnost programů Prolog: teorie a případové studie. Workshop CICLOPS-WLPE 2010.
- ^ A b Rozhraní C / Java lze také použít pro ovládání grafiky a OS.
- ^ B. Demoen a P. Nguyen, O zbytečných výkonnostních rozdílech mezi implementacemi Prologu, Sborník kolokvia o implementaci omezení a logických programovacích systémů (CICLOPS 2001)
- ^ Bothe, K. (1990). Msgstr "Sada prologových prostorů prologu". Oznámení ACM SIGPLAN. 25 (12): 54–60. doi:10.1145/122193.122197.
- ^ Souhrn výkonu XSB (1993)
- ^ Demoen, B .; Nguyen, P.L .; Vandeginste, R. (2002). "Kopírování Garbage Collection pro WAM: označit nebo neznačit?". Logické programování. Přednášky z informatiky. 2401. 194–208. CiteSeerX 10.1.1.13.2586. doi:10.1007/3-540-45619-8_14. ISBN 978-3-540-43930-1.
externí odkazy
- Přehled systémů Prolog Ulrich Neumerkel
- Posuzování shody I: Syntaxe