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)