맨위로가기

CPL (프로그래밍 언어)

"오늘의AI위키"는 AI 기술로 일관성 있고 체계적인 최신 지식을 제공하는 혁신 플랫폼입니다.
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.

1. 개요

CPL (Combined Programming Language)은 1960년대 케임브리지 대학교 수학 연구소와 런던 대학교 컴퓨터 유닛의 공동 개발을 통해 탄생한 프로그래밍 언어이다. ALGOL 60의 영향을 받았지만, 과학적 프로그래밍과 상용 프로그래밍 모두를 아우르는 더 넓은 응용 분야를 목표로 하여 복잡하게 설계되었다. CPL은 실용적인 컴파일러 개발의 어려움과 1970년대의 자연 소멸로 인해 널리 사용되지는 못했지만, BCPL, B 언어를 거쳐 오늘날 널리 사용되는 C 언어에 큰 영향을 미쳤다.

더 읽어볼만한 페이지

  • 구조적 프로그래밍 언어 - 베릴로그
    베릴로그는 디지털 시스템 모델링 및 설계를 위한 하드웨어 기술 언어로서, IEEE 표준으로 발전해 왔으며, 모듈 계층 구조, 동시성, 순차적 구문, 다양한 연산자, 4치 논리 등의 특징과 C 언어와 유사한 문법 구조를 갖는다.
  • 구조적 프로그래밍 언어 - 알골 (프로그래밍 언어)
    알골은 1950년대 후반 유럽 학자들이 개발한 명령형 프로그래밍 언어로서, BNF 표기법으로 문법이 기술되고 구조화된 프로그래밍 형태를 갖추어 이후 여러 언어에 영향을 주었으며, 특히 알골 60은 재귀 호출 지원으로 소프트웨어 모듈화와 컴퓨터 범용화에 기여하고 프로그래밍 개념 표준 용어 제공에 중요한 역할을 했다.
  • 1963년 도입 - 삼양라면
    삼양라면은 1963년 출시된 대한민국 최초의 인스턴트 라면으로, 식량난 해소를 위해 개발되었으며, 저렴한 가격과 간편함으로 큰 인기를 얻었으나 1989년 쇠기름 사건으로 타격을 입었고, 현재는 다양한 라인업으로 국내 라면 시장에서 상위권을 유지하며 출시 초기부터 2018년까지 약 110억 개가 판매되었다.
  • 1963년 도입 - 사이클롭스 (마블 코믹스)
    사이클롭스는 마블 코믹스 X-맨 시리즈의 돌연변이 슈퍼히어로이자 팀 리더로서, 눈에서 강력한 광선을 발사하는 능력을 지녔지만 통제에 어려움을 겪으며, 프로페서 X의 지도 아래 리더로 성장하면서도 논란과 갈등을 겪는 복잡한 인물이다.
  • 절차적 프로그래밍 언어 - C (프로그래밍 언어)
    C는 하드웨어 제어와 이식성이 뛰어난 고급 절차적 프로그래밍 언어로서, 다양한 분야에서 사용되며 후속 언어에 영향을 주었고, 성능과 효율성이 높지만 안전성 문제 개선이 필요한 언어이다.
  • 절차적 프로그래밍 언어 -
    펄은 래리 월이 개발한 텍스트 조작에 강점을 가진 다목적 프로그래밍 언어이며, 1987년 펄 1.0이 처음 공개된 이후 여러 버전 업데이트를 거쳐 객체 지향 프로그래밍과 유니코드 지원 기능을 추가했고, 현재 펄 5가 널리 사용되며 CPAN을 통해 방대한 모듈 생태계를 제공한다.
CPL (프로그래밍 언어) - [IT 관련 정보]에 관한 문서
기본 정보
종류프로그래밍 언어
패러다임다중 패러다임 프로그래밍: 절차적 프로그래밍, 명령형 프로그래밍, 구조적 프로그래밍, 함수형 프로그래밍
발표 연도1963년
설계자크리스토퍼 스트래치 외
영향 받은 언어ALGOL 60
영향을 준 언어BCPL

2. 역사

CPL(Combined Programming Language)은 1960년대 초 케임브리지 대학교 수학 연구소와 런던 대학교 컴퓨터 유닛의 공동 프로젝트로 개발되었다.[1][10][12] 처음에는 "케임브리지 프로그래밍 언어"로 불렸으나, 이후 "결합 프로그래밍 언어"로 명명되었다.[1] "케임브리지 플러스 런던"(Cambridge Plus London)이라는 별칭으로도 불렸다.[2][13] 크리스토퍼 스트레이치, 데이비드 배런 등이 개발에 참여했다.[1]

1963년에 CPL을 설명하는 첫 번째 논문이 출판되었으며,[1] 당시 케임브리지의 타이탄 컴퓨터와 런던의 아틀라스 컴퓨터에서 구현되었다.[1]

CPL은 ALGOL 60의 영향을 많이 받았지만, 과학적 계산뿐만 아니라 산업 공정 제어, 비즈니스 데이터 처리, 초창기 명령 줄 게임 등 더 넓은 응용 분야를 목표로 했기 때문에 ALGOL 60보다 훨씬 더 복잡했다.[4] CPL은 동일한 언어를 사용하여 저수준 프로그래밍과 고수준 추상화를 모두 허용하도록 설계되었다.

그러나 CPL은 매우 느리게 구현되었다. 첫 번째 CPL 컴파일러는 1970년경에 작성된 것으로 추정되지만,[5][11] 널리 사용되지 못하고 1970년대에 사라졌다.

