[comp.lang.prolog] PCE -- Prolog, User Interfaces, Graphics and OOP

anjo@swivax.UUCP (Anjo Anjewierden) (05/31/89)

Below is a short description and licensing details of PCE.  PCE is
an object-oriented programming system which runs concurrently with
symbolic languages like Prolog.  PCE facilitates the development
of window and graphics based user interfaces in Prolog.

DESCRIPTION

The development of PCE/Prolog was motivated by the desire to be able
to develop advanced user interfaces for Prolog applications.

PCE/Prolog is a programming environment where PCE provides the user
interface capabilities and Prolog the language in which an application
is developed.  PCE is defined as a virtual machine with three
instructions: creating an object (e.g. a window, circle, button),
invoking behaviour on an object (e.g. opening a window, filling a
circle with a fill pattern), and obtaining information from an object
(e.g. the size of a window, radius of a circle).  Prolog, or any other
symbolic language, just needs to provide the language constructs that
interface to the PCE virtual machine.

An example program that creates a graphics window and draws a circle
in it is:

    ?-	new(@p, picture('Graphics Window')),	% create window
	send(@p, open),				% display window
	new(@c, circle(50)),			% create circle
	send(@p, display, @c, point(100,100)).	% display circle in window

where new/2 creates objects and send/2.. invokes behaviour.  The @
symbol indicates object names.

User actions on objects on the display can be associated with Prolog
predicates by specifying a message.  For example, a software button
created as follows:

	button('Hello', message(@prolog, hello))

would invoke the Prolog predicate hello/0 when pressed by the user.

FUNCTIONALITY PROVIDED

PCE contains the following types of objects:  '*', '+', '-', '/', '=',
'?', area, arrow, attribute, behaviour, bitmap, box, browser, button,
chain, circle, class, connection, constraint, cursor, date, dialog,
dict, dict_item, directory, editor, ellipse, event, expression, figure,
file, filter, filter_group, filterthing, font, fragment, frame,
graphical, handle, handler, handler_group, hash_table, hyper, identity,
interceptor, item, label, line, link, macro, mark, menu, menu_bar,
menu_item, message, node, number, object, pce, percent, picture, point,
popup, prolog, real, recogniser, region, relation, sheet, size, slider,
spatial, string, style sunitem, table, text, text_buffer, text_item,
timer, tree, variable, vector, view, and window.

The functionality is either related to user interface development and
graphics or capabilities that would be too slow when written directly
in Prolog (e.g. hash tables, string handling).  PCE provides facilities
for creating dialog boxes, a hierarchical graphics system, text editing
in graphics windows, graphical constraints, loading and saving of
objects and PostScript generation of images.  The total functionality
is roughly equivalent to 1500 predicates.

HARDWARE AND SOFTWARE REQUIREMENTS

PCE currently only runs on Sun Workstations as it uses the SunView
windowing system.  The distribution tape contains Sun-3/SunOs 3.x,
Sun-3/SunOs 4.0 and Sun-4/SunOs 4.0 versions.  A minimum of 8Mb of
memory is recommended.

PCE is designed to run with *any* symbolic language, provided that the
language has an interface to C.  Language implementors interested
in integrating PCE with their language or dialect should ask for a
paper entitled:

	Anjo Anjewierden and Jan Wielemaker,
	"Interfacing PCE-3 to Any Symbolic Language",
	University of Amsterdam, UvA-C1-TR-002.

which describes how it is done.  Note that using PCE as a user interface
development system is a very cheap way to be able to develop fancy
user interfaces for new programming languages.  Interfacing PCE to
other languages takes about 1-2 days.

The distribution tape includes a Prolog implementation such that PCE
may be run without acquiring a Prolog or writing an interface between
PCE and some language.

CONTENTS OF DISTRIBUTION

The distribution contains the following software (1/4 inch Sun cartridge),
object code only:

SWI-Prolog 1.2
      SWI-Prolog is included for institutions that do not have one of
      the Prologs mentioned below and still want to run PCE.  SWI is a
      WAM-based Prolog compiler.  Edinburgh compatible, modules,
      history facility, the usual built-in predicates.  The author
      offers a bottle of brandy for anyone who finds 10 bugs in the
      system and/or library predicates.  [This is not a cheap way to
      get drunk, the highest score so far is 3 bugs and the total of
      all users is 8 bugs.]

PCE-3.6
      The current version of PCE.

PCE/Prolog example programs, and predicates.

PCE/SWI 1.2, PCE/BIM_Prolog 2.4 and PCE/Quintus Prolog 2.4 interfaces.
      These interfaces allow PCE to be run with the mentioned Prolog
      systems.

The distribution contains the following documentation:

Jan Wielemaker, SWI-Prolog 1.2 Reference Manual, 84 pages.
      Describes the details of using SWI-Prolog, a standard Prolog
      text is required to learn about the Prolog language itself.

Anjo Anjewierden and Jan Wielemaker, PCE-3.6 Reference Manual, 204 pages.
      Describes all functionality provided by PCE in reference fashion.

Anjo Anjewierden and Jan Wielemaker, PCE-3.6 User's Guide, 123 pages.
      Contains a description of the concepts underlying PCE, and how
      PCE/Prolog programs are developed.  Sections cover:
      Object-Oriented Programming, Principle Predicates, Programming
      in PCE, Tutorial and Example Programs and Theoretical Considerations.

These documents are publicly available without the software.

LICENSING DETAILS

PCE licenses are available for academic institutions.  No support is
given, although we encourage users to provide feedback that can
improve both software and documentation.  Subsequent enhanced versions
will be made available if and when the need arises.

The licensing scheme is identical to that of Edinburgh C-Prolog.  Your
institution is required to sign a licensing agreement with the
University of Amsterdam and pay a fee of 250 ECU (European Currency
Units; approx. US$ 255).

ACKNOWLEDGEMENTS

The development of PCE was part funded by the Commission of the
European Communities under contract ESPRIT Project 1098.  Partners
in P1098 are: STC, CSI, SD, NTE, KBSC of TRMC and UvA.

FURTHER DETAILS

People just interested in finding out what PCE is about can ask Saskia
van Loo (vanloo@swivax.uucp) for a copy of the PCE User's Guide.

Further details:

	Anjo Anjewierden, (PCE:        anjo@swivax.uucp)
	Jan Wielemaker,   (SWI-Prolog: jan@swivax.uucp)

	SWI, University of Amsterdam,
	Herengracht 196,
	1016 BS  Amsterdam,
	The Netherlands.

(I recently learned that my responses to mail about the topics above
have been lost due to an incorrectly configured mail-system.  I have
tried to repeat the messages but am not entirely sure whether everyone
got a reply.  Please try again if you haven't received anything -- Anjo)