I have searched the Internet and stackoverflow.com, but got nothing.
Who can give me a comparison between various Prolog compilers/IDEs such as Visual Prolog and SWI-Prolog?
Thanks in advance!
The most elaborate Prolog IDE I'm familiar with is the Eclipse-based IDE for Amzi! Prolog. This is a commercial product, but the IDE can be downloaded and used for free in the Student Edition. It might be ideal for a beginning Prolog programmer.
SWI-Prolog runs on Unix, Windows, Macintosh and Linux platforms.
Prolog-MPI is an open-source SWI-Prolog extension for distributed computing over the Message Passing Interface. Also there are various concurrent Prolog programming languages.
Open a terminal (Ctrl+Alt+T) and navigate to the directory where you stored your program. Open SWI-Prolog by invoking swipl . In SWI-Prolog, type [program] to load the program, i.e. the file name in brackets, but without the ending. In order to query the loaded program, type goals and watch the output.
It's hard to go wrong if you start with SWI-Prolog. Although it is slower than most of the alternatives discussed here, it is extremely robust, has broad library support, has a decent GUI-building system (XPCE), and uses a license that allows its use in proprietary applications.
For better speed, it is a simple matter to convert most non-GUI SWI-Prolog applications to run under YAP Prolog.
If speed is the most important aspect, you should consider GNU-Prolog. I recently developed using Amzi! Prolog with its Eclipse IDE (not to be confused with ECLiPSe programming language). Once the debugging was done, I turned my attention to timing. Porting to SWI-Prolog and GNU-Prolog was fairly straightforward, both on Windows and Linux, since at that point the code was fairly standard "ISO" Prolog. My timings showed Amzi! and SWI were comparable in speed, and GNU-Prolog was significantly faster.
It also turned out the code was spending a large majority of time in one section that was very numeric. While Amzi! and SWI both implement exact integer arithmetic in arbitrary precision, it turned out my requirements were just within the integer limits in 32-bit GNU-Prolog.
Moreover GNU-Prolog was easy to link to a rewrite of that critical section in C. The hybrid code is what I'm using in production.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With