Comparison of Prolog implementations

Comparison of Prolog implementations

The following Comparison of Prolog implementations provides a reference for the relative feature sets and performance of different implementations of the Prolog computer programming language.

Contents

Main features

Platform Features Toolkit Prolog Mechanics
Name OS Licence Native Graphics Compiled Code Unicode Object Oriented Native OS Control Stand Alone Executable C Interface[1] Java Interface[1] Interactive Interpreter Debugger Code Profiler Syntax
BProlog Unix, Windows, Mac OS X Free for academic uses Yes Yes Yes Yes Yes Yes Yes Yes Yes ISO-Prolog, plus event-handling, CLP(FD), and tabling
Ciao Unix, Windows, Mac OS X GPL, LGPL Yes Yes Yes Yes Yes Yes Yes Yes Yes ISO-Prolog, plus extensions
DOS-PROLOG MS-DOS Shareware Yes Yes Yes Yes Yes Yes Edinburgh Prolog
GNU Prolog Unix, Windows, Mac OS X GPL, LGPL Yes Yes Yes Yes Yes Yes ISO-Prolog
Jekejeke Prolog JVM w/o Toolkit Distributable otherwise Evaluation Yes (via Java) Yes (16-bit) Yes (via Java) Yes Yes Yes ISO-Prolog, Java API
JLog JVM GPL Yes Yes Yes Yes ISO-Prolog
JScriptLog Web Browser GPL Yes ISO-Prolog
jTrolog JVM LGPL Yes Yes Yes Yes ISO-Prolog tests
LPA-Prolog Windows Commercial Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Edinburgh Prolog with extensions
Open Prolog Mac OS Freeware Yes
Poplog Prolog Linux (32- and 64-bit), Unix, Windows Free Open Source Only through POP-11, on Linux Yes Yes Yes Yes Yes Yes Edinburgh Prolog, with interfaces to Poplog Common Lisp and Pop-11
SICStus Prolog Unix, Linux, Windows, Mac OS X Commercial Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes ISO-Prolog
Strawberry Prolog Windows, Unix Freeware, Commercial Yes Yes Yes Yes Yes Not ISO-Prolog + extensions
SWI-Prolog Unix, Windows, Mac OS X LGPL Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes ISO-Prolog, Edinburgh Prolog
tuProlog JVM LGPL Yes Yes Yes Yes Yes Yes ISO-Prolog
Visual Prolog Windows Freeware, Commercial Yes Yes Yes Yes Yes Yes Yes Yes Yes
XSB Prolog Linux, Windows, Solaris, Mac OS X LGPL Yes Yes Yes Yes Yes Yes Yes Yes ISO-Prolog, tabled WFS
YAP-Prolog Linux, Windows, Solaris, Mac OS X, HP-UX GPL or Artistic (user choice) Yes Yes Yes Yes Yes Yes Yes Yes Edinburgh, ISO-Prolog, Quintus and SICStus Prolog compatible

Operating system and Web-related features

Web-related
Name Conditional compilation Sockets Multi-threading Tabling HTTP client HTTP server HTML Parser RDF Triple store
BProlog Yes
Ciao Yes Yes Yes Yes Yes Yes
GNU Prolog No Yes
Jekejeke Prolog Yes (via Java) Yes Yes (built-in) Yes (via Java)
LPA-Prolog Yes Yes Yes Yes
SICStus Prolog Yes Yes
SWI-Prolog Yes Yes Yes Yes Yes Yes Yes
Visual Prolog Yes Yes Yes Yes Yes
XSB Yes Yes Yes Yes
YAP-Prolog Yes Yes Yes Yes

Static analysis

Name Type checker Determinacy checker Call-pattern checker
Ciao Yes Yes Yes
GNU Prolog
Jekejeke Prolog
SICStus Prolog Yes
SWI-Prolog
Visual Prolog Yes Yes Yes
XSB
YAP-Prolog

Optimizations

Name Tail-Call Optimization Choice Point Elimination Environment Trimming Just-in-Time Indexing
Ciao Yes Yes Yes  ?
GNU Prolog  ?
Jekejeke Prolog Yes (runtime) Yes (runtime) Yes (runtime) Yes
SICStus Prolog Yes Yes Yes  ?
SWI-Prolog Yes
Visual Prolog Yes (compile time) Yes (compile time) N/A  ?
XSB Yes Yes  ?
YAP-Prolog Yes Yes Yes

