FORTRAN (1957)
FORTRAN (1957)
1. 한 줄 요약
FORTRAN(FORmula TRANslation)은 1957년 IBM 의 John Backus 팀이 IBM 704 위에서 발표한 세계 최초의 본격 고급 프로그래밍 언어 로, 수치 계산 코드를 어셈블리에 손대지 않고 작성할 수 있게 만들면서 컴퓨터가 과학자·공학자의 일상 도구 로 변모하는 결정적 계기가 되었다.
2. 등장 시기·배경
위키피디아는 FORTRAN 의 시점을 "first released in 1957 by John Backus and IBM" 으로 명시한다. 참조 매뉴얼이 1956년 10월에 나왔고, 첫 컴파일러가 1957년 4월에 IBM 704 사용자들에게 인도되었다.
탄생 동기는 Backus 자신의 솔직한 회고로 가장 잘 압축된다. "I didn't like writing programs, and so...I started work on a programming system to make it easier to write programs." — 프로그램 쓰는 일이 싫어서 프로그램 쓰는 일을 쉽게 만드는 시스템을 만들었다. 1950년대 중반의 어셈블리 프로그래밍이 얼마나 번거로웠는지를 단적으로 보여준다.
배경은 단순한 편의성을 넘어선다. IBM 은 IBM 704 의 매출을 끌어올리려면 과학자·공학자가 직접 프로그래밍할 수 있어야 한다고 판단했다. 어셈블리는 전문 프로그래머만 쓸 수 있는 도구였고, 이는 컴퓨터의 시장 한계 를 정하는 요인이었다. FORTRAN 은 프로그래밍의 사용자 층을 확장한 첫 언어 다.
핵심 인물은 위키피디아가 명시한 Backus 의 팀 구성원들이다 — Richard Goldberg, Sheldon Best, Harlan Herrick, Roy Nutt, Lois Haibt, David Sayre. ANSI 가 1966년 FORTRAN 66 으로 표준화하면서 산업 표준 언어로 정착.
3. 핵심 특징
- 컴파일 방식 (compiled language) — 위키피디아 표현 "Compiled language producing efficient machine code". Backus 팀의 결정적 성취는 컴파일러가 생성한 코드가 어셈블리 못지않게 빨랐다는 점. 당시 의심을 받았으나 실측으로 입증.
- 수식 표기 그대로의 문법 —
Y = A*X**2 + B*X + C같은 수학 표기가 그대로 코드. FORmula TRANslation 이라는 이름의 정체. - 제어 흐름 — IF / DO — 위키피디아가 명시하는 "arithmetic IF (three-way branching) and DO loops". 산술 IF 는 음수·0·양수 세 갈래 분기. DO 루프는 반복.
- 과학 계산 자료형 — 위키피디아 표현 "COMPLEX, DOUBLE PRECISION". 복소수와 배정도 부동소수점이 언어 차원에서 지원. 어셈블리에서는 라이브러리로 구현해야 했던 기능.
- 서브루틴·함수 (FORTRAN II 부터) — 모듈화를 위한 함수·서브루틴 추상화. EDSAC 의 서브루틴 개념이 고급 언어 차원에서 정식 문법으로 정착.
4. 주 용도
위키피디아는 응용 분야를 다음과 같이 나열한다 — "numerical weather prediction, finite element analysis, computational fluid dynamics, plasma physics, geophysics, computational physics, crystallography and computational chemistry". 즉 수치 계산이 핵심인 모든 과학·공학 분야. 슈퍼컴퓨팅·HPC(고성능 컴퓨팅) 영역에서는 2026년 현재도 여전히 주력 언어로 사용된다.
기상 예측 모델·핵물리 시뮬레이션·항공기 유체역학·구조 해석·전산 화학 — 위키피디아의 이 목록은 60년이 지난 지금도 거의 그대로다. 사용 영역이 변하지 않았기 때문에 언어가 살아남았다.
5. 그 시대의 설계 도구 매핑 ★ — 펀치카드라는 사용자 경험
FORTRAN 시대(1957~1970년대)의 사용자 경험은 한 단어로 압축된다 — 펀치카드. 위키피디아가 명시하는 펀치카드 80 칸 형식은 다음과 같다.
| 칸 위치 | 용도 |
|---|---|
| 1~5 | 문장 라벨 (statement label) — 숫자, GO TO 의 목표지로 사용 |
| 6 | 연속 표시 (continuation indicator) — 비어있으면 새 문장, 0이 아닌 문자면 이전 줄의 연속 |
| 7~72 | 실제 코드 (actual code) — 코드 한 줄이 카드 한 장에 기록됨 |
| 73~80 | 시퀀스 번호 (sequence number) — 컴파일러는 무시. 카드 더미를 떨어뜨렸을 때 다시 정렬 하기 위한 보험 |
이 형식이 강제하는 워크플로는 다음과 같이 정리된다.
- 종이 위 플로차트 작성 — 1947년 Goldstine·von Neumann 도식이 표준. IBM 의 플라스틱 플로차트 템플릿(1959 출시)이 모든 프로그래머의 책상 도구.
- 코딩 시트(coding sheet) 작성 — 80 칸 격자가 인쇄된 종이. 펀치카드 작성 전에 손글씨로 코드를 적는 단계. 잘못 펀치하면 카드 한 장을 버려야 했기 때문에, 종이 위 검토가 필수.
- 펀치카드 작성 — 키펀치 기계로 카드 한 장씩 천공. 전문 키펀치 오퍼레이터가 별도 직군으로 존재.
- 카드 덱 제출 — 보통 야간 배치 작업. 다음 날 출력물을 받음. 컴파일 오류 한 개 = 하루 손실.
- 출력 검토 → 수정 → 재제출 — 한 번의 사이클이 24시간. 이 환경에서는 설계 실수 한 번 = 일주일 손실. 따라서 설계가 코드보다 훨씬 더 무겁게 다뤄질 수밖에 없었다.
이 사용자 경험이 강의의 결정적 시각 자료가 된다. "하루에 한 번 컴파일하던 시대" 와 "AI 가 1초에 100 줄 만드는 시대" 의 대비. 그러나 그 사이에서도 설계가 먼저라는 원칙은 변하지 않았다 — 강의 핵심 명제.
6. 언어 그룹 분류
위키피디아 표현 "Multi-paradigm: structured, imperative, procedural, object-oriented (modern versions), generic, and array-based programming". 출발은 명령형·절차형. 1957년 시점의 FORTRAN 은 최초의 본격 절차형 고급 언어. 이후 90년대 FORTRAN 90 부터 모듈·객체지향·제네릭이 추가되며 계속 진화 한 보기 드문 언어.
같은 1958년경 등장한 LISP 가 함수형 언어 가족의 출발이라면, FORTRAN 은 절차형/명령형 언어 가족의 출발이다. 이후 등장한 거의 모든 명령형 언어(C·Java·Python·JavaScript)가 FORTRAN 의 직간접적 후손이다.
7. 강의 도입 활용 포인트
FORTRAN 펀치카드의 80 칸 사진 한 장 + 코딩 시트 사진 한 장 + IBM 029 키펀치 기계 사진 한 장 — 이 세 장의 시각 자료가 학생들에게 "설계 없이는 코딩이 안 된다" 를 가장 직관적으로 전달한다. 24시간 사이클의 환경에서는 설계가 99%, 코딩이 1% 였다. 그 다음 슬라이드에서 "AI 시대에는 어떨까?" 라는 질문으로 자연스럽게 본 강의로 진입한다.
출처
- Wikipedia, Fortran, https://en.wikipedia.org/wiki/Fortran
- Wikipedia, IBM 704, https://en.wikipedia.org/wiki/IBM_704
- Wikipedia, Punched card, https://en.wikipedia.org/wiki/Punched_card
그룹 시리즈
→ synthesis/group-g2 (시대 그룹 종합 카드)