CPL (programming language)

From Wikipedia, the free encyclopedia
Jump to: navigation, search
CPL
Paradigm(s)

multi-paradigm:

procedural, imperative, structured, functional
Designed by Christopher Strachey et al.
Appeared in 1963
Influenced by ALGOL 60
Influenced BCPL, POP-2

CPL (from Combined Programming Language and Cambridge Programming Language before that) is a multi-paradigm programming language, that was developed in the early 1960s.

Design[edit]

CPL was developed jointly between the Mathematical Laboratory at the University of Cambridge and the University of London Computer Unit during the 1960s hence CPL gained the nickname "Cambridge Plus London".[1] The collaborative effort was responsible for the "Combined" in the name of the language (previously, the name was Cambridge Programming Language). Christopher Strachey and David Barron were involved (for others see paper). In 1963 (when the paper was published) it was concurrently being implemented on the Titan Computer at Cambridge and the Atlas Computer at London.

It was heavily influenced by ALGOL 60, but instead of being extremely small, elegant and simple, CPL was intended for a wider application area than scientific calculations and was therefore much more complex and not as elegant as ALGOL 60. CPL was a big language for its time. CPL attempted to go beyond ALGOL to include industrial process control, business data processing and possibly some early command line games. CPL was intended to allow low-level programming and high level abstractions using the same language.

However, CPL was only implemented very slowly. The first CPL compiler was probably written about 1970,[2] but the language never gained much popularity and seems to have disappeared without trace sometime in the 1970s.

A later language based on CPL, called BCPL (for "Basic CPL", although originally "Bootstrap CPL"), was a much simpler language intended primarily as a systems programming language, particularly for writing compilers. BCPL then led, via B, to the popular and influential C programming language.

Example[edit]

The function MAX as formulated by Peter Norvig:[3]

Max(Items, ValueFunction) = value of
§ (Best, BestVal) = (NIL, -∞)
while Items do §
(Item, Val) = (Head(Items), ValueFunction(Head(Items)))
if Val > BestVal then (Best, BestVal) := (Item, Val)
Items := Rest(Items) §⃒
result is Best §⃒

(The closing symbol to match the opening symbol "§" is a "§" with a vertical stroke through it. That symbol can be composed in Unicode as "§⃒", which is § (U+00A7, SECTION SIGN) composed with ⃒ (U+20D2, COMBINING LONG VERTICAL LINE OVERLAY), but it may not display correctly on your browser.)

See also[edit]

References[edit]

Bibliography[edit]

  • Collected papers of Christopher Strachey, section pertaining to CPL, archived at the Bodleian Library, Oxford; CSAC 71.1.80/C.136-C.184
  • D. W. Barron, J. N. Buxton, D. F. Hartley, E. Nixon, and C. Strachey. "The main features of CPL" The Computer Journal 6:2:134-143 (1963), available online.