PL/I
PL/I는 과학·공학 계산, 상업 데이터 처리와 시스템 프로그래밍을 하나의 언어에서 지원하기 위해 IBM이 개발한 범용 프로그래밍 언어이다. 정식 명칭은 Programming Language One이며, PL/1으로 표기되기도 하지만 공식 표기는 PL/I이다.
| 정식 명칭 | Programming Language One |
|---|---|
| 다른 표기 | PL/1 |
| 분류 | 범용 프로그래밍 언어, 절차적 프로그래밍 언어 |
| 개발 | IBM, SHARE Advanced Language Development Committee |
| 최초 공개 | 1964년 |
| 주요 설계 목적 | 과학 계산, 상업 데이터 처리, 시스템 프로그래밍의 통합 |
| 영향을 받은 언어 | FORTRAN, COBOL, ALGOL 60 |
| 패러다임 | 명령형 프로그래밍, 절차적 프로그래밍, 구조적 프로그래밍 |
| 타입 체계 | 정적 타입 |
| 주요 표준 | ANSI X3.53-1976, ANSI X3.74-1987, ISO/IEC 6160 |
| 주요 구현체 | IBM Enterprise PL/I, IBM PL/I for AIX, Multics PL/I, Open PL/I |
| 주요 플랫폼 | IBM 메인프레임, AIX, Multics |
| 현재 상태 | 기존 기업 시스템의 개발과 유지보수에 사용 |
PL/I는 과학·공학 계산, 상업 데이터 처리와 시스템 프로그래밍을 하나의 언어에서 지원하기 위해 IBM이 개발한 범용 프로그래밍 언어이다. 정식 명칭은 Programming Language One이며, PL/1으로 표기되기도 하지만 공식 표기는 PL/I이다.
PL/I는 FORTRAN이 담당하던 수치 계산, COBOL이 담당하던 기업 데이터 처리와 ALGOL 60 계열 언어의 블록 구조를 결합하려 했다. 정수와 고정소수점·부동소수점·복소수 연산, 문자와 비트 문자열, 배열과 구조체, 포인터, 동적 기억 공간, 재귀, 예외 조건 처리, 파일 입출력과 동시 실행 기능을 하나의 언어 체계에 포함하였다. 이러한 범위 때문에 PL/I는 초기의 대표적인 대규모 범용 언어 가운데 하나로 평가된다.[1]
PL/I의 개발은 IBM이 과학 계산용 컴퓨터와 상업 데이터 처리용 컴퓨터를 통합한 System/360 계열을 준비하던 시기와 연결된다. IBM은 서로 다른 작업 분야마다 별도의 언어를 사용하는 대신, 새로운 컴퓨터 계열의 여러 용도를 함께 담당할 수 있는 공통 언어를 만들고자 했다. 초기에는 NPL 또는 New Programming Language라는 이름으로 불렸고, 이후 MPPL을 거쳐 PL/I라는 명칭이 사용되었다.
언어는 1964년에 공개되었으며 초기 IBM 문서에서는 과학 계산, 기업 업무, 실시간 처리와 시스템 프로그램 작성까지 포괄하는 언어로 제시되었다. 그러나 매우 넓은 기능 범위와 복잡한 언어 규칙은 완전한 컴파일러를 구현하고 프로그램의 동작을 예측하기 어렵게 만드는 원인이 되기도 했다. 이후 구현체와 표준은 사용 목적에 따라 기능을 선택하거나 일부 동작을 더 명확하게 규정하는 방향으로 발전하였다.
PL/I는 Multics의 주요 구현 언어로 사용되면서 시스템 프로그래밍 분야에서도 중요한 역할을 맡았다. Multics 개발진은 초기 PL/I의 부분집합인 EPL을 먼저 구현한 뒤, 1969년부터 시스템 프로그램을 Multics PL/I로 전환하였다. 운영체제의 대부분을 고급 프로그래밍 언어로 작성한 Multics의 개발 방식은 당시 어셈블리어 중심이던 운영체제 구현 관행과 뚜렷한 차이를 보였다.[2][3]
PL/I는 전성기 이후 새로운 범용 응용 프로그램의 개발 언어로 선택되는 경우가 감소했지만, IBM 메인프레임을 중심으로 구축된 금융·보험·정부·제조 분야의 대규모 시스템에는 상당한 PL/I 코드가 남아 있다. IBM은 현재도 z/OS와 AIX용 PL/I 컴파일러를 제공하며, 기존 PL/I 응용 프로그램이 XML, JSON, 웹 서비스와 다른 현대적 시스템을 이용할 수 있도록 기능을 확장하고 있다.[4][5]