next_inactive up previous
Up: Artificial Intelligence Previous: Reference Material




SWI-Prolog (open source, good Prolog system) is installed in Johnson 118. SWI Prolog can be used as a stand-alone IDE, although I find the interface a bit awkward and thus my personal preference is to use it from within XEmacs. A suitable ``Prolog mode'' for such an interaction is also installed on the machines in J118.


Programs may be composed and edited using any text editor, such as notepad on Windows. In any case, make sure that you have a good text editor. A programmer's editor is a very different thing from a word processor. Most importantly, it saves your work in plain text files and it doesn't insert extra carriage returns beyond the ones you actually type (so, Microsoft Word does not qualify). A good programmer's text editor will do a lot more than this, including:

There are many text editors that have some or all of these features. The most widely used editors on UNIX systems are vi and Emacs (or a variant called XEmacs). They are also subjects of a long standing holy war. Various ``modes,'' supporting various programming languages, exist for both of them.

You are of course free to program in any editor you like (including ed). You are of course free to program in any editor you like (including ed). For this course though, I recommend XEmacs. In addition to everything mentioned above, XEmacs is also able to run programs as ``inferior processes'' (their term), allowing you to communicate with them from within the editor. The Prolog mode we will use takes advantage of this feature and offers an seamless integration with Prolog interpreters and compilers.

The disadvantage (there is no such thing as a free lunch, you know) is that XEmacs interface is quite different from anything you have probably seen. While most commands you are likely to use are accessible from menus or the toolbar, keyboard shortcuts do come handy, and XEmacs' are quite different from a usual Windows environment. Here is a list of the most used commands and their shortcuts (in Emacs-speak, C stands for Control, and M stands for Meta; the Meta key is usually bound to Alt, but Esc can be used as well: M-x stands thus for pressing (and holding) Meta/Alt and then pressing x, or pressing (and releasing) Esc and then pressing x):

Command XEmacs-speak Shortcut
Open find-file C-x C-f
Save save-buffer C-x C-s
Save as write-file C-x C-w
Copy kill-ring-save M-w
Cut kill-region C-w
Paste yank C-y
  XEmacs function call M-x function-name

On interacting with SWI-Prolog

From within XEmacs

Under the standard configuration of the lab machines, once a file with the right extension (.pl for Prolog programs) is opened, XEmacs will automatically switch to the appropriate mode (called prolog-mode; if for some reason the right mode does not fire up automatically, you can switch to it by hand by calling its name as an XEmacs function).

Once you are in the right mode, explore the mode menus ( ``Prolog,'' ``Code,'' ``Help'') for useful commands.

Outside XEmacs

Fire up your favourite editor and write your Prolog program. Save it somewhere. Let's say for the sake of discussion that you save it as ~/prolog/

Then fire up SWI Prolog, change to the directory holding your program, and issue the loading command. In Prolog, the ``change directory'' command is cd, and the ``load'' command is consult, so your interaction looks like this:

    ?- cd("~/prolog").
    ?- consult(foo).
    % foo compiled 0.00 sec, 1,960 bytes

Note that, outside XEmacs, SWI Prolog features a graphical interface (under XEmacs we rely completely on the XEmacs GUI).

Unix Documentation

The departmental lab in J118 runs Linux, which is one of the many flavours of Unix. The major difference between Linux and Windows is that one way of interaction with the system happens through a command line interface (CLI), much like the DOS prompt but much more powerful. You have however the usual window system (a bunch of them actually) at your service.

Here are some tutorials that offer a quick introduction to Unix.

next_inactive up previous
Up: Artificial Intelligence Previous: Reference Material
Stefan Bruda 2010-04-29