에츠허르 W. 디익스트라가 컴퓨팅 과학에서 불편한 진실을 어떻게 말해야 하는지 성찰하며, 프로그래밍 언어와 산업 관행에 관한 도발적인 명제들을 열거한다.
상처를 줄지도 모르는 진실을 어떻게 말할 것인가?
때때로 우리는 불쾌한 진실을 발견한다. 그럴 때마다 우리는 곤란에 빠진다. 그것을 숨기는 것은 과학적으로 부정직하므로 우리는 반드시 말해야 하지만, 그렇다고 그것을 말하면 그 대가가 우리에게 되돌아온다. 그 진실이 충분히 비위에 거슬린다면, 청중은 심리적으로 그것을 받아들일 수 없고 우리는 전혀 현실감이 없는 자, 가망 없는 이상주의자, 위험한 혁명가, 어리석게 속기 쉬운 사람 등으로 치부될 것이다. (게다가 그런 진실을 말하는 것은 여러 모임에서 인기 없어지는 확실한 방법이며, 그런 만큼 일반적으로 개인적 위험이 따르지 않는 행위가 아니다. 갈릴레오 갈릴레이를 보라.....)
컴퓨팅 과학은 이 갈등으로 심각한 고통을 겪는 듯하다. 대체로 침묵을 지키며, 관심을 딴 데로 돌려 이 갈등에서 벗어나려 한다. (예를 들어: COBOL에 관해서는 실제로 둘 중 하나만 할 수 있다. 이 질병과 싸우든지, 아니면 그것이 존재하지 않는 척하든지. 대부분의 컴퓨터 과학 학과는 후자의 쉬운 길을 택했다.) 그러나, 여러분, 묻고 싶다. 이것이 정직한가? 우리의 장기적인 침묵이 컴퓨팅 과학의 지적 성실성을 좀먹고 있지 않은가? 침묵을 지키는 것이 과연 품위 있는 태도인가? 아니라면, 우리는 어떻게 목소리를 내야 하는가?
문제의 범위를 가늠하시도록 그러한 진실들을 몇 가지 나열해 본다. (내가 잘 아는 거의 모든 컴퓨팅 과학자들은 그 대부분에 주저 없이 동의할 것이다. 그럼에도 우리는 마치 그것들을 모르는 양 세상이 행동하도록 내버려두고 있다....)
**
프로그래밍은 응용수학의 가장 어려운 분야 가운데 하나이다; 수학 실력이 부족한 이들은 차라리 순수수학자로 남아 있는 편이 낫다.
기계의 가장 쉬운 응용은 기술/과학 계산이다.
우리가 사용하는 도구는 우리의 사고 습관에 깊은(그리고 교활한!) 영향을 미치며, 따라서 사고 능력에도 영향을 미친다.
FORTRAN —"유아병"—은 이제 20년에 가까운 나이가 되었지만, 오늘날 당신이 염두에 두는 어떤 컴퓨터 응용에도 절망적으로 부적합하다: 이제는 너무 투박하고, 너무 위험하며, 사용하기에 너무 비싸다.
PL/I —"치명적 질병"—는 해법 집합보다는 문제 집합에 더 속한다.
BASIC을 먼저 접한 학생들에게 좋은 프로그래밍을 가르치는 것은 사실상 불가능하다. 잠재적 프로그래머로서 그들은 정신적으로 회복 불가능할 정도로 훼손되어 있다.
COBOL을 사용하면 사고가 절름발이가 된다; 따라서 그것을 가르치는 행위는 범죄로 간주되어야 한다.
APL은 완벽하게 밀어붙인 하나의 실수다. 그것은 과거의 프로그래밍 기법을 위한 미래의 언어다: 즉, 새로운 세대의 코딩 부랑배들을 만들어낸다.
일반적인 경영관리 문제, 특히 데이터베이스 관리 문제는 IBMerese로 사고하고, 거기에 엉성한 영어까지 더하는 사람들에게는 지나치게 어렵다.
언어 사용에 관하여: 무딘 도끼로 연필을 깎는 것은 불가능하다. 무딘 도끼 열 자루로 대신해 보려는 것 역시 똑같이 헛된 일이다.
수학적 성향과 더불어, 자신의 모국어를 탁월하게 구사하는 능력은 유능한 프로그래머의 가장 중요한 자산이다.
IBM 장비에 자신을 예속시킨 많은 회사들(그렇게 하면서 악마에게 영혼을 판 셈인데)은 통제하지 못하는 데이터 처리 시스템의 엄청난 복잡성의 무게에 짓눌려 붕괴할 것이다.
우리는 국방부의, 그리고 주로 어느 한 컴퓨터 제조업체의 기술적 실수 위에 어떤 과학적 학문도, 건전한 직업도 세울 수 없다.
컴퓨팅 시스템을 다루면서 의인화적 용어를 사용하는 것은 직업적 미숙함의 징후다.
자신들이 소프트웨어 공학에 기여할 수 있다고 주장함으로써, 소프트 과학자들은 자신들을 더욱 우스꽝스럽게 만든다. (아아, 덜 위험해지는 것도 아니다!) 이름과는 달리, 소프트웨어 공학은 뒷받침을 위해 (잔혹할 정도로) 하드한 과학을 요구한다.
옛 좋은 시절에는 물리학자들이 서로의 실험을 확인 차 반복하곤 했다. 오늘날 그들은 서로의 프로그램을(버그까지 포함하여) 공유할 수 있도록 FORTRAN에 매달린다.
"자연어"로 프로그래밍을 장려하는 프로젝트들은 본질적으로 실패할 운명이다.
**
이 목록만으로도 충분히 우리를 불편하게 만들지 않는가? 우리는 무엇을 할 것인가? 아마도, 그저 일상 업무로 돌아가겠지.......
1975년 6월 18일
Plataanstraat 5
NUENEN – 4565
네덜란드 prof.dr.Edsger W.Dijkstra
Burroughs Research Fellow
추신. "이걸 보내 당신을 방해하지 않았더라면 더 좋았을 것이다."라는 추측이 옳다면, 그것도 불편한 진실 목록에 보태시라.
EWD
전사: 리처드 워커.
마지막 수정: 2008년 4월 3일 (목).