CPL(프로그래밍 언어)
CPL (programming language)| 패러다임 | 다중 패러다임: 절차적, 필수적, 구조적, 기능적 |
|---|---|
| 설계자 | 크리스토퍼 스트레이치 외 연구진 |
| 첫 등장 | 1963년; 전 ( |
| 영향을 받은 | |
| 알골 60 | |
| 영향받은 | |
| BCPL, POP-2 | |
CPL(Combined Programming Language)은 1960년대 초에 개발된 다중 패러다임 프로그래밍 언어다.BCPL과 B언어를 통한 C언어의 초기 조상이다.null
디자인
CPL은[1] 처음에 캠브리지 대학교의 수학 연구소에서 "캠브리지 프로그래밍 언어"로 개발되었고, 후에 캠브리지와 런던 대학교 컴퓨터 유닛 사이에 "통합 프로그래밍 언어"로 공동으로 출판되었다.크리스토퍼 스트레이치, 데이비드 배론 등이 그 개발에 관여했다. (CPL은 일부로부터 "캠브리지 플러스 런던"[2] 또는 "크리스토퍼의 프로그래밍 언어"[3]라는 별명도 얻었다.)이것을 설명하는 첫 번째 논문은 1963년에 출판되었는데, 케임브리지의 타이탄 컴퓨터와 런던의 아틀라스 컴퓨터에서 시행되고 있었다.null
ALGOL 60의 영향을 많이 받았으나 극히 작고 우아하고 단순하기보다는 CPL은 과학적인 계산보다 넓은 적용영역을 위한 것이었으며 따라서 훨씬 복잡하고 ALGOL 60처럼 우아하지 않았다. CPL은 그 시대에는 큰 언어였다.CPL은 ALGOL을 넘어 산업 프로세스 제어, 비즈니스 데이터 처리 및 일부 초기 커맨드 라인 게임을 포함하려고 시도했다.[4]CPL은 동일한 언어를 사용하는 낮은 수준의 프로그래밍과 높은 수준의 추상화를 허용하기 위한 것이었다.null
그러나 CPL은 매우 느리게만 구현되었다.최초의 CPL 컴파일러는 아마도 1970년대에 쓰여졌을 것이지만,[5] 그 언어는 큰 인기를 얻은 적이 없고 1970년대 어느 때쯤 흔적도 없이 사라진 것 같다.null
BCPL("Basic CPL"의 경우, 비록 원래 "Bootstrap CPL"은 주로 컴파일러를 쓰는 시스템 프로그래밍 언어로서 의도된 CPL에 기반한 훨씬 단순한 언어였다;[6] 그것은 CPL의 첫 구현 전인 1967년에 처음 구현되었다.그 후 BCPL은 B를 통해 인기 있고 영향력 있는 C 프로그래밍 언어로 이끌었다.null
예
Peter Norvig가 공식화한 MAX 함수:[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 §⃒
(열림 기호 "§"와 일치하는 닫힘 기호는 그것을 통과하는 수직 스트로크가 있는 "§"이다.유니코드에서는 "§197"이지만, 그것은 많은 시스템에서 올바르게 표시되지 않는다.)null
구현
CPL은 1960년대에 완전히 구현된 적이 없다고 생각되며, 일부 부분 구현에 관한 연구 작업이 있는 이론적 구성물로 존재한다.[7]null
Peter Norvig는 현대의 기계들을 위한 간단한 CPL to Python 번역기를 (Yapps, Python 컴파일러-컴파일러) 썼다.[5][8]null
참고 항목
참조
- ^ Barron, D. W.; Buxton, J. N.; Hartley, D. F.; Nixon, E.; Strachey, C. (1963-08-01). "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 2013-08-18.
- ^ Jensen, Richard (December 9, 2020). ""A damn stupid thing to do"—the origins of C". Ars Technica. Retrieved December 10, 2020.
- ^ Yadav, P. (2005). Computer and Languages. Discovery Publishing House. ISBN 978-81-8356-041-2.
- ^ a b c Norvig, Peter (August 23, 2011). "Prescient but Not Perfect: A Look Back at a 1966 Scientific American Article on Systems Analysis". Scientific American Blog Network. Retrieved December 10, 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.
- ^ Norvig, Peter. "Complete Annotated Checkers Program". norvig.com. Retrieved 11 June 2021.
참고 문헌 목록
- BCPL이 CPL, Martin Richards에서 어떻게 발전했는가 [1]
- 옥스퍼드 보들리언 라이브러리에 보관된 CPL 관련 섹션 크리스토퍼 스트레이치의 논문 수집; CSAC 71.1.80/C.136-C.184
- D. W. Barron, J. N. Buxton, D. F. Hartley, E. Nixon, C.스트레이치."CPL의 주요 특징" 컴퓨터 저널 6:2:134-143(1963)은 온라인에서 이용할 수 있다.
- J. Buxton, J. C.회색, 그리고 D.Park. CPL 초등 프로그래밍 설명서, Edition II(Cambridge).
- 런던 대학교 컴퓨터 과학 연구소와 케임브리지의 수학 연구소.CPL 작업 용지.