ALGOL 60 (1960)
Entity (인물·조직)lectureverified2026-05-09

ALGOL 60 (1960)

#vch#lecture-intro#A-language#g2

ALGOL 60 (1960)

1. 한 줄 요약

ALGOL 60(Algorithmic Language 1960)은 1958~1960년 국제 위원회가 설계한 학술 알고리즘 출판용 언어 로, 블록 구조·재귀·렉시컬 스코프·BNF 형식 명세를 한꺼번에 도입하면서 구조화 프로그래밍과 형식 의미론의 출발점 이 된 언어이다.

2. 등장 시기·배경

위키피디아는 ALGOL 60 의 설계 시기를 1958~1960년 으로 명시한다. 결정적 회의는 1960년 1월 11~16일 파리 에서 열렸으며, 유럽과 미국의 컴퓨터 과학자들이 모인 국제 위원회의 산물이다.

탄생 동기는 FORTRAN·COBOL 과 다른 결을 가진다. FORTRAN 이 IBM 704 위 수치 계산용, COBOL 이 비즈니스 데이터 처리용 이라는 산업 언어 였다면, ALGOL 60 은 학술 알고리즘 출판용 언어로 출발했다. ACM(Association for Computing Machinery) 의 학술지 Communications of the ACM 이 ALGOL 60 을 알고리즘 표기 표준으로 채택했다.

위키피디아 표현 "became 'the standard for the publication of algorithms' in academic computing". 즉 학술 논문에 알고리즘을 적을 때 어떤 표기로 적을 것인가 의 산업 표준이 ALGOL 60 이 되었다. 이는 향후 30년간 컴퓨터 과학 교과서·논문의 사실상 표준이었다.

핵심 인물은 위키피디아가 명시하는 Peter Naur(편집자), John Backus, Edsger Dijkstra, Tony Hoare, Klaus Samelson. 이 명단 자체가 컴퓨터 과학사의 거인 명단이다. Backus 는 FORTRAN 의 설계자, Dijkstra 는 구조화 프로그래밍 의 창시자, Hoare 는 Hoare logic·QuickSort 의 창안자.

3. 핵심 특징

  1. 블록 구조 (block structure) — 위키피디아 표현 "Code organization using begin and end statements". begin ... end 로 묶인 블록 안에 지역 변수·중첩 함수가 살아있다. 이전 언어들의 비구조적 GOTO 중심 설계와 결정적 차이.
  2. ★ BNF 형식 명세 (Backus-Naur Form) — 위키피디아 표현 "Introduced Backus-Naur Form (BNF) for language definition". 언어의 문법을 형식적으로 표기하는 메타 언어. 예: <expression> ::= <term> | <expression> + <term>. 이후 모든 프로그래밍 언어 명세·컴파일러 파서 생성기·DSL 도구가 BNF 또는 그 변형을 사용한다.
  3. 재귀 프로시저 (recursive procedure) — 위키피디아 표현 "Supported function definitions that could call themselves". 자기 자신을 호출하는 함수가 언어 차원에서 지원. FORTRAN II 는 재귀를 지원하지 않았다.
  4. 렉시컬 스코프 (lexical scoping) — 위키피디아 표현 "Functions could be nested with proper variable scope handling". 중첩된 함수가 바깥 함수의 지역 변수 에 접근 가능. 클로저(closure) 의 직접적 조상.
  5. 두 가지 매개변수 전달 방식 — 위키피디아 표현 "call-by-value and call-by-name evaluation strategies". 값에 의한 전달과 이름에 의한 전달 (호출 시점에 인자식을 다시 평가). call-by-name 은 후일 함수형 언어의 지연 평가(lazy evaluation) 의 직접적 선조.

4. 주 용도

위키피디아 표현 "became 'the standard for the publication of algorithms' in academic computing, though commercial adoption remained limited due to absent input/output standardization". 즉 학술 출판용으로는 사실상 독점, 상업용으로는 한계 가 분명한 언어였다. 입출력 표준이 명세되지 않은 점이 결정적 약점.

학술 영향은 압도적이었다. 1960년대~80년대의 거의 모든 알고리즘 교과서가 ALGOL 60(또는 그 후속 ALGOL-like pseudocode)으로 알고리즘을 표기했다. Knuth 의 The Art of Computer Programming 도 ALGOL 계열 표기를 사용. 알고리즘을 종이에 적는 표기법 의 산업 표준.

