From: Aaron Sloman
Subject: Second edition of Pop-11 Primer
Date: 
Message-ID: <4gnk1q$9qe@percy.cs.bham.ac.uk>
The second edition of the Pop-11 Primer is now available, as outlined
below. The Primer is an introduction to the language Pop-11, intended
for readers who already have some programming experience. It is
available free by ftp, or at approximately cost price in paper form.

What is Pop-11?

It is a revised extended version of the language Pop-2 which was the
main AI language used in Edinburgh in the early 70s, based on a
stack-based language invented by Robin Popplestone.

Pop-11 was the name given to a subset of Pop-2 implemented by Steve
Hardy at Sussex University, on a DEC PDP-11/40 running Unix, around
1976, and used for teaching and research in AI at Sussex and various
other universities.

Later, around 1981, Pop-11 was ported (by John Gibson) to VAX VMS, then
to VAX Unix, and much extended. An incremental compiler for Prolog was
added (originally implemented by Chris Mellish) and the combined system
was called Poplog.

Later a version of Common Lisp was added and later still Standard ML.
All the Poplog languages are incrementally compiled, not interpreted.

Poplog (including all the above languages as optional extensions) has
been ported to various other machines running Unix, including Suns,
MIPS, SGI, HP, Digital Alpha (Unix and VMS). Poplog is owned by Sussex
University, but is now a commercial product, distributed internationally
by Integral Solutions Ltd. (Address below.)

It was recently ported to Linux on a PC, and there's a FREE version of
Linux Poplog available by ftp from Sussex University at

    ftp://ftp.cogs.susx.ac.uk/pub/poplog/poplog15.0

(This is a full implementation of Poplog and includes all the above
languages and the Poplog X window graphical interface. The free version
has a memory limit, but it is still perfectly usable for
teaching/learning AI, etc. Minimum requirement 486 with 8Mbytes -
though it is better with more memory.)

Pop-11 remains the core language of Poplog. It is an incrementally
compiled (not interpreted) Lisp-like language as far as its power is
concerned (including a CLOS-like object oriented extension), but the
syntax is more in the style of Pascal, so Lisp devotees will hate it and
those who hate Lisp brackets like it!

E.g. here's an iterative definition of a membership testing procedure
that takes an item, a list and an equality testing procedure, and
returns either false or the matching item found in the list.

    define member_pred(item, list, test_eq) -> result;
        lvars element;
        for element in list do
            if test_eq(item, element) then
                element -> result;
                return();
            endif
        endfor;
        false -> result
    enddefine;

Here's the recursive version in functional style, also in Pop-11

    define member_pred(item, list, test_eq);
        if list == [] then
            false
        elseif test_eq( item, hd(list) ) then
            item
        else
            member_pred(item, tl(list), test_eq)
        endif
    enddefine;

(Many of the lisp-like features of Pop-11 are closer to Scheme than to
Common Lisp. E.g. in Pop-11, as in Scheme, there's no distinction
between function values and ordinary values of variables.)


More summary information about Pop-11 and Poplog can be found in Adrian
Howard's WEB page overviews at Sussex University:
    http://www.cogs.susx.ac.uk/users/adrianh/pop11.html
    http://www.cogs.susx.ac.uk/users/adrianh/poplog.html

There's a Pop-FAQ list maintained by Ian Rogers at Sussex University
    http://www.cogs.susx.ac.uk/users/ianr/popfaq.txt

and a historical note on the early development of the Pop language by
Robin Popplestone, its original inventor, now at UMASS in Amherst

    http://piglet.cs.umass.edu:4321/~pop/pop_development.html

Various books on Pop-11 have been published, but they are all now out of
date. The only complete documentation is in the online REF and HELP
files in the Poplog system (included in the free Linux Poplog).

