APL (1962/1966)
APL (1962/1966)
1. 한 줄 요약
APL(A Programming Language)은 1957년 하버드 대학의 Kenneth E. Iverson 이 수학 표기법으로서 시작해, 1962년 동명의 책 A Programming Language 로 정식 발표하고, 1966년 11월 IBM System/360 위 APL\360 으로 첫 실행 환경이 등장한 수학 표기법 자체를 언어로 격상시킨 결정적 사례이며, 배열 중심(array-oriented) 프로그래밍의 출발점이다.
2. 등장 시기·배경
위키피디아는 APL 의 시점을 세 단계 로 명시한다.
- 1957년 — Kenneth Iverson 이 하버드 대학에서 수학 표기법으로서 APL 을 시작.
- 1962년 — Iverson 이 IBM 으로 옮긴 후 책 A Programming Language 출간. 이것이 APL 이라는 이름의 출처.
- 1966년 11월 — IBM System/360 위에서 APL\360 첫 실행 환경 가동.
위키피디아 표현 "Iverson's premise was that 'an effective notation for the description of programs exhibits considerable syntactic structure' and should be called a programming language" 가 핵심이다. 즉 Iverson 의 결정적 통찰은 "좋은 수학 표기법은 이미 그 자체로 프로그래밍 언어다" 라는 명제였다.
이는 강의 핵심 명제와 정확히 결을 같이 한다. 설계가 코드보다 먼저 라는 명제의 가장 깊은 형태 — 수학 표기법이 코드의 9년 선조 라는 사실. Church 의 람다 계산법이 LISP 의 30년 선조였던 패턴이 APL 에서는 9년 단위로 반복된다.
핵심 인물은 Kenneth E. Iverson(1920~2004). 위키피디아 표현 "Iverson received the 1979 Turing Award" — 1979년 튜링상 수상. 수상 강연 "Notation as a Tool of Thought" 가 컴퓨터 과학사의 결정적 강연 중 하나. 표기법이 곧 사고의 도구 라는 명제는 본 강의의 프롬프트가 곧 설계 언어 라는 사상의 직접 조상.
3. 핵심 특징
- ★ 배열 중심 (array-oriented) — 위키피디아 표현 "Multidimensional arrays as the central datatype". 다차원 배열이 모든 데이터의 기본 단위. 스칼라조차 0차원 배열로 처리. 행렬 곱셈, 벡터 합, 텐서 변환이 한 글자 연산자 로 표현됨. 이 사상의 직접 후예: MATLAB, NumPy, R, Julia, Python pandas.
- ★ 특수 기호 표기 — 위키피디아 표현 "Uses special Greek letters and symbols rather than English keywords". ⍴ (모양), ⍳ (인덱스 생성), ⌽ (역순), ⊖ (회전), ∇ (함수 정의), ⍵·⍺ (인자) 같은 특수 기호. APL 키보드는 별도 인쇄된 키캡 을 사용했다. IBM Selectric typewriter 의 APL ball 이 유명.
- ★ 극단적 간결함 — 위키피디아 표현 "Very concise code enabling complex operations in minimal lines". 다른 언어로 30 줄 걸리는 알고리즘이 APL 한 줄. 예: 소수 판별 —
(2=+⌿0=Y∘.|Y)/Y←⍳N(N 까지의 소수 목록). 이를 one-liner 라 불렀고, APL programmers don't write programs, they write expressions 라는 격언이 생겼다. - 함수형 사상 — 위키피디아 표현 "Chains of monadic/dyadic functions and operators". 단항·이항 연산자의 체인 으로 데이터 변환을 표현. 후일 함수형 언어의 함수 합성(function composition) 과 동일 사상.
- 오른쪽에서 왼쪽 평가 — 위키피디아 표현 "Right-to-left evaluation". 수학 표기와 같은 방향. 연산자 우선순위가 없다 — 모두 같은 우선순위로 오른쪽에서 왼쪽으로 평가.
2 × 3 + 4는2 × (3 + 4) = 14(다른 언어처럼 10 이 아님).
4. 주 용도
위키피디아의 응용 분야 정리:
- 금융 시스템·보험 계리 — 행렬 연산이 핵심인 영역. 위키피디아 표현 "insurance applications, mathematical computation, matrix operations". 보험사 계리 시스템·헤지펀드 정량 분석.
- 시계열 분석·정량 거래 — 위키피디아 표현 "trading systems". 후예 언어 K, Q(KDB+ 데이터베이스)가 월스트리트 정량 거래의 핵심 기술. Morgan Stanley·Goldman Sachs·헤지펀드 다수가 K/Q 사용.
- 이미지 처리 — 위키피디아 표현 "image manipulation". 이미지 = 2D 배열. APL 의 본거지.
- 수학 교육 — Iverson 의 J 언어(1990, ASCII 기반 APL 후예)가 수학 교육용으로 사용.
상업적으로는 틈새 시장 이지만 그 영향력은 압도적이다. NumPy 의 모든 broadcasting·fancy indexing·universal function 사상이 APL 에서 직접 유래. 즉 2026년 현재 모든 데이터 사이언스의 사실상 표준이 APL 의 50년 후손.
5. 그 시대의 설계 도구 매핑 ★
APL 시대(1957~1970년대)는 위 두 시기와 완전히 다른 결 의 설계 도구를 보여준다. APL 자체가 설계 도구로 출발한 언어 였기 때문이다.
| 설계 도구 | 역할 |
|---|---|
| ★ Iverson 표기법 (Iverson notation, 1957~62) | 언어보다 먼저 종이 위에 존재한 표기 체계. 1957년부터 1966년까지 9년간 코드가 아닌 표기법 으로 존재. Iverson 자신이 IBM 360 명령어 집합을 이 표기법으로 명세한 사례가 있음. 즉 언어를 만드는 데에 또 다른 언어를 사용한 메타 설계 사례. |
| ★ "Notation as a Tool of Thought" (1979 튜링 상 강연) | 표기법이 곧 사고의 도구 라는 명제의 정식 발표. 좋은 표기법은 생각할 수 있는 것 의 범위를 확장한다는 통찰. 본 강의의 프롬프트가 곧 설계 언어 라는 사상의 직접 조상. |
| ★ APL 식 표기법 (one-liner) | 알고리즘을 한 줄의 식 으로 압축. 식 자체가 알고리즘의 명세 가 됨. 별도의 플로차트가 필요 없을 정도로 식 자체가 시각적. |
| 수학적 동치 변환 (algebraic identity) | APL 식은 수학 식과 동등 하므로, 식의 대수적 변환 이 곧 코드의 최적화. 컴파일러 최적화의 사상적 기반. |
| 배열 형상(shape) 다이어그램 | 다차원 배열의 형상(예: 3×4×5)을 종이 위에 직육면체 로 그리는 표준 도구. 후일 NumPy·TensorFlow 의 텐서 형상 시각화의 직접 조상. |
핵심은 APL 이 설계 자체를 코드로 격상 시킨 결정적 사례라는 사실이다. 다른 언어들이 플로차트(설계) → 코드 의 두 단계였다면, APL 은 Iverson 표기법(설계 = 코드) 의 한 단계. 강의 핵심 명제 — 설계 없이는 코딩이 안 된다 — 의 반대 방향 표현 — 설계 = 코드 — 의 첫 사례. 두 명제는 사실 같은 동전의 양면 이다.
6. 언어 그룹 분류
배열 언어(array language)·함수형(functional)·선언형(declarative). 별도의 array programming language 가족을 형성. 후예: J(1990, Iverson 자신), K(1993), Q(2003, KDB+), Dyalog APL(상용 APL 현재 표준). 영향: MATLAB(1984), NumPy(2006), R(1993), Julia(2012), Python pandas(2008), TensorFlow·PyTorch 의 텐서 연산.
흥미로운 사실: 2010년대 이후의 데이터 사이언스 부흥 이 사실상 APL 사상의 부활 이다. NumPy·pandas·TensorFlow 가 모두 배열 = 기본 단위, 연산자가 배열을 변환한다 는 APL 의 50년 전 모델을 그대로 따른다. AI 시대의 행렬 곱셈 중심 사고 는 1957년 Iverson 의 종이 표기법에서 출발한 것이다.
7. 강의 도입 활용 포인트
APL 의 한 줄 — (2=+⌿0=Y∘.|Y)/Y←⍳N (N 까지의 소수 목록) — 을 보여주고, 옆에 같은 알고리즘의 Python·Java 30 줄을 나란히 두면, 표기법이 곧 사고의 도구 라는 Iverson 의 통찰이 한눈에 기록된다. 강의 후반부에서 AI Native 시대의 자연어 프롬프트도 새로운 표기법이다 라는 통찰로 자연스럽게 이어진다. 프롬프트 = 새로운 Iverson 표기법. 60년 시간을 사이에 두고 표기법이 사고를 결정한다 는 명제는 변하지 않았다.
출처
- Wikipedia, APL (programming language), https://en.wikipedia.org/wiki/APL_(programming_language)
- Kenneth E. Iverson, Notation as a Tool of Thought, Communications of the ACM, August 1980 (1979 Turing Award Lecture).
- Kenneth E. Iverson, A Programming Language, John Wiley and Sons, 1962.
그룹 시리즈
→ synthesis/group-g2 (시대 그룹 종합 카드)