Pascal — 구조적 프로그래밍 교육의 표준 (1970, Niklaus Wirth)
Pascal — 구조적 프로그래밍 교육의 표준
1. 요약
Pascal은 1970년 ETH Zürich의 Niklaus Wirth가 발표한 구조적 프로그래밍 언어이다. 강한 타입(strong typing), 단계적 정련(stepwise refinement), 명료한 구조 제어를 통해 교육 가능한 컴파일러 언어의 표준이 되었다. 1980년대 대학 컴퓨터공학 개론의 표준 교육 언어로 자리 잡았고, Apple Lisa(1983)·Macintosh 초기 시스템 소프트웨어, Borland Turbo Pascal(1983)을 통해 산업 현장에서도 광범위하게 사용되었다.
2. 등장 배경
1960년대 후반, ALGOL X 표준화 위원회는 더 복잡한 ALGOL 68을 채택하려 했다. Wirth는 이 방향에 동의하지 않았고, 1968년 ALGOL X 작업에서 빠져 직접 작고 정돈된 후속 언어를 만들기로 결정한다. 1970년 첫 발표.
ALGOL 68의 한계는 분명했다 — 문법이 너무 복잡해서 컴파일러를 한 학기 안에 가르치기 가 불가능했다. Wirth는 정반대 방향으로 갔다. 한 사람의 학생이 한 학기 안에 컴파일러를 만들 수 있는 최소·정돈된 언어가 목표였다.
3. 핵심 특징
- 구조적 제어 흐름 —
if/then/else,while,for,case등 표준 제어 구문.goto를 의도적으로 비표준화. - 강한 타입(Strong Typing) — 모든 변수에 타입 강제, 다른 타입 간 명시적 변환 요구. 컴파일 시점에 오류 검출.
- 중첩 프로시저(Nested Procedures) — 프로시저 안에 프로시저를 임의 깊이로 정의 가능. C에는 없는 특징.
- 레코드와 데이터 구조 —
record타입을 통한 복합 자료 구조. 이는 후일 Cstruct, Javaclass로 이어지는 흐름의 출발점. - 집합 타입(Set Types) — 비트 벡터로 최적화된 집합 연산을 언어 차원에서 지원.
4. 주 용도
- 교육: 1980년대 대학 컴퓨터공학 개론의 국제 표준 교육 언어. Algorithms + Data Structures = Programs (Wirth, 1976)이 교과서가 되었다.
- 상용 시스템: Apple Lisa(1983)·Macintosh 초기 시스템 소프트웨어 다수가 Pascal로 작성.
- PC 응용 소프트웨어: Anders Hejlsberg가 작성한 Borland Turbo Pascal(1983, 49.95 달러)이 IBM PC 시장을 장악, 수많은 상용 응용 소프트웨어의 기반이 됨.
5. 그 시대 설계 도구 매핑
Pascal이 활약한 1970~80년대는 구조적 분석·설계가 산업 표준이 된 시기이다.
| 도구 | 역할 | Pascal과의 관계 |
|---|---|---|
| Yourdon-Constantine 구조도 (1975) | 모듈 분해와 결합도/응집도 분석 | Pascal 프로시저 분해의 직접 도식 |
| Stepwise Refinement (Wirth, 1971 "Program Development by Stepwise Refinement") | 추상→구체 단계적 정련 | Pascal 자체가 이 방법론의 언어 구현체 |
| Jackson Structured Programming (JSP) (1975) | 데이터 구조에서 프로그램 구조 도출 | Pascal의 record 와 procedure 매핑이 자연스러움 |
| Nassi-Shneiderman 구조도 (1973) | 흐름도 대안, 구조적 제어를 박스로 표현 | Pascal if/while/case를 그대로 시각화 |
→ 언어가 도구를 따라간 것이 아니라, 언어와 도구가 같은 사상(구조적 분해)을 공유했다는 점이 핵심이다.
6. 강의 활용
핵심 명제와의 연결: "프로그래밍 언어는 시대마다 발전했지만, 설계의 중요성은 처음부터 일관되게 적용되어왔다."
Pascal은 이 명제의 교과서적 사례다. Wirth가 1971년에 박은 "Program Development by Stepwise Refinement" 논문은 단순한 알고리즘 가이드가 아니라 설계 방법론 그 자체였다. 즉 Pascal이라는 언어가 등장하기 전에, 설계 사상 (단계적 정련, 구조적 분해)이 먼저 정립되었고, Pascal은 그 사상을 언어 형태로 박은 결과물이다.
강의에서의 위치: G3 도입부의 대표 사례. "60년대 ALGOL 60에서 70년대 Pascal로 넘어가는 길에서, 구조적 분해라는 설계 사상이 언어 자체의 문법으로 굳어졌다"는 흐름을 보여주는 출발점.
오늘날의 흔적: Pascal 자체는 산업 현장에서 사라졌지만, 그 사상은 모든 후속 언어에 살아있다. C의 struct, Java의 class, Python의 def 모두 Pascal의 명시적 선언·구조적 제어의 후예다. 그리고 단계적 정련은 오늘날 LLM 시대의 Spec-driven Development로 다시 살아 돌아왔다.
출처
- Wikipedia, "Pascal (programming language)", https://en.wikipedia.org/wiki/Pascal_(programming_language)
- Wirth, N. (1971). "Program Development by Stepwise Refinement". Communications of the ACM, 14(4).
- Wirth, N. (1976). Algorithms + Data Structures = Programs. Prentice-Hall.
그룹 시리즈
→ synthesis/group-g3 (시대 그룹 종합 카드)