ⓘ CPL (programming language)

CPL (programming language)

ⓘ CPL (programming language)

CPL is a multi-paradigm programming language, that was developed in the early 1960s. It is an early ancestor of the C language via the BCPL and B languages.


1. Design

CPL was developed initially at the Mathematical Laboratory at the University of Cambridge as the "Cambridge Programming Language" and later published jointly between Cambridge and the University of London Computer Unit as the "Combined Programming Language". Christopher Strachey, David Barron and others were involved in its development. CPL was also nicknamed by some as "Cambridge Plus London" or "Christophers Programming Language". The first paper describing it was published in 1963, while it was 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, but the language never gained much popularity and seems to have disappeared without trace sometime in the 1970s.

BCPL for "Basic CPL", although originally "Bootstrap CPL" was a much simpler language based on CPL intended primarily as a systems programming language, particularly for writing compilers; it was first implemented in 1967, prior to CPLs first implementation. BCPL then led, via B, to the popular and influential C programming language.


2. Example

The function MAX as formulated by Peter Norvig:

MaxItems, ValueFunction = value of § Best, BestVal = NIL, -∞ while Items do § Item, Val = HeadItems, ValueFunctionHeadItems) if Val > BestVal then Best, BestVal:= Item, Val Items:= RestItems §⃒ 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)


3. Implementations

It is thought that CPL was never fully implemented in the 1960s, existing as a theoretical construct with some research work on partial implementations.

Peter Norvig has written for Yapps, a Python compiler-compiler a simple CPL to Python translator for modern machines.


4. Bibliography

  • University of London Institute of Computer Science and The Mathematical Laboratory, Cambridge. CPL Working Papers.
  • J. Buxton, J. C. Gray, and D. Park. CPL Elementary Programming Manual, Edition II Cambridge.
  • 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.
  • Collected papers of Christopher Strachey, section pertaining to CPL, archived at the Bodleian Library, Oxford; CSAC 71.1.80/C.136-C.184
  • integrated circuits cpl files, the Control Panel applets in Microsoft Windows CPL programming language a multi - paradigm programming language Current privilege
  • Concepts in Programming Languages Higher - Order and Symbolic Computation. 13: 11 49. doi: 10.1023 A: 1010000313106. CPL programming language Strachey
  • CLU is a programming language created at the Massachusetts Institute of Technology MIT by Barbara Liskov and her students between 1974 and 1975. While
  • COBOL Scripting language Cobra CoffeeScript ColdFusion COMAL Combined Programming Language CPL COMIT Common Intermediate Language CIL Common Lisp
  • COWSEL COntrolled Working SpacE Language is a programming language designed between 1964 and 1966 by Robin Popplestone. It was based on an RPN form
  • letter c is a general - purpose, procedural computer programming language supporting structured programming lexical variable scope, and recursion, while a
  • Programming Language CPL Curl D Distributed Application Specification Language DASL combine declarative programming and imperative programming
  • difficulties with its predecessor, Cambridge Programming Language later renamed Combined Programming Language CPL which was designed during the early 1960s
  • of programming languages spans from documentation of early mechanical computers to modern tools for software development. Early programming languages were
  • important programming languages by decade. Programming language Timeline of computing History of computing hardware History of programming languages Booth