인물다익스트라라는 사람
그는 컴퓨터를 사랑하지 않았다. 그가 사랑한 것은 인간의 정신이 거대한 복잡성 앞에서 길을 잃지 않을 수 있다는, 거의 신앙에 가까운 믿음이었다.
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일, 그는 고향 네덜란드 뉘넨에서 눈을 감았다.
경구그의 목소리
다익스트라는 재치와 웅변으로 유명했다. 그의 문장은 단정적이고, 도발적이며, 종종 잔인할 만큼 정확했다. 몇 개의 경구만으로도 그의 정신의 형태를 짐작할 수 있다.
"프로그램 테스트는 오류가 존재한다는 것을 보여줄 수 있을 뿐, 결코 그 부재를 보여주지 못한다."
"컴퓨터가 생각할 수 있는지 묻는 것은 잠수함이 헤엄칠 수 있는지 묻는 것과 같다."
"컴퓨터 과학은 천문학이 망원경에 관한 학문인 만큼만 컴퓨터에 관한 학문이다."
분류 01교육 철학 · 6편
다익스트라에게 교육은 전쟁터였다. 그는 대학이 산업의 직업훈련소로 전락하는 것을, 교과과정이 학생의 직관에 영합해 끊임없이 "유아화"되는 것을 견디지 못했다. 이 여섯 편은 프로그래밍이 본질적으로 지적 활동이며, 그것을 제대로 가르치는 일이 왜 그토록 어렵고 또 잔인한지를 다룬다.
튜링상 수상 강연. 자전적 회고를 통해 "지적 관리 가능성"과 "관심사의 분리"를 제시하며, 인간 정신의 한계를 존중하는 겸손이 좋은 프로그래밍의 출발점임을 역설한다.
그의 가장 논쟁적인 교육 에세이. 컴퓨터가 두 가지 "급진적 신기함"을 구현한다고 주장하며, 의인화 은유의 금지와 형식적 방법 중심의 입문 과정을 제안한다.
짧지만 영향력 있는 글. 반열린구간 [a,b) 표기의 우아함을 논증하고, 현대 거의 모든 언어가 0-기반 인덱싱을 채택하게 된 이론적 근거를 제공한다.
"관심사의 분리(separation of concerns)"라는 용어가 처음 명명된 문서. 과학적 사고란 한 번에 한 측면만을 그 자체의 일관성을 위해 연구하려는 의지임을 밝힌다.
1000번째 EWD를 기념하는 회고. 타자기와 복사기, 손글씨로의 전환을 회상하며, "출판을 염두에 두지 않고 글을 쓰는 습관"을 자신의 최고 발견으로 꼽는다.
미국 학술 컴퓨터 과학이 산업적 편견과 반지성주의에 마비되었다고 진단한다. 프로그래밍 방법론은 곧 수학적 방법론이라는 그의 신념이 가장 압축적으로 드러난다.
분류 02기술 논문 · 5편
이 다섯 편은 그가 학문에 남긴 구조물 자체다. 제어 흐름, 단계적 정제, 동시성, 운영체제 계층화, 자기안정화 — 오늘날 우리가 당연하게 여기는 개념들이 여기서 처음 형태를 갖췄다.
"X Considered Harmful" 제목 형식의 원조. 무제한적 goto가 과정의 진행을 기술할 의미 있는 좌표계를 파괴한다고 논증하며 구조적 프로그래밍 운동에 불을 붙였다.
구조적 프로그래밍의 개념적 기초. 열거·귀납·추상화라는 세 정신적 도구, 단계적 정제, 정확성 증명을 다룬다. "테스트는 버그의 부재를 증명할 수 없다"가 처음 등장한다.
동시성 프로그래밍의 초석. 세마포어와 P/V 연산, 상호 배제, 생산자-소비자, 잠자는 이발사, 교착 상태와 은행원 알고리즘이 모두 여기서 소개되었다.
운영체제 설계의 고전. 6레벨 계층 구조, 순차 프로세스의 사회, 선험적 정확성 증명. "예방이 치료보다 낫다"는 설계 철학이 처음 천명된다.
"자기안정화(self-stabilization)" 개념을 처음 정의하고 증명한 기념비적 논문. 링 위의 유한 상태 기계들이 임의의 초기 상태에서 적법한 상태로 수렴함을 보인다.
분류 03비평과 논쟁 · 3편
다익스트라는 싸움을 피하지 않았다. 형식적 증명을 폄하하는 논문에, 과장된 튜링상 강연에, 컴퓨터 과학을 위협하는 시대의 흐름에 그는 정면으로 맞섰다. 이 세 편에서 그의 펜은 가장 날카롭다.
드밀로·립턴·펄리스의 「정리와 프로그램 증명의 사회적 과정」에 대한 신랄한 반박. 형식적 증명의 가치를 옹호하며 반지성주의적 논증을 "정치 팜플렛"으로 규정한다.
존 백커스의 1977년 튜링상 강연 「프로그래밍은 폰 노이만 스타일에서 해방될 수 있는가」에 대한 비평. 함수형 프로그래밍의 주장이 과장되었다고 본다.
ACM 기조연설. 하드웨어 중심주의, 복잡성에 대한 도취, "현자의 돌과 불로장생약"을 좇는 만병통치약 추구를 컴퓨터 과학의 세 가지 위협으로 진단한다.
서지아카이브에 대하여
이 독립 서가는 다익스트라 EWD 시리즈에서 14편을 골라 한국어로 옮기고, 각 글마다 해설·원문·핵심 개념 모션을 함께 담았다. 모든 번역은 다익스트라 특유의 단정하고 도발적인 문체를 보존하려 노력했다.