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 Design  





2 Example  





3 Implementations  





4 See also  





5 References  





6 Bibliography  














CPL (programming language)






Čeština
Deutsch
Español
فارسی
Français

Ido
Italiano

Mirandés

Polski
Português
Русский
Suomi
Svenska


 

Edit 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
 


CPL
ParadigmMulti-paradigm: procedural, imperative, structured, functional
Designed byChristopher Strachey et al.
First appeared1963; 61 years ago (1963)
Influenced by
ALGOL 60
Influenced
BCPL

CPL (Combined Programming Language) is a multi-paradigm programming language developed in the early 1960s. It is an early ancestor of the C language via the BCPL and B languages.

Design

[edit]

CPL[1] 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" (CPL was also nicknamed by some as "Cambridge Plus London"[2] or "Christopher's Programming Language"[3]). Christopher Strachey, David Barron and others were involved in its development. 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.[4] 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,[5] 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;[6] it was first implemented in 1967, prior to CPL's first implementation. BCPL then led, via B, to the popular and influential C programming language.

Example

[edit]

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

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 section block symbol used here (̸§) is an approximation of the original symbol, in which the cross stroke is vertical. This is available in Unicode as §⃒ but does not display correctly on many systems.

Implementations

[edit]

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

Peter Norvig has written (for Yapps, a Python compiler-compiler) a simple CPL to Python translator for modern machines.[5][9]

See also

[edit]

References

[edit]
  1. ^ Barron, D. W.; Buxton, J. N.; Hartley, D. F.; Nixon, E.; Strachey, C. (1 August 1963). "The Main Features of CPL". The Computer Journal. 6 (2): 134–143. doi:10.1093/comjnl/6.2.134. ISSN 0010-4620.
  • ^ "Clive Feather on CPL and BCPL". Lysator.liu.se. Retrieved 18 August 2013.
  • ^ Jensen, Richard (9 December 2020). ""A damn stupid thing to do"—the origins of C". Ars Technica. Retrieved 10 December 2020.
  • ^ Yadav, P. (2005). Computer and Languages. Discovery Publishing House. ISBN 978-81-8356-041-2.
  • ^ a b c Norvig, Peter (23 August 2011). "Prescient but Not Perfect: A Look Back at a 1966 Scientific American Article on Systems Analysis". Scientific American Blog Network. Retrieved 10 December 2020.
  • ^ Mitchell, John C.; Apt, Krzysztof (2003). Concepts in Programming Languages. Cambridge University Press. ISBN 978-0-521-78098-8.
  • ^ Coulouris, G. F. (1 January 1968). "The London CPL1 compiler". The Computer Journal. 11: 26–30. doi:10.1093/comjnl/11.1.26.
  • ^ Coulouris, George (2013). "Computer Resurrection Issue 62 / The Compiler Compiler - Reflections of a User 50 Years On / The CPL1 Compiler". Computer Conservation Society. Retrieved 3 May 2023.
  • ^ Norvig, Peter. "Complete Annotated Checkers Program". norvig.com. Retrieved 11 June 2021.
  • Bibliography

    [edit]
    Retrieved from "https://en.wikipedia.org/w/index.php?title=CPL_(programming_language)&oldid=1228159121"

    Categories: 
    History of computing in the United Kingdom
    Procedural programming languages
    Programming languages created in 1963
    Structured programming languages
    University of Cambridge Computer Laboratory
    Hidden categories: 
    Articles with short description
    Short description is different from Wikidata
    Use dmy dates from April 2022
     



    This page was last edited on 9 June 2024, at 19:26 (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