CPL (프로그래밍 언어)
CPL은 1960년대 초 영국의 케임브리지 대학교와 런던 대학교가 공동으로 설계한 범용 프로그래밍 언어이다. 처음에는 케임브리지 대학교 수학 연구소에서 Cambridge Programming Language라는 이름으로 시작되었으며, 런던 대학교 컴퓨터 유닛이 개발에 참여하면서 Comb...
| 정식 명칭 | Combined Programming Language |
|---|---|
| 이전 명칭 | Cambridge Programming Language |
| 분류 | 범용 프로그래밍 언어, 시스템 프로그래밍 언어 |
| 패러다임 | 명령형 프로그래밍, 절차형 프로그래밍, 구조적 프로그래밍, 함수형 프로그래밍 |
| 설계자 | 크리스토퍼 스트레이치, 데이비드 배런, 존 벅스턴, 데이비드 하틀리, 에릭 닉슨 등 |
| 개발 기관 | 케임브리지 대학교 수학 연구소, 런던 대학교 컴퓨터 유닛 |
| 개발 시기 | 1962년~1966년 |
| 최초 발표 | 1963년 |
| 영향을 받은 언어 | ALGOL 60 |
| 영향을 준 언어 | BCPL |
| 주요 구현 대상 | Titan, Atlas |
| 현재 상태 | 역사적 언어 |
CPL은 1960년대 초 영국의 케임브리지 대학교와 런던 대학교가 공동으로 설계한 범용 프로그래밍 언어이다. 처음에는 케임브리지 대학교 수학 연구소에서 Cambridge Programming Language라는 이름으로 시작되었으며, 런던 대학교 컴퓨터 유닛이 개발에 참여하면서 Combined Programming Language로 이름이 바뀌었다. CPL이라는 이름은 두 기관이 진행한 공동 언어 개발 계획을 나타낸다.[1]
CPL은 ALGOL 60이 제시한 블록 구조와 수학적인 표현 능력을 바탕으로, 과학 계산뿐 아니라 상업 데이터 처리, 시스템 프로그래밍과 기계에 가까운 저수준 처리까지 하나의 언어로 다루는 것을 목표로 했다. 당시의 특정 응용 분야용 언어를 넘어, 여러 종류의 프로그램을 같은 언어 체계에서 작성할 수 있는 대규모 범용 언어를 만들려는 시도였다.
언어에는 값과 데이터의 종류를 구분하는 타입과 모드 체계, 배열과 구조화된 데이터, 함수와 절차, 재귀 호출, 참조와 포인터에 해당하는 기능, 조건식, 반복문, 입출력, 분리 컴파일과 같은 기능이 포함되었다. 명령문뿐 아니라 식을 중심으로 프로그램을 구성할 수 있었으며, 프로그램의 일부를 값처럼 다루는 고차 함수와 함수형 프로그래밍에 가까운 요소도 수용했다. 이러한 설계에는 크리스토퍼 스트레이치와 피터 랜딘이 연구하던 프로그래밍 언어 의미론과 함수 개념도 반영되었다.
CPL은 당시 기준으로 매우 넓은 기능 범위와 복잡한 문법을 가졌다. 케임브리지의 Titan과 런던의 Atlas를 대상으로 컴파일러 개발이 진행되었지만, 언어 전체를 효율적으로 구현하는 작업은 계획보다 오래 걸렸다. 일부 하위 언어와 컴파일러가 만들어졌으나, CPL 전체가 안정적으로 보급되기 전에 개발 계획은 사실상 종료되었다. CPL 프로젝트는 1962년 초부터 1966년 말까지 이어졌다.[2]
마틴 리처즈는 CPL 컴파일러를 부트스트랩하기 위한 단순한 언어를 설계하는 과정에서 복잡한 타입 및 모드 일치 규칙과 여러 정의 구조를 제거하고, 기계의 워드를 기본 데이터 단위로 사용하는 BCPL을 만들었다. BCPL은 CPL보다 작고 구현하기 쉬운 시스템 프로그래밍 언어로 발전했으며, 이후 B를 거쳐 C로 이어졌다. 이에 따라 CPL 자체의 직접적인 사용은 제한적이었지만, CPL에서 BCPL·B·C로 이어진 계보를 통해 현대 시스템 프로그래밍 언어의 형성에 간접적으로 큰 영향을 주었다.[3]