Jämförelse av Prolog-implementationer
Följande jämförelse av Prolog-implementationer ger en referens för de relativa funktionsuppsättningarna och prestandan för olika implementeringar av Prologs datorprogrammeringsspråk .
Bärbarhet
Det finns Prolog- implementationer som är radikalt olika, med olika syntax och olika semantik (t.ex. Visual Prolog) och sub-communities har utvecklats kring olika implementeringar.
Kod som strikt överensstämmer med ISO-Prologs kärnspråk är portabel över ISO-kompatibla implementeringar. ISO-standarden för moduler accepterades dock aldrig av de flesta Prolog-implementatorer.
Faktorer som kan påverka portabiliteten negativt inkluderar: användning av aritmetik med begränsat eller obegränsat heltal, ytterligare typer som strängobjekt, avancerade numeriska typer (rationella, komplexa), funktionstillägg som Unicode , trådar och tabeller . Användning av bibliotek som inte är tillgängliga i andra implementeringar och biblioteksorganisation:
För närvarande skiljer sig hur predikat sprids över biblioteken och systeminbyggda system enormt. [...] Lyckligtvis finns det bara ett fåtal fall där vi hittar predikat med samma namn men olika semantik (t.ex.
delete/3
)
Huvuddrag
Plattform | Funktioner | Verktygslåda | Prolog Mekanik | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
namn | OS | Licens | Inbyggd grafik | Sammanställd kod | Unicode | Objektorienterad | Native OS Control | Fristående körbar | C Gränssnitt | Java-gränssnitt | Interaktiv tolk | Debugger | Kodprofilerare | Syntax |
AllegroProlog | Unix , Windows , Mac OS X | Kommersiell, begränsad gratis upplaga tillgänglig | Ja | Ja | Ja | Ja, via Lisp | Ja | Ja, via Lisp | Ja, via Lisp | Ja | Ja | Ja, via Lisp | S-uttryck. Fullständig Common Lisp-integration. | |
BProlog | Unix , Windows , Mac OS X | Gratis för icke-kommersiellt bruk | Ja | Ja | Ja | Ja | Ja | Ja | Ja | Ja | Ja | Ja | ISO-Prolog, plus händelsehantering, CLP(FD) och tabeller | |
Ciao | Unix , Windows , Mac OS X | GPL , LGPL | Ja | Ja | Ja | Ja | Ja | Ja | Ja | Ja | Ja | ISO-Prolog, plus tillägg | ||
DOS-PROLOG | MS-DOS | Kommersiell | Ja | Ja | Ja | Ja | Ja | Ja | Edinburgh Prolog | |||||
Förmörkelse | Linux , Windows , Solaris , macOS | MPL | Ja | Ja | Ja | Ja | Ja | Ja | Ja | Utökad prolog, multidialekt, inklusive ISO | ||||
GNU Prolog | Unix , Windows , Mac OS X | GPL , LGPL | Ja | Ja | Ja | Ja | Ja | Ja | ISO-Prolog | |||||
JIProlog | JVM , Android | Shareware /Commercial och AGPL | Ja | Ja | Ja via Java | Ja | Ja via Java | Ja | Ja | Ja | ISO-Prolog | |||
JLog | JVM | GPL | Ja | Ja | Ja | Ja | ISO-Prolog | |||||||
JScriptLog | Webbläsare | GPL | Ja | ISO-Prolog | ||||||||||
jTrolog | JVM | LGPL | Ja | Ja | Ja | Ja | ISO-Prolog tester [ permanent död länk ] | |||||||
LPA-PROLOG | Windows | Kommersiell | Ja | Ja | Ja | Ja | Ja | Ja | Ja | Ja | Ja | Ja | Ja | Edinburgh Prolog med tillägg |
Öppna Prolog | Mac OS | Gratisprogram | Ja | |||||||||||
Poplog Prolog | Linux (32- och 64-bitars), Unix , Windows | Gratis öppen källkod | Endast via POP-11 , på Linux | Ja | Ja | Ja | Ja | Ja | Ja | Edinburgh Prolog, med gränssnitt till Poplog Common Lisp och Pop-11 | ||||
Scryer Prolog | Linux , Windows , macOS | BSD-licens | Ja | Ja | ISO-Prolog | |||||||||
SICStus Prolog | Unix , Linux , Windows , macOS | Kommersiell | Ja | Ja | Ja | Ja | Ja | Ja | Ja | Ja | Ja | Ja | Ja | ISO-Prolog |
Strawberry Prolog | Windows , Unix | Gratisprogram , kommersiellt | Ja | Ja | Ja | Ja | Ja | Inte ISO-Prolog + tillägg | ||||||
SWI-Prolog | Unix , Linux , Windows , macOS | BSD-licens | Ja | Ja | Ja | Ja | Ja | Ja | Ja | Ja | Ja | Ja | ISO-Prolog, Edinburgh Prolog | |
tuProlog | JVM , Android | LGPL | Ja | Ja | Ja | Ja | Ja | Ja | ISO-Prolog | |||||
Visuell prolog | Windows | Gratisprogram , kommersiellt | Ja | Ja | Ja | Ja | Ja | Ja | Ja | Ja | Ja | |||
XSB Prolog | Linux , Windows , Solaris , macOS | LGPL | Ja | Ja | Ja | Ja | Ja | Ja | Ja | Ja | Ja | ISO-Prolog, framlagt WFS | ||
YAP-Prolog | Linux , Windows , Solaris , Mac OS X , HP-UX | GPL eller Artistic (användarval) | Ja | Ja | Ja | Ja | Ja | Ja | Ja | Ja | Edinburgh, ISO-Prolog, Quintus och SICStus Prolog kompatibla |
Webrelaterad | ||||||||
---|---|---|---|---|---|---|---|---|
namn | Villkorlig sammanställning | Uttag | Flertrådig | Bordläggning | HTTP-klient | HTTP-server | HTML Parser | RDF Trippelbutik |
BProlog | Ja | |||||||
Ciao | Ja | Ja | Ja | Ja | Ja | Ja | Ja | |
Förmörkelse | Ja | Ja | Ja | Ja | Ja | |||
GNU Prolog | Ja | |||||||
LPA-Prolog | Ja | Ja | Ja | Ja | ||||
Scryer Prolog | Ja | Ja | Ja | Ja | Ja | |||
SICStus Prolog | Ja | Ja | Ja | |||||
SWI-Prolog | Ja | Ja | Ja | Ja | Ja | Ja | Ja | Ja |
Visuell prolog | Ja | Ja | Ja | Ja | Ja | Ja | ||
XSB | Ja | Ja | Ja | Ja | Ja | |||
YAP-Prolog | Ja | Ja | Ja | Ja |
Statisk analys
namn | Skriv checker | Beslutsamhetskontroll | Samtalsmönsterkontroll |
---|---|---|---|
Ciao | Ja | Ja | Ja |
GNU Prolog | |||
SICStus Prolog | Ja | ||
SWI-Prolog | Ja | ||
Visuell prolog | Ja | Ja | Ja |
XSB | |||
YAP-Prolog |
Optimeringar
namn | Tail-Call Optimering | Eliminering av valpoäng | Miljötrimning | Just-in-Time-indexering |
---|---|---|---|---|
Ciao | Ja | Ja | Ja | ? |
Förmörkelse | Ja | Ja | Ja | multi-argument (kompileringstid) |
GNU Prolog | Ja | Ja | Ja | ? |
SICStus Prolog | Ja | Ja | Ja | |
SWI-Prolog | Ja | Ja | Ja | Ja |
Visuell prolog | Ja (kompileringstid) | Ja (kompileringstid) | — | N/A (kompileringstid) |
XSB | Ja | Ja | Ja | ? |
YAP-Prolog | Ja | Ja | Ja | Ja |
Släpp
namn | Version | Datum |
---|---|---|
AllegroProlog | 1.1.2 | 2018-12-12 |
BProlog | 8.1 | 2014-02-23 |
JIProlog | 4.1.6.1 | 2018-03-17 |
Ciao | 1.20.0 | 2021-03-31 |
DOS-PROLOG | 8,0 | |
Förmörkelse | 7.0_54 | 2020-02-26 |
GNU Prolog | 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 |
Öppna Prolog | ||
Poplog Prolog | V15.65 | 2015-10-14 |
Scryer Prolog | 0.9.1 | 2022-11-13 |
SICStus Prolog | 4.7.0 | 2021-08-09 |
Strawberry Prolog | 3.0 Beta 4 | 2013-12-10 |
SWI-Prolog | 8.4.1 | 2021-11-16 |
tuProlog | 3.2.1 | 2017-02-14 |
Visuell prolog | 10, bygg 1000 | 2021-04-15 |
XSB Prolog | 4.0 | 2021-04-01 |
YAProlog | 6.3.3 | 2013-01-21 |
Riktmärken
- Benchmarkingfrågor: Odd Prolog benchmarking , Prestandaskillnader.
- Benchmarkingprogramvara: äldre , Dobry [ permanent död länk ] , Aquarius benchmark suite , (Bothe, 1990), (Demoen et al. 2001) , benchmarkbeskrivningar
- Benchmarkingresultat: B-Prolog , SICStus , XSB, SICStus vs Yap vs hProlog
- Benchmarkingresultat: Undersökning av java prolog-motorer av Michael Zeising
- Benchmarkingresultat: OpenRuleBenchs årliga benchmark med öppen källkod för regelmotorer
externa länkar
- Översikt över Prolog Systems av Ulrich Neumerkel
- Bedömning av överensstämmelse I: Syntax