POP-11 is a powerful reflective, incrementally compiled programming language with many of the features of an interpreted language. It is the core language of the Poplog programming environment developed originally by the University of Sussex, and recently in the [http://www.cs.bham.ac.uk/ School of Computer Science] at the
University of Birmingham which hosts [http://www.cs.bham.ac.uk/research/projects/poplog/freepoplog.html the Poplog website] .

POP-11 is an evolution of the language POP-2, developed in Edinburgh University and features an open stack model (like Forth). It is mainly procedural, but supports declarative language constructs, including a [http://www.cs.bham.ac.uk/research/projects/poplog/doc/popteach/matches pattern matcher] and is mostly used for research and teaching in Artificial Intelligence, 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, who find POP syntax more familiar than that of Lisp. One of POP-11's features is that it supports first-class functions.

Pop-11 is the core language of the Poplog system. The fact that the compiler and compiler subroutines are available at run-time (a requirement for incremental compilation) gives it the ability to support a far wider range of extensions than would be possible using only a macro facility. This made it possible for incremental compilers to be added for Prolog, Common Lisp and Standard ML, 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, or 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, as described in the entry on Poplog. 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!).

As explained in the entries for Poplog and POP-2, 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 [http://www.cs.bham.ac.uk/research/projects/poplog/freepoplog.html the Open Source version of Poplog] , including various additional packages and teaching libraries. An online version of ELIZA using Pop-11 is [http://www.cs.bham.ac.uk/research/projects/cogaff/eliza/ 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 [http://www.cs.bham.ac.uk/research/projects/poplog/freepoplog.html#popvision Popvision] extension to Poplog.

imple 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] [sat on] the mat] ) => ;;; outputs [the cat] [sat on] mat] RemoveElementsMatching(= cat, the cat is a big cat) => ;;; 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 the [http://www.cs.bham.ac.uk/research/projects/poplog/doc/popteach/matches online introductory tutorial] . The matcher is at the heart of [http://www.cs.bham.ac.uk/research/projects/poplog/packages/simagent.html the SimAgent (sim_agent) toolkit] . Some of the powerful features of the toolkit, e.g. linking pattern variables to inline code variables, would have been very difficult to implement without the incremental compiler facilities.

ee also

* COWSEL (aka POP-1) programming language
* POP-2 programming language
* Poplog programming environment

External links and downloads

* [http://www.cs.bham.ac.uk/research/poplog/freepoplog.html Free Poplog Portal]
* [http://www.poplog.org The Poplog.org website (including partial mirror of Free poplog web site)]
* [http://www.cs.bham.ac.uk/research/poplog/primer/START.html An Overview Of POP-11 (Primer for experienced programmers)]
* Waldek Hebisch produced a small collection of [http://www.math.uni.wroc.pl/~p-wyk4/pop11_en programming examples] in Pop-11, showing how it can be used for symbol manipulation, numerical calculation, logic and mathematics.
* [http://www.informatics.susx.ac.uk/books/computers-and-thought/ Computers and Thought] book introducing Cognitive Science through Pop-11 is available online.
* [http://www.cs.bham.ac.uk/research/projects/poplog/openpoplog.html The OpenPoplog sourceforge project.]
* [http://www.cs.bham.ac.uk/research/projects/poplog/packages/simagent.html The SimAgent (sim_agent) Toolkit]
* [http://www.cs.bham.ac.uk/research/projects/cogaff/eliza/ Pop-11 Eliza] in the poplog system. [http://www.cs.bham.ac.uk/research/projects/cogaff/eliza/tutorial.txt Tutorial on Eliza]
* [http://www.cs.bham.ac.uk/research/projects/cogaff/poplog-learning-environment.html History of AI teaching in Pop-11] since about 1976.
* [http://www.cs.bham.ac.uk/research/projects/poplog/figs/rclib/ 2-D (X window) graphics in Pop-11]
* [http://www.cs.bham.ac.uk/research/projects/poplog/doc/objectclasshelp/objectclass Objectclass] the object oriented programming extension to Pop-11 (modelled partly on CLOS and supporting multiple inheritance).
* [http://www.cs.bham.ac.uk/research/projects/poplog/doc/objectclassteach/objectclass_example Tutorial introduction] to object oriented programming in Pop-11.


* 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 POP-11", Addison Wesley, 1989. (Versions for Prolog and Common Lisp also available. Code for examples is available 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, Sussex University).
* 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, [http://www.cs.bham.ac.uk/research/projects/poplog/primer Pop-11 Primer] , 1999 (Third edition)

External links

* [http://www.cs.bham.ac.uk/research/poplog/doc/pophelp/poprefs Further references]
* [http://www.cs.bham.ac.uk/research/poplog/doc/ Online documentation on Pop-11 and Poplog]
* [http://www.cs.bham.ac.uk/research/poplog/sysdoc/ Online system documentation, including porting information]
* [http://hopl.murdoch.edu.au/showlanguage.prx?exp=689&language=Pop-11 Entry for Pop-11 at HOPL (History of Programming Languages) web site]

Wikimedia Foundation. 2010.

Игры ⚽ Нужно сделать НИР?

Look at other dictionaries:

  • pop — pop …   Dictionnaire des rimes

  • pop — [ pɔp ] adj. inv. • 1955, diffusé à partir de 1965; mot angl. amér., de popular « populaire » → pop art ♦ Anglic. 1 ♦ Se dit d une forme de musique populaire issue de divers genres en honneur dans les pays anglo saxons (formes de jazz, folk, rock …   Encyclopédie Universelle

  • Pop-up ad — Pop up ads or popups are a form of online advertising on the World Wide Web intended to attract web traffic or capture email addresses. It works when certain web sites open a new web browser window to display advertisements. The pop up window… …   Wikipedia

  • Pop — may refer to: Contents 1 Music and dance 2 Sports and games 3 Computing and technology …   Wikipedia

  • POP — steht für: Popkultur, eine kulturelle Strömung Popliteratur, eine Literaturgattung Popmusik, eine moderne Musikrichtung Pop Art, eine Kunstrichtung des 20. Jahrhunderts einen Monat im System des Maya Kalenders Haab ein Album der irischen Band U2 …   Deutsch Wikipedia

  • PoP — steht für: Popkultur, eine kulturelle Strömung Popliteratur, eine Literaturgattung Popmusik, eine moderne Musikrichtung Pop Art, eine Kunstrichtung des 20. Jahrhunderts einen Monat im System des Maya Kalenders Haab ein Album der irischen Band U2 …   Deutsch Wikipedia

  • POP-2 — POP 2, often referred to as POP2 was a programming language developed around 1970 from the earlier language POP 1 (originally named COWSEL) by Robin Popplestone and Rod Burstall at the University of Edinburgh. It drew roots from many sources: the …   Wikipedia

  • Pop — bezeichnet ein Album der irischen Band U2, siehe Pop (Album) einen britischen Fernsehsender, siehe Pop (Fernsehsender) einen Ort in Usbekistan, siehe Pop (Usbekistan) einen Bezirk in Usbekistan, siehe Pop (Bezirk) einen slowenienischen… …   Deutsch Wikipedia

  • POP —  Pour l’article homophone, voir Popp. Cette page d’homonymie répertorie les différents sujets et articles partageant un même nom …   Wikipédia en Français

  • PoP —  Pour l’article homophone, voir Popp. Cette page d’homonymie répertorie les différents sujets et articles partageant un même nom …   Wikipédia en Français

Share the article and excerpts

Direct link
Do a right-click on the link above
and select “Copy Link”