POP-2
   HOME





POP-2
POP-2 (also called 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 Edinburgh. It drew roots from many sources: the languages Lisp and ALGOL 60, and theoretical ideas from Peter J. Landin. It used an incremental compiler, which gave it some of the flexibility of an interpreted language, including allowing new function definitions at run time and modification of function definitions while a program runs (both of which are features of dynamic compilation), without the overhead of an interpreted language. Description Stack POP-2's syntax is ALGOL-like, except that assignments are in reverse order: instead of writing a := 3; one writes 3 -> a; The reason for this is that the language has explicit notion of an '' operand stack''. Thus, the prior assignment can be written as two separate statements: 3; which ev ...
[...More Info...]      
[...Related Items...]     OR:     [Wikipedia]   [Google]   [Baidu]  


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 the language Lisp, combined with some ideas from Combined Programming Language (CPL). COWSEL was initially implemented on a Ferranti Pegasus computer at the University of Leeds and on a Stantec Zebra at the Bradford Institute of Technology. Later, Rod Burstall implemented it on an Elliot 4120 at the University of Edinburgh. COWSEL was renamed POP-1 in 1966, during summer, and development continued under that name from then on. Example code function member lambda x y comment Is x a member of list y; define y atom then *0 end y hd x equal then *1 end y tl -> y repeat up Reserved words (keywords) were also underlined in the original printouts. Popplestone performed syntax highlighting by using underscoring on a Friden Flexowriter. See also * POP-2 programming la ...
[...More Info...]      
[...Related Items...]     OR:     [Wikipedia]   [Google]   [Baidu]  


Robin Popplestone
Robin John Popplestone (9 December 1938 in Bristol – 14 April 2004 in Glasgow) was a pioneer in the fields of machine intelligence and robotics. He is known for developing the POP programming languages COWSEL (renamed POP-1), POP-2, POP-11, the related multi-language integrated development environment Poplog, and for his work on the Freddy II robot with Pat Ambler at the University of Edinburgh Artificial Intelligence laboratory. Biography Robin Popplestone was born in Bristol in 1938. After World War II his family moved to Belfast.Robin Popplestone obituary
The Scotsman, 22 April 2004
He received an honours degree in mathematics from

Rod Burstall
Rodney Martineau Burstall (11 November 1934 – 13 February 2025) was a British computer scientist who was one of four founders of the Laboratory for Foundations of Computer Science at the University of Edinburgh. Biography Burstall studied physics at the University of Cambridge, then an M.Sc. in operational research at the University of Birmingham. He worked for three years before returning to Birmingham University to earn a Ph.D. in 1966 with thesis titled ''Heuristic and Decision Tree Methods on Computers: Some Operational Research Applications'' under the supervision of N. A. Dudley and K. B. Haley. Burstall was an early and influential proponent of functional programming, pattern matching, and list comprehension, and is known for his work with Robin Popplestone on COWSEL (renamed POP-1) and POP-2, innovative programming languages developed at the University of Edinburgh around 1970, and later work with John Darlington on NPL and program transformation and with Dav ...
[...More Info...]      
[...Related Items...]     OR:     [Wikipedia]   [Google]   [Baidu]  




POP-11
POP-11 is a Reflective programming, reflective, Dynamic compilation, incrementally compiled programming language with many of the features of an interpreted language. It is the core language of the Poplog Computer programming, programming system platform, 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 (data structure), stack model (like Forth (programming language), Forth, among Stack-oriented programming, others). It is mainly Procedural programming, 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 p ...
[...More Info...]      
[...Related Items...]     OR:     [Wikipedia]   [Google]   [Baidu]  


Dynamic Compilation
Dynamic compilation is a process used by some programming language implementations to gain performance during program execution. Although the technique originated in Smalltalk,Peter L. Deutsch and Alan Schiffman. "Efficient Implementation of the Smalltalk-80 System", 11th Annual Symposium on Principles of Programming Languages, Jan 1984, pp. 297-302 the best-known language that uses this technique is Java. Since the machine code emitted by a dynamic compiler is constructed and optimized at program runtime, the use of dynamic compilation enables optimizations for efficiency not available to statically-compiled programs (i.e. those compiled by a so-called "batch compiler", as written below) except through code duplication or metaprogramming. Runtime environments using dynamic compilation typically have programs run slowly for the first few minutes, and then after that, most of the compilation and recompilation is done and it runs quickly. Due to this initial performance lag, dynamic ...
[...More Info...]      
[...Related Items...]     OR:     [Wikipedia]   [Google]   [Baidu]  


Incremental Compiler
An incremental compiler is a kind of incremental computation applied to the field of compilation. Quite naturally, whereas ordinary compilers make a so-called clean build, that is, (re)build all program modules, an incremental compiler recompiles only modified portions of a program. Definition Imperative programming In imperative programming and software development, incremental compilation takes only the ''changes'' of a known set of source files and ''updates'' any corresponding output files (in the compiler's target language, often bytecode) that may already exist from previous compilations. By effectively ''building upon'' previously compiled output files, an incremental compiler avoids the wasteful recompiling of entire source files, where most of the code remains unchanged. For most incremental compilers, compiling a program with small changes to its source code is usually near instantaneous. It can be said that an incremental compiler reduces the granularity of a language' ...
[...More Info...]      
[...Related Items...]     OR:     [Wikipedia]   [Google]   [Baidu]  


Assignment (computer Science)
In computer programming, an assignment statement sets and/or re-sets the value stored in the storage location(s) denoted by a variable name; in other words, it copies a value into the variable. In most imperative programming languages, the assignment statement (or expression) is a fundamental construct. Today, the most commonly used notation for this operation is ''x'' = ''expr'' (originally Superplan 1949–51, popularized by Fortran 1957 and C). The second most commonly used notation is ''x'' := ''expr'' (originally ALGOL 1958, popularised by Pascal). Many other notations are also in use. In some languages, the symbol used is regarded as an operator (meaning that the assignment statement as a whole returns a value). Other languages define assignment as a statement (meaning that it cannot be used in an expression). Assignments typically allow a variable to hold different values at different times during its life-span and scope. However, some languages (primarily stric ...
[...More Info...]      
[...Related Items...]     OR:     [Wikipedia]   [Google]   [Baidu]  


picture info

Lisp (programming Language)
Lisp (historically LISP, an abbreviation of "list processing") is a family of programming languages with a long history and a distinctive, fully parenthesized prefix notation. Originally specified in the late 1950s, it is the second-oldest high-level programming language still in common use, after Fortran. Lisp has changed since its early days, and many dialects have existed over its history. Today, the best-known general-purpose Lisp dialects are Common Lisp, Scheme, Racket, and Clojure. Lisp was originally created as a practical mathematical notation for computer programs, influenced by (though not originally derived from) the notation of Alonzo Church's lambda calculus. It quickly became a favored programming language for artificial intelligence (AI) research. As one of the earliest programming languages, Lisp pioneered many ideas in computer science, including tree data structures, automatic storage management, dynamic typing, conditionals, higher-order function ...
[...More Info...]      
[...Related Items...]     OR:     [Wikipedia]   [Google]   [Baidu]  




ICT 1900 Series
ICT 1900 was a family of mainframe computers released by International Computers and Tabulators (ICT) and later International Computers Limited (ICL) during the 1960s and 1970s. The 1900 series was notable for being one of the few non-American competitors to the IBM System/360, enjoying significant success in the European and British Commonwealth markets. Origins In early 1963, ICT was engaged in negotiations to buy the computer business of Ferranti. In order to sweeten the deal, Ferranti demonstrated to ICT the Ferranti-Packard 6000 (FP6000) machine, which had been developed by its Canadian subsidiary Ferranti-Packard, to a design known as Harriac that had been initiated in Ferranti by Harry Johnson and fleshed out by Stanley Gill and John Iliffe. The FP6000 was an advanced design, notably including hardware support for multiprogramming. ICT considered using the FP6000 as their medium-sized processor in the 1965–1968 timeframe, replacing the ICT 1302. Anoth ...
[...More Info...]      
[...Related Items...]     OR:     [Wikipedia]   [Google]   [Baidu]  


picture info

Programming Language
A programming language is a system of notation for writing computer programs. Programming languages are described in terms of their Syntax (programming languages), syntax (form) and semantics (computer science), semantics (meaning), usually defined by a formal language. Languages usually provide features such as a type system, Variable (computer science), variables, and mechanisms for Exception handling (programming), error handling. An Programming language implementation, implementation of a programming language is required in order to Execution (computing), execute programs, namely an Interpreter (computing), interpreter or a compiler. An interpreter directly executes the source code, while a compiler produces an executable program. Computer architecture has strongly influenced the design of programming languages, with the most common type (imperative languages—which implement operations in a specified order) developed to perform well on the popular von Neumann architecture. ...
[...More Info...]      
[...Related Items...]     OR:     [Wikipedia]   [Google]   [Baidu]  


picture info

Programming Paradigm
A programming paradigm is a relatively high-level way to conceptualize and structure the implementation of a computer program. A programming language can be classified as supporting one or more paradigms. Paradigms are separated along and described by different dimensions of programming. Some paradigms are about implications of the execution model, such as allowing Side effect (computer science), side effects, or whether the sequence of operations is defined by the execution model. Other paradigms are about the way code is organized, such as grouping into units that include both state and behavior. Yet others are about Syntax (programming languages), syntax and Formal grammar, grammar. Some common programming paradigms include (shown in hierarchical relationship): * imperative programming, Imperative code directly controls Control flow, execution flow and state change, explicit statements that change a program state ** procedural programming, procedural organized as function (c ...
[...More Info...]      
[...Related Items...]     OR:     [Wikipedia]   [Google]   [Baidu]  


Peter J
Peter may refer to: People * List of people named Peter, a list of people and fictional characters with the given name * Peter (given name) ** Saint Peter (died 60s), apostle of Jesus, leader of the early Christian Church * Peter (surname), a surname (including a list of people with the name) Culture * Peter (actor) (born 1952), stage name Shinnosuke Ikehata, a Japanese dancer and actor * ''Peter'' (1934 film), a film directed by Henry Koster * ''Peter'' (2021 film), a Marathi language film * "Peter" (''Fringe'' episode), an episode of the television series ''Fringe'' * ''Peter'' (novel), a 1908 book by Francis Hopkinson Smith * "Peter" (short story), an 1892 short story by Willa Cather * ''Peter'' (album), a 1972 album by Peter Yarrow * ''Peter'', a 1993 EP by Canadian band Eric's Trip * "Peter", 2024 song by Taylor Swift from '' The Tortured Poets Department: The Anthology'' Animals * Peter (Lord's cat), cat at Lord's Cricket Ground in London * Peter (chief mouse ...
[...More Info...]      
[...Related Items...]     OR:     [Wikipedia]   [Google]   [Baidu]