Portability

Code that strictly conforms to ISO-Prolog is portable across compliant implementations that share the same implementation defined features. Factors that can adversely affect portability include: the processor character set such as Unicode, implementation specific extensions to syntax, bounded vs. unbounded integer arithmetic, non-portable extensions such as string-objects, advanced numeric types (rationals, complex), threads, and tabling. [2]

Benchmarks

References

  1. ^ a b C/Java interface can also be used for graphics and OS control.
  2. ^ Jan Wielemaker and Vıtor Santos Costa: Portability of Prolog programs: theory and case-studies. CICLOPS-WLPE Workshop 2010.
  3. ^ B. Demoen, and P. Nguyen, About unnecessary performance differences between Prolog implementations, Proceedings of the Colloquium on Implementation of Constraint and Logic Programming Systems (CICLOPS 2001)
  4. ^ Bothe, K. (1990). "A prolog space benchmark suite". ACM SIGPLAN Notices 25 (12): 54–50. doi:10.1145/122193.122197.  edit
  5. ^ A Summary of XSB Performance (1993)[1]
  6. ^ Demoen, B.; Nguyen, P. L.; Vandeginste, R. (2002). Copying Garbage Collection for the WAM: to Mark or Not to Mark?. 2401. pp. 194. doi:10.1007/3-540-45619-8_14.  edit

External Links


Wikimedia Foundation. 2010.

Игры ⚽ Нужно сделать НИР?

Look at other dictionaries:

  • Comparison of Prolog standards compliance — Prolog is a logic programming language. The ISO Prolog standard: ISO/IEC 13211 1 [ISO/IEC 13211: Information technology mdash; Programming languages mdash; Prolog. International Organization for Standardization, Geneva. ] , published in 1995,… …   Wikipedia

  • Prolog — infobox programming language paradigm = Logic programming year = 1972 designer = Alain Colmerauer implementations = BProlog, ECLiPSe, Ciao Prolog, GNU Prolog, Quintus, SICStus, Strawberry, SWI Prolog, YAP Prolog, tuProlog dialects = ISO Prolog,… …   Wikipedia

  • YAP Prolog — Infobox Software name = YAP Prolog caption = developer = latest release version = 5.1.1 latest release date = 2006.04.18 latest preview version = 5.1.2 latest preview date = 2007.06.29 operating system = Linux, Windows, Solaris, Mac OS X platform …   Wikipedia

  • Comparison of programming languages — Programming language comparisons General comparison Basic syntax Basic instructions Arrays Associative arrays String operations …   Wikipedia

  • Comparison of agent-based modeling software — In the last few years, the agent based modeling (ABM) community has developed several practical agent based modeling toolkits that enable individuals to develop agent based applications. More and more such toolkits are coming into existence, and… …   Wikipedia

  • Common Lisp — Paradigm(s) Multi paradigm: procedural, functional, object oriented, meta, reflective, generic Appeared in 1984, 1994 for ANSI Common Lisp Developer ANSI X3J13 committee Typing discipline …   Wikipedia

  • Programming language — lists Alphabetical Categorical Chronological Generational A programming language is an artificial language designed to communicate instructions to a machine, particularly a computer. Programming languages can be used to create programs that… …   Wikipedia

  • Coroutine — Coroutines are computer program components that generalize subroutines to allow multiple entry points for suspending and resuming execution at certain locations. Coroutines are well suited for implementing more familiar program components such as …   Wikipedia

  • Region-based memory management — In computer science, region based memory management is a type of memory management in which each allocated object is assigned to a region. A region, also called a zone, arena, or memory context, is a collection of allocated objects that can be… …   Wikipedia

  • String (computer science) — In formal languages, which are used in mathematical logic and theoretical computer science, a string is a finite sequence of symbols that are chosen from a set or alphabet. In computer programming, a string is traditionally a sequence of… …   Wikipedia

Share the article and excerpts

Direct link
Do a right-click on the link above
and select “Copy Link”