Jump to content
 







Main menu
   


Navigation  



Main page
Contents
Current events
Random article
About Wikipedia
Contact us
Donate
 




Contribute  



Help
Learn to edit
Community portal
Recent changes
Upload file
 








Search  

































Create account

Log in
 









Create account
 Log in
 




Pages for logged out editors learn more  



Contributions
Talk
 



















Contents

   



(Top)
 


1 Simple code examples  





2 See also  





3 References  





4 External links  














POP-11







Add links
 









Article
Talk
 

















Read
Edit
View history
 








Tools
   


Actions  



Read
Edit
View history
 




General  



What links here
Related changes
Upload file
Special pages
Permanent link
Page information
Cite this page
Get shortened URL
Download QR code
Wikidata item
 




Print/export  



Download as PDF
Printable version
 
















Appearance
   

 






From Wikipedia, the free encyclopedia
 


POP-11
ParadigmMulti-paradigm: structured, reflective, procedural, functional, declarative
FamilyLisp: POP
Designed byRobin Popplestone, Steve Hardy, Chris Mellish, Aaron Sloman, John Williams, Robert Duncan, Simon Nichols, John Gibson
DevelopersUniversity of Sussex
Systems Designers Ltd.
Integral Solutions Ltd.
University of Birmingham
First appeared1975; 49 years ago (1975)
Stable release

16 / January 2020; 4 years ago (2020-01)

Typing disciplinedynamic
Implementation languagePOP-11
PlatformPDP-11, VAX, SPARC, IA-32, PowerPC, x86-64
OSCross-platform: VMS, Unix, Linux, Mac OS X, Windows
LicenseProprietary (1975–1999)
Open-source (1999–present): MITXFree86
Websitewww.cs.bham.ac.uk/research/projects/poplog/poplog.info.html
Major implementations
AlphaPop, Basic Pop, Pop-9X, Poplog, Spice
Influenced by
POP-2

POP-11 is a 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 School of Computer Science at the University of Birmingham, which hosts the main Poplog website.

POP-11 is an evolution of the language POP-2, developed in Edinburgh University, and features an open stack model (like Forth, among others). It is mainly procedural, but supports declarative language constructs, including a 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 availability of the compiler and compiler subroutines at run-time (a requirement for incremental compiling) 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, 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, 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 renamed Clementine to SPSS Modeler and decided to port it 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 software version of Poplog, including various added packages and teaching libraries. An online version of ELIZA 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[edit]

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 online introductory tutorial. The matcher is at the heart of the SimAgent (sim_agent) toolkit. 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[edit]

References[edit]

External links[edit]


Retrieved from "https://en.wikipedia.org/w/index.php?title=POP-11&oldid=1215907917"

Categories: 
Lisp programming language family
Artificial intelligence
History of computing in the United Kingdom
Science and technology in East Sussex
University of Sussex
Hidden categories: 
Wikipedia external links cleanup from December 2021
Use dmy dates from April 2022
Use British English from March 2024
Official website not in Wikidata
Articles with J9U identifiers
Articles with LCCN identifiers
 



This page was last edited on 27 March 2024, at 21:35 (UTC).

Text is available under the Creative Commons Attribution-ShareAlike License 4.0; additional terms may apply. By using this site, you agree to the Terms of Use and Privacy Policy. Wikipedia® is a registered trademark of the Wikimedia Foundation, Inc., a non-profit organization.



Privacy policy

About Wikipedia

Disclaimers

Contact Wikipedia

Code of Conduct

Developers

Statistics

Cookie statement

Mobile view



Wikimedia Foundation
Powered by MediaWiki