이후 CPL을 기반으로 더 단순하게 만들어진 BCPL (원래는 "부트스트랩 CPL"이었지만 "Basic CPL"을 의미함)이 1967년에 처음 구현되었다.[6] BCPL은 주로 시스템 프로그래밍, 특히 컴파일러를 작성하기 위한 언어로 설계되었다.[6] BCPL은 B를 거쳐 C 프로그래밍 언어로 이어졌다.

3. 설계

CPL은 ALGOL 60의 영향을 크게 받아 설계되었다. ALGOL 60이 과학적 계산에 중점을 둔 것에 비해, CPL은 더 넓은 응용 분야를 목표로 했다. CPL은 산업 공정 제어, 비즈니스 데이터 처리, 초기 명령 줄 게임 등 다양한 분야에 적용될 수 있도록 설계되었다.[4] 이를 위해 CPL은 저수준 프로그래밍과 고수준 추상화를 모두 지원하여 프로그래머에게 유연성을 제공하고자 했다.

3. 1. ALGOL 60과의 비교

ALGOL 60은 극도로 작고 우아하며 단순했던 반면, CPL은 ALGOL 60의 영향을 많이 받았음에도 불구하고 훨씬 더 복잡하고 우아하지 않았다. CPL은 당시로서는 큰 언어였다. ALGOL 60은 주로 과학적 계산을 위해 설계되었지만, CPL은 산업 공정 제어, 비즈니스 데이터 처리 및 초창기 명령 줄 게임을 포함하는 더 넓은 응용 분야를 목표로 했다.[4] CPL은 동일한 언어를 사용하여 저수준 프로그래밍과 고수준 추상화를 모두 허용하도록 설계되었다. CPL은 ((FORTRAN이나 ALGOL 방식의) 과학적 프로그래밍과 (COBOL 방식의) 상용 프로그래밍) 모두에 우수함을 목표로 했다. 비슷한 노력은 PL/I에서도 나타났다.[10]

4. 구현

CPL은 1960년대에 완전히 구현되지 않았으며, 부분적인 구현에 대한 연구 작업과 함께 이론적인 구조로 존재했던 것으로 여겨진다.[7][8] 1970년경에 최초의 CPL 컴파일러가 작성되었을 것으로 추정되지만,[11] 널리 보급되지 못하고 1970년대에 자연 소멸했다.

피터 노르비그는 현대적인 컴퓨터를 위해 파이썬 컴파일러 컴파일러인 Yapps를 사용하여 간단한 CPL에서 파이썬으로의 변환기를 작성했다.[5][9]

5. 영향

CPL은 직접적으로 널리 사용되지는 않았지만, 이후 프로그래밍 언어 발전에 큰 영향을 미쳤다.


  • BCPL (Basic CPL, 원래는 Bootstrap CPL): CPL을 기반으로 한 훨씬 더 단순한 언어로, 주로 시스템 프로그래밍, 특히 컴파일러를 작성하기 위한 언어로 설계되었다.[6] BCPL은 CPL의 첫 번째 구현보다 앞선 1967년에 처음 구현되었다.
  • B 언어: BCPL을 기반으로 개발된 언어이다.
  • C 언어: B 언어를 기반으로 개발되었으며, 현재 가장 널리 사용되고 영향력 있는 프로그래밍 언어 중 하나이다.


CPL의 유산은 C 언어를 통해 현대 프로그래밍에 큰 영향을 미치고 있다.

6. 코드 예시

피터 노르비그가 공식화한 MAX 함수는 다음과 같다.[14][5][11]



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 §⃒



여기서 사용된 닫는 섹션 블록 기호(§⃒)는 가로획이 수직인 원래 기호의 근사치이다. 이 기호는 유니코드에서 §⃒로 사용할 수 있지만, 많은 시스템에서 제대로 표시되지 않는다.

7. 참고 문헌

참조

[1] 논문 The Main Features of CPL 1963-08-01
[2] 웹사이트 Clive Feather on CPL and BCPL http://www.lysator.l[...] Lysator.liu.se 2013-08-18
[3] 뉴스 "A damn stupid thing to do"—the origins of C https://arstechnica.[...] 2020-12-10
[4] 서적 Computer and Languages https://books.google[...] Discovery Publishing House 2005
[5] 뉴스 Prescient but Not Perfect: A Look Back at a 1966 Scientific American Article on Systems Analysis https://blogs.scient[...] 2011-08-23
[6] 서적 Concepts in Programming Languages https://books.google[...] Cambridge University Press 2003
[7] 논문 The London CPL1 compiler 1968-01-01
[8] 웹사이트 Computer Resurrection Issue 62 / The Compiler Compiler - Reflections of a User 50 Years On / The CPL1 Compiler http://www.cs.man.ac[...] 2023-05-03
[9] 웹사이트 Complete Annotated Checkers Program http://norvig.com/sc[...] 2021-06-11
[10] 논문 The Main Features of CPL 1963-08-01
[11] 웹사이트 Prescient but Not Perfect: A Look Back at a 1966 Scientific American Article on Systems Analysis http://blogs.scienti[...] Blogs.scientificamerican.com 2013-08-18
[12] 웹인용 The main features of CPL http://comjnl.oxford[...] comjnl.oxfordjournals.org 2015-08-27
[13] 웹인용 Clive Feather on CPL and BCPL http://www.lysator.l[...] Lysator.liu.se 2013-08-18
[14] 웹인용 Prescient but Not Perfect: A Look Back at a 1966 Scientific American Article on Systems Analysis http://blogs.scienti[...] Blogs.scientificamerican.com 2013-08-18



본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.

문의하기 : help@durumis.com