The new Pop-11 Primer gives an up to date overview of the main features
of the language as it is in Poplog Version 15 (excluding some of the
more sophisticated facilities, e.g. tools for implementing incremental
compilers, the external language interface, operating system interface,
pipes, sockets, signals, timers, file manipulation, lightweight
processes, etc.) Main headings

 -- INTRODUCTION TO SECOND EDITION (Jan 1996)
 -- -- FOR NEW USERS: A TASTE OF POP-11
 -- POPLOG INFORMATION AND FTP SITES
 -- PREFACE TO THE FIRST EDITION (Sept 1994)
 -- CHAPTER.1: INTRODUCTION --- THE ROOMS EXAMPLE
 -- CHAPTER.2: INTRODUCTION TO THE SYNTAX AND SEMANTICS OF POP-11
 -- CHAPTER.3: PROCEDURES AND THE STACK
 -- CHAPTER.4: PROCEDURES IN POP-11
 -- CHAPTER.5: NUMERICAL AND LOGICAL FACILITIES IN POP-11
 -- CHAPTER.6: LIST PROCESSING IN POP-11
 -- CHAPTER.7: THE POP-11 PATTERN MATCHER AND DATABASE
 -- CHAPTER.8: AN AI APPLICATION: A GENERAL PROBLEM SOLVER
 -- CHAPTER.9: RECORDS, VECTORS AND OBJECTCLASS

The Primer also includes many pointers into the online Poplog
documentation, so that missing details can be followed up.


HOW TO GET THE POP-11 PRIMER

On-line versions can be got from the Poplog ftp site at the University
of Birmingham (England) in the poplog ftp directory

    ftp://ftp.cs.bham.ac.uk/pub/dist/poplog/

In the teach/ subdirectory is a plain text version for online browsing
(17722 lines long):

        poplog/teach/primer

A compressed version of that is in the poplog/ directory
        poplog/primer.Z

There are three other versions:

        poplog/primer.tex.Z

        Compressed version of latex file semi-automatically generated
        from the plain text version. This can be used to generate
        html if you have the latex2html program, or to generate a
        differently formatted postscript version

        poplog/primer.ps.Z
        Compressed postcript version based on latex formatted version of
        the Pop-11 primer. (May have some formatting oddities).
        293 pages (A4 size)

        poplog/primer2.ps.Z
        This is postscript for a "reduced" version printing two pages
        side by side in landscape mode. 147 pages (A4 size)

A hard copy (soft-bound) version of the Primer is available at
approximately cost price in the reduced format, two pages per sheet:

    Price 5 UK pounds
        Plus postage and packing
            UK      1 pound
            non-UK  2 pounds

Orders should be sent to:

        The Librarian, School of Computer Science,
        The University of Birmingham,
        Birmingham B15 2TT, England

        Email: ·········@cs.bham.ac.uk,
        Phone: +44 121 414 3735         Fax: +44 121 414 4281

    (Price given here was correct Feb 1995. Later it may be out of date:
    check with the librarian.)

NOTE: The primer may be freely redistributed. Anyone who wishes to make
printed copies available may do so. I would like to be informed however.
(I have no plans for commercial publication.)

ADDITIONAL POP-11 TEACH FILES AND UTILITIES
Anyone using Pop-11 for teaching may find some of the contents of the
Birmingham teach subdirectory and other subdirectories useful. A subset
is available in a gzipped tar file

    ftp://ftp.cs.bham.ac.uk/pub/dist/poplog/bhamteachtar.gz

Comments and suggestions welcome.

Enquiries about Poplog and extensions to Poplog (Clementine -- a
data-mining package, Hipworks -- an authoring package for online
teaching material, Oracle interface, etc.) should be sent to:

    Integral Solutions Limited
    Berk House
    Basing View
    Basingstoke
    Hants RG21 4RG, UK

        Tel. +44 (0)1256 55899
        Fax. +44 (0)1256 63467

        Email:  ···@isl.co.uk

Disclaimer: Although I used to be involved in development of Poplog, I
now have no formal connection with ISL or Sussex University, and receive
no commission, royalty, etc. I do use Pop-11 for teaching and research,
however, and the Poplog editor VED for everything.

Aaron
---
-- 
Aaron Sloman, ( http://www.cs.bham.ac.uk/~axs )
School of Computer Science, The University of Birmingham, B15 2TT, England
EMAIL   ········@cs.bham.ac.uk
Phone: +44-121-414-4775 (Sec 3711)       Fax:   +44-121-414-4281