상업적으로는 ALGOL 60 자체보다 그 후손들 이 살아남았다. 위키피디아 표현 "directly influenced Pascal, C, Ada, Simula, and PL/I". 즉 ALGOL 60 의 후손이 사실상 현대 모든 명령형·구조화 언어. C → C++ → Java → JavaScript → Python 까지 모두 ALGOL 60 의 블록 구조 + 재귀 + 렉시컬 스코프 를 그대로 계승.

5. 그 시대의 설계 도구 매핑 ★

ALGOL 60 시대(1960년대)는 언어 설계 자체에 대한 형식적 사고 가 산업·학계에 정착한 결정적 시기다.

설계 도구역할
★ BNF (Backus-Naur Form)언어 문법을 기계 가독 형식 으로 명세. 언어를 만들기 전에 언어 자체를 종이 위에 기록한다 는 메타 설계 패턴 정착. 현대 ANTLR·Yacc·PEG 의 직접 조상.
★ 형식 명세서 (formal specification)ALGOL 60 보고서 자체가 언어 명세 문서의 형식 을 정립. 14 페이지 분량의 Revised Report on the Algorithmic Language ALGOL 60 (1963) 이 산업 표준.
★ 의사코드 (pseudocode)ALGOL-like 표기가 의사코드의 사실상 표준이 됨. 학술 논문의 알고리즘이 언어 중립적으로 표현 가능해짐.
★ 구조화 다이어그램 (structured chart)Yourdon·Constantine 의 Structured Design(1975) 이 ALGOL 60 의 블록 구조 사상을 시각화. 모듈을 사각형, 호출 관계를 화살표로.
★ Hoare logic / 사전·사후 조건Tony Hoare 의 1969년 논문 An Axiomatic Basis for Computer Programming 이 ALGOL 60 위에서 프로그램 정확성을 수학적으로 증명 하는 방법을 제시. 코드를 짜기 전에 의도(invariant)를 종이 위에 적는다 는 패턴.
재귀 호출 트리 (recursion tree)재귀가 언어 차원에서 지원되면서, 호출 트리를 손으로 그리는 일이 알고리즘 분석의 표준 단계가 됨.

핵심은 언어 자체가 설계 도구의 진화를 추동 했다는 사실이다. BNF 의 등장은 언어를 만드는 사람이 종이 위에서 형식적으로 설계한다 는 메타 설계 패턴을 정착시켰고, 이는 현대 모든 DSL·API 명세·OpenAPI·Protocol Buffers 명세의 직접적 조상이 되었다. 강의 핵심 명제 — 설계 없이는 코딩이 안 된다 — 의 가장 추상화된 형태가 BNF 다 — 언어 자체도 설계 없이는 만들어지지 않는다.

6. 언어 그룹 분류

명령형(imperative)·절차형(procedural)·구조화(structured) 패러다임의 출발점. ALGOL 60 이전의 명령형 언어(FORTRAN·COBOL·어셈블리)는 비구조적 이었다 — GOTO 가 자유로웠고 블록 개념이 없었다. ALGOL 60 이 블록 구조 를 도입하면서 구조화 프로그래밍 이라는 새 패러다임이 출발했고, 이는 1968년 Dijkstra 의 유명한 편지 "Go To Statement Considered Harmful" 로 이어진다.

ALGOL 가족(ALGOL 60 → Pascal → Ada → Modula → Oberon)과 C 가족(C → C++ → Java → C#)이 모두 ALGOL 60 의 후손이다. 블록 구조 + 재귀 + 렉시컬 스코프 라는 세 기둥은 60년이 지나도 변하지 않은 명령형 언어의 핵심.

7. 강의 도입 활용 포인트

ALGOL 60 의 BNF 한 줄 — <if-stmt> ::= if <condition> then <stmt> [else <stmt>] — 을 보여주면, 언어를 만들기 전에 언어를 형식적으로 기록한다 는 메타 설계 패턴이 한눈에 들어온다. 강의 후반부에서 프롬프트도 결국 자연어 BNF 다 라는 통찰로 연결할 수 있다. CLAUDE.md 가 프로젝트 위에서 작동하는 자연어 명세 라면, BNF 가 컴파일러 위에서 작동하는 형식 명세 였다. 60년의 시간을 사이에 두고 같은 패턴.

출처

그룹 시리즈

synthesis/group-g2 (시대 그룹 종합 카드)