POP-11 is a
reflective
Reflection is the change in direction of a wavefront at an interface between two different media so that the wavefront returns into the medium from which it originated. Common examples include the reflection of light, sound and water waves. The ' ...
,
incrementally compiled programming language
A programming language is a system of notation for writing computer programs. Most programming languages are text-based formal languages, but they may also be graphical. They are a kind of computer language.
The description of a programming ...
with many of the features of an
interpreted language
In computer science, an interpreter is a computer program that directly executes instructions written in a programming or scripting language, without requiring them previously to have been compiled into a machine language program. An interprete ...
. It is the core language of the
Poplog
Poplog is an open source, reflective, incrementally compiled software development environment for the programming languages POP-11, Common Lisp, Prolog, and Standard ML, originally created in the UK for teaching and research in Artificial I ...
programming environment
Environment most often refers to:
__NOTOC__
* Natural environment, all living and non-living things occurring naturally
* Biophysical environment, the physical and biological factors along with their chemical interactions that affect an organism or ...
developed originally by the
University of Sussex
, mottoeng = Be Still and Know
, established =
, type = Public research university
, endowment = £14.4 million (2020)
, budget = £319.6 million (2019–20)
, chancellor = Sanjeev Bhaskar
, vice_chancellor = Sasha Roseneil
, ...
, and recently in the School of Computer Science at the
University of Birmingham
, mottoeng = Through efforts to heights
, established = 1825 – Birmingham School of Medicine and Surgery1836 – Birmingham Royal School of Medicine and Surgery1843 – Queen's College1875 – Mason Science College1898 – Mason Univers ...
, which hosts the main Poplog website.
POP-11 is an evolution of the language
POP-2
POP-2 (also referred to as POP2) is a programming language developed around 1970 from the earlier language POP-1 (developed by Robin Popplestone in 1968, originally named COWSEL) by Robin Popplestone and Rod Burstall at the University of Edin ...
, developed in
Edinburgh University
The University of Edinburgh ( sco, University o Edinburgh, gd, Oilthigh Dhùn Èideann; abbreviated as ''Edin.'' in post-nominals) is a public research university based in Edinburgh, Scotland. Granted a royal charter by King James VI in 1582 ...
, and features an open
stack
Stack may refer to:
Places
* Stack Island, an island game reserve in Bass Strait, south-eastern Australia, in Tasmania’s Hunter Island Group
* Blue Stack Mountains, in Co. Donegal, Ireland
People
* Stack (surname) (including a list of people ...
model (like
Forth
Forth or FORTH may refer to:
Arts and entertainment
* ''forth'' magazine, an Internet magazine
* ''Forth'' (album), by The Verve, 2008
* ''Forth'', a 2011 album by Proto-Kaw
* Radio Forth, a group of independent local radio stations in Scotla ...
, among
others
Others or The Others may refer to:
Fictional characters
* Others (A Song of Ice and Fire), Others (''A Song of Ice and Fire''), supernatural creatures in the fictional world of George R. R. Martin's fantasy series ''A Song of Ice and Fire''
* Ot ...
). It is mainly
procedural, but supports declarative language constructs, including a pattern matcher, and is mostly used for research and teaching in
artificial intelligence
Artificial intelligence (AI) is intelligence—perceiving, synthesizing, and inferring information—demonstrated by machines, as opposed to intelligence displayed by animals and humans. Example tasks in which this is done include speech re ...
, although it has features sufficient for many other classes of problems. It is often used to introduce symbolic programming techniques to programmers of more conventional languages like
Pascal
Pascal, Pascal's or PASCAL may refer to:
People and fictional characters
* Pascal (given name), including a list of people with the name
* Pascal (surname), including a list of people and fictional characters with the name
** Blaise Pascal, Fren ...
, who find POP syntax more familiar than that of
Lisp
A lisp is a speech impairment in which a person misarticulates sibilants (, , , , , , , ). These misarticulations often result in unclear speech.
Types
* A frontal lisp occurs when the tongue is placed anterior to the target. Interdental lisping ...
. One of POP-11's features is that it supports
first-class function
In computer science, a programming language is said to have first-class functions if it treats functions as first-class citizens. This means the language supports passing functions as arguments to other functions, returning them as the values from ...
s.
POP-11 is the core language of the Poplog system. The availability of the compiler and compiler subroutines at run-time (a requirement for incremental compilation) gives it the ability to support a far wider range of extensions (including run-time extensions, such as adding new data-types) than would be possible using only a
macro facility. This made it possible for (optional) incremental compilers to be added for
Prolog
Prolog is a logic programming language associated with artificial intelligence and computational linguistics.
Prolog has its roots in first-order logic, a formal logic, and unlike many other programming languages, Prolog is intended primarily ...
,
Common Lisp
Common Lisp (CL) is a dialect of the Lisp programming language, published in ANSI standard document ''ANSI INCITS 226-1994 (S20018)'' (formerly ''X3.226-1994 (R1999)''). The Common Lisp HyperSpec, a hyperlinked HTML version, has been derived fro ...
and
Standard ML
Standard ML (SML) is a general-purpose, modular, functional programming language with compile-time type checking and type inference. It is popular among compiler writers and programming language researchers, as well as in the development of the ...
, which could be added as required to support either mixed language development or development in the second language without using any POP-11 constructs. This made it possible for Poplog to be used by teachers, researchers, and developers who were interested in only one of the languages. The most successful product developed in POP-11 was the Clementine
Data-mining system, developed by ISL. After SPSS bought ISL they decided to port Clementine to C++ and Java, and eventually succeeded with great effort (and perhaps some loss of the flexibility provided by the use of an AI language).
POP-11 was for a time available only as part of an expensive commercial package (Poplog), but since about 1999 it has been freely available as part of the Open Source version of Poplog, including various additional packages and teaching libraries. An online version of
ELIZA
ELIZA is an early natural language processing computer program created from 1964 to 1966 at the MIT Artificial Intelligence Laboratory by Joseph Weizenbaum. Created to demonstrate the superficiality of communication between humans and machines, E ...
using POP-11 is available at Birmingham.
At the University of Sussex, David Young used POP-11 in combination with C and Fortran to develop a suite of teaching and interactive development tools for image processing and vision, and has made them available in the Popvision extension to Poplog.
Simple code examples
Here is an example of a simple POP-11 program:
define Double(Source) -> Result;
Source*2 -> Result;
enddefine;
Double(123) =>
That prints out:
** 246
This one includes some list processing:
define RemoveElementsMatching(Element, Source) -> Result;
lvars Index;
%
for Index in Source do
unless Index = Element or Index matches Element then
Index;
endunless;
endfor;
% -> Result;
enddefine;
RemoveElementsMatching("the", the cat sat on the mat) => ;;; outputs cat sat on mat
RemoveElementsMatching("the", the cat at onthe mat]) => ;;; outputs the cat at onmat]
RemoveElementsMatching( = cat, the cat is a big cat
The term "big cat" is typically used to refer to any of the five living members of the genus '' Panthera'', namely the tiger, lion, jaguar, leopard, and snow leopard.
Despite enormous differences in size, various cat species are quite similar ...
) => ;;; outputs is a
Examples using the POP-11 pattern matcher, which makes it relatively easy for students to learn to develop sophisticated list-processing programs without having to treat patterns as tree structures accessed by 'head' and 'tail' functions (CAR and CDR in Lisp), can be found in th
online introductory tutorial The matcher is at the heart o
Some of the powerful features of the toolkit, such as linking pattern variables to inline code variables, would have been very difficult to implement without the incremental compiler facilities.
See also
*
COWSEL
COWSEL (''COntrolled Working SpacE Language'') is a programming language designed between 1964 and 1966 by Robin Popplestone. It was based on an reverse Polish notation, RPN form of Lisp programming language, Lisp combined with some ideas from Comb ...
(aka POP-1) programming language
References
* R. Burstall, A. Collins and
R. Popplestone, ''Programming in Pop-2'' University Press, Edinburgh, 1968
* D.J.M. Davies, ''POP-10 Users' Manual'', Computer Science Report #25, University of Western Ontario, 1976
* S. Hardy and C. Mellish, 'Integrating Prolog in the Poplog environment', in ''Implementations of Prolog'', Ed., J.A. Campbell, Wiley, New York, 1983, pp 147–162
* R. Barrett, A, Ramsay and A. Sloman, ''POP-11: a Practical Language for Artificial Intelligence'', Ellis Horwood, Chicester, 1985
* M. Burton and N. Shadbolt, ''POP-11 Programming for Artificial Intelligence'', Addison-Wesley, 1987
* J. Laventhol, ''Programming in POP-11'', Blackwell Scientific Publications Ltd., 1987
* R. Barrett and A. Ramsay, ''Artificial Intelligence in Practice:Examples in Pop-11'', Ellis Horwood, Chicester, 1987.
* M. Sharples et al., ''Computers and Thought'', MIT Press, 1987. (An introduction to Cognitive Science using Pop-11. Online version referenced above.)
* James Anderson, Ed., ''Pop-11 Comes of Age: The Advancement of an AI Programming Language'', Ellis Horwood, Chichester, 1989
* G. Gazdar and C. Mellish, ''Natural Language Processing in Pop11/Prolog/Lisp'', Addison Wesley, 1989.
read online
* R. Smith, A. Sloman and J. Gibson, POPLOG's two-level virtual machine support for interactive languages, in ''Research Directions in Cognitive Science Volume 5: Artificial Intelligence'', Eds. D. Sleeman and N. Bernsen, Lawrence Erlbaum Associates, pp. 203–231, 1992. (Available as Cognitive Science Research Report 153, School of Informatics, University of Sussex).
* Chris Thornton and Benedict du Boulay, ''Artificial Intelligence Through Search'', Kluwer Academic (Paperback version Intellect Books) Dordrecht Netherlands & Norwell, MA USA (Intellect at Oxford) 1992.
* A. Sloman
Pop-11 Primer 1999 (Third edition)
External links
The Poplog.org website (including partial mirror of Free poplog web site)(currently defunct: se
its more recent copy (Jun 17, 2008)@ Internet Archive
Wayback Machine
The Wayback Machine is a digital archive of the World Wide Web founded by the Internet Archive, a nonprofit based in San Francisco, California. Created in 1996 and launched to the public in 2001, it allows the user to go "back in time" and see ...
)
An Overview of POP-11 (Primer for experienced programmers)(alt
PDF
* Waldek Hebisch produced a small collection o
programming examplesin Pop-11, showing how it can be used for symbol manipulation, numerical calculation, logic and mathematics.
Computers and Thought: A practical Introduction to Artificial Intelligenceon-line book introducing
Cognitive Science through Pop-11.
The OpenPoplog sourceforge project.Pop-11 Elizain the
poplog
Poplog is an open source, reflective, incrementally compiled software development environment for the programming languages POP-11, Common Lisp, Prolog, and Standard ML, originally created in the UK for teaching and research in Artificial I ...
system
Tutorial on Elizasince about 1976.
2-D (X) graphics in Pop-11Objectclassthe
object oriented programming
Object-oriented programming (OOP) is a programming paradigm based on the concept of "objects", which can contain data and code. The data is in the form of fields (often known as attributes or ''properties''), and the code is in the form of pro ...
extension to Pop-11 (modelled partly on
CLOS
Clos may refer to:
People
* Clos (surname)
Other uses
* CLOS, Command line-of-sight, a method of guiding a missile to its intended target
* Clos network, a kind of multistage switching network
* Clos (vineyard), a walled vineyard; used in Fran ...
and supporting
multiple inheritance
Multiple inheritance is a feature of some object-oriented computer programming languages in which an object or class can inherit features from more than one parent object or parent class. It is distinct from single inheritance, where an object or ...
).
Tutorial introductionto object oriented programming in Pop-11.
Further referencesOnline documentation on Pop-11 and PoplogOnline system documentation, including porting informationEntry for Pop-11 at HOPL (History of Programming Languages) web site
{{Authority control
Lisp programming language family
Artificial intelligence
History of computing in the United Kingdom
Science and technology in East Sussex
University of Sussex