EWD 아카이브 cho.books
독립 서가 · 컴퓨팅 과학의 양심

프로그래밍을 공학에서 과학으로 끌어올린 사람

에츠허르 W. 다익스트라는 1959년의 EWD0에서 2002년 세상을 떠나기까지 1300편이 넘는 손글씨 매뉴스크립트 ―EWD 시리즈― 를 동료들에게 직접 우편으로 돌렸다. 학술지의 검열도, 출판의 압력도 거치지 않은 이 글들은 오늘날까지 컴퓨터 과학의 가장 날카로운 정신을 담은 문서로 남아 있다.

EWD 매뉴스크립트 1318편 1972 튜링상 구조적 프로그래밍 세마포어 최단경로 알고리즘 형식적 방법

인물다익스트라라는 사람

그는 컴퓨터를 사랑하지 않았다. 그가 사랑한 것은 인간의 정신이 거대한 복잡성 앞에서 길을 잃지 않을 수 있다는, 거의 신앙에 가까운 믿음이었다.

1930년 네덜란드 로테르담에서 태어난 에츠허르 비버 다익스트라(Edsger Wybe Dijkstra)는 암스테르담 대학에서 이론물리학을 공부하던 1952년, 네덜란드 수학 센터(Mathematical Centre)에서 첫 프로그래밍 일자리를 얻었다. 당시 "프로그래머"라는 직업은 존재하지 않았다 — 1957년 그가 결혼할 때 시청은 그 직업명을 거부했고, 결혼 증명서에는 "이론물리학자"라고 적혔다. 그러나 상관 A. 반 베인하르던(A. van Wijngaarden)은 그에게 평생의 사명을 일러주었다. 프로그래밍을 존경받는 학문으로 만드는 것.

그 사명을 그는 50년 동안 한 치의 타협도 없이 추구했다. 1956년 그는 단 20분 만에 최단 경로 알고리즘(다익스트라 알고리즘)을 설계했다 — 플로우차트도 그리지 않고. 1965년에는 세마포어를 발명해 동시성 프로그래밍의 기초를 놓았고, 같은 해 EWD123에서 "식사하는 철학자" 문제를 시험 문제로 냈다. 1968년 아인트호벤에서 그가 이끈 6명의 작은 팀은 THE 다중프로그래밍 시스템을 만들어 운영체제의 계층적 설계를 처음으로 체계화했다. 같은 해, 그가 학술지에 보낸 한 통의 편지가 컴퓨터 과학사를 갈랐다 — 「GOTO문 유해론」.

1972년 그는 ACM 튜링상을 받았다. 수상 강연 「겸손한 프로그래머」에서 그는 자기 분야를 향해 칼끝을 겨눴다. 1973년부터는 버로우즈 연구 펠로우로, 1984년부터는 텍사스 대학 오스틴 캠퍼스에서 가르쳤다. 그는 컴퓨터 대신 만년필을 들었고, 타이핑 대신 손글씨를 고집했으며, 출판을 염두에 두지 않고 글을 썼다 — 그것이 그가 가장 자랑스러워한 "과학적" 발견이었다. 2002년 8월 6일, 그는 고향 네덜란드 뉘넨에서 눈을 감았다.

한 줄로 다익스트라에게 프로그래밍은 코드를 치는 기술이 아니라, 인간 정신의 한계 안에서 복잡성을 조직하는 수학적 활동이었다. 이 아카이브의 14편은 그 신념이 어떻게 단련되었고, 어떻게 시대와 충돌했는지를 보여준다.

경구그의 목소리

다익스트라는 재치와 웅변으로 유명했다. 그의 문장은 단정적이고, 도발적이며, 종종 잔인할 만큼 정확했다. 몇 개의 경구만으로도 그의 정신의 형태를 짐작할 수 있다.

Aphorism테스트의 한계

"프로그램 테스트는 오류가 존재한다는 것을 보여줄 수 있을 뿐, 결코 그 부재를 보여주지 못한다."

Aphorism잘못 던져진 질문

"컴퓨터가 생각할 수 있는지 묻는 것은 잠수함이 헤엄칠 수 있는지 묻는 것과 같다."

Aphorism학문의 초점

"컴퓨터 과학은 천문학이 망원경에 관한 학문인 만큼만 컴퓨터에 관한 학문이다."

또 하나 "컴퓨팅 실천에서는 우리가 엉망으로 만들 수 있는 재량이 너무 많기 때문에, 수학적 우아함은 대체 가능한 사치가 아니라 생사의 문제다."

분류 01교육 철학 · 6편

다익스트라에게 교육은 전쟁터였다. 그는 대학이 산업의 직업훈련소로 전락하는 것을, 교과과정이 학생의 직관에 영합해 끊임없이 "유아화"되는 것을 견디지 못했다. 이 여섯 편은 프로그래밍이 본질적으로 지적 활동이며, 그것을 제대로 가르치는 일이 왜 그토록 어렵고 또 잔인한지를 다룬다.

EWD340 · 1972겸손한 프로그래머

튜링상 수상 강연. 자전적 회고를 통해 "지적 관리 가능성"과 "관심사의 분리"를 제시하며, 인간 정신의 한계를 존중하는 겸손이 좋은 프로그래밍의 출발점임을 역설한다.

이 글 읽기 →

EWD1036 · 1988컴퓨터과학을 제대로 가르치는 것의 잔인함

그의 가장 논쟁적인 교육 에세이. 컴퓨터가 두 가지 "급진적 신기함"을 구현한다고 주장하며, 의인화 은유의 금지와 형식적 방법 중심의 입문 과정을 제안한다.

이 글 읽기 →

EWD831 · 1982왜 번호 매기기는 0부터 시작해야 하는가

짧지만 영향력 있는 글. 반열린구간 [a,b) 표기의 우아함을 논증하고, 현대 거의 모든 언어가 0-기반 인덱싱을 채택하게 된 이론적 근거를 제공한다.

이 글 읽기 →

EWD447 · 1974과학적 사고의 역할

"관심사의 분리(separation of concerns)"라는 용어가 처음 명명된 문서. 과학적 사고란 한 번에 한 측면만을 그 자체의 일관성을 위해 연구하려는 의지임을 밝힌다.

이 글 읽기 →

EWD1000 · 1987스물여덟 해

1000번째 EWD를 기념하는 회고. 타자기와 복사기, 손글씨로의 전환을 회상하며, "출판을 염두에 두지 않고 글을 쓰는 습관"을 자신의 최고 발견으로 꼽는다.

이 글 읽기 →

EWD1209 · 1995미국 컴퓨터과학이 불치병처럼 보이는 이유

미국 학술 컴퓨터 과학이 산업적 편견과 반지성주의에 마비되었다고 진단한다. 프로그래밍 방법론은 곧 수학적 방법론이라는 그의 신념이 가장 압축적으로 드러난다.

이 글 읽기 →

분류 02기술 논문 · 5편

이 다섯 편은 그가 학문에 남긴 구조물 자체다. 제어 흐름, 단계적 정제, 동시성, 운영체제 계층화, 자기안정화 — 오늘날 우리가 당연하게 여기는 개념들이 여기서 처음 형태를 갖췄다.

EWD215 · 1968GOTO문 유해론

"X Considered Harmful" 제목 형식의 원조. 무제한적 goto가 과정의 진행을 기술할 의미 있는 좌표계를 파괴한다고 논증하며 구조적 프로그래밍 운동에 불을 붙였다.

이 글 읽기 →

EWD249 · 1969구조적 프로그래밍에 관한 노트

구조적 프로그래밍의 개념적 기초. 열거·귀납·추상화라는 세 정신적 도구, 단계적 정제, 정확성 증명을 다룬다. "테스트는 버그의 부재를 증명할 수 없다"가 처음 등장한다.

이 글 읽기 →

EWD123 · 1965협력하는 순차 프로세스

동시성 프로그래밍의 초석. 세마포어와 P/V 연산, 상호 배제, 생산자-소비자, 잠자는 이발사, 교착 상태와 은행원 알고리즘이 모두 여기서 소개되었다.

이 글 읽기 →

EWD196 · 1968THE 다중프로그래밍 시스템의 구조

운영체제 설계의 고전. 6레벨 계층 구조, 순차 프로세스의 사회, 선험적 정확성 증명. "예방이 치료보다 낫다"는 설계 철학이 처음 천명된다.

이 글 읽기 →

EWD391 · 1973분산 제어에도 불구한 자기안정화

"자기안정화(self-stabilization)" 개념을 처음 정의하고 증명한 기념비적 논문. 링 위의 유한 상태 기계들이 임의의 초기 상태에서 적법한 상태로 수렴함을 보인다.

이 글 읽기 →

분류 03비평과 논쟁 · 3편

다익스트라는 싸움을 피하지 않았다. 형식적 증명을 폄하하는 논문에, 과장된 튜링상 강연에, 컴퓨터 과학을 위협하는 시대의 흐름에 그는 정면으로 맞섰다. 이 세 편에서 그의 펜은 가장 날카롭다.

EWD638 · 1978중세 시대의 정치 팜플렛

드밀로·립턴·펄리스의 「정리와 프로그램 증명의 사회적 과정」에 대한 신랄한 반박. 형식적 증명의 가치를 옹호하며 반지성주의적 논증을 "정치 팜플렛"으로 규정한다.

이 글 읽기 →

EWD692 · 1978백커스 튜링상 강연 비평

존 백커스의 1977년 튜링상 강연 「프로그래밍은 폰 노이만 스타일에서 해방될 수 있는가」에 대한 비평. 함수형 프로그래밍의 주장이 과장되었다고 본다.

이 글 읽기 →

EWD898 · 1984컴퓨터 과학에 대한 위협들

ACM 기조연설. 하드웨어 중심주의, 복잡성에 대한 도취, "현자의 돌과 불로장생약"을 좇는 만병통치약 추구를 컴퓨터 과학의 세 가지 위협으로 진단한다.

이 글 읽기 →

서지아카이브에 대하여

이 독립 서가는 다익스트라 EWD 시리즈에서 14편을 골라 한국어로 옮기고, 각 글마다 해설·원문·핵심 개념 모션을 함께 담았다. 모든 번역은 다익스트라 특유의 단정하고 도발적인 문체를 보존하려 노력했다.

읽는 법 어느 글부터 읽어도 좋다. 다만 그의 사상이 단련된 순서를 따라가고 싶다면 EWD123 → EWD196 → EWD215 → EWD249 → EWD340 순으로 — 동시성에서 출발해 구조적 프로그래밍을 거쳐 겸손의 철학에 이르는 길을 권한다.