다익스트라가 말하는 하스켈과 자바

ko생성일: 2025. 9. 19.갱신일: 2025. 9. 23.

2001년 에츠허르 W. 다익스트라가 텍사스대 예산위원회에 보낸 편지를 통해, 신입생 프로그래밍 수업에서 하스켈 같은 함수형 언어를 자바로 대체하려는 움직임을 비판하고, 함수형 프로그래밍과 지연 평가의 교육적 가치, 첫 프로그래밍 언어 선택이 학생들의 사고에 미치는 중대한 영향을 논한다.

2001년, 에츠허르 W. 다익스트라는 텍사스대학교 예산위원회에 편지를 보냈습니다. 여기에서 PDF를 볼 수 있으며, 모두가 읽을 수 있도록 제가 옮겨 적었습니다. 안타깝게도 교육과정은 자바로 바뀌었습니다. 관련해서, MIT의 The Structure and Interpretation of Computer Programs에서는 알고리즘 언어인 스킴(Scheme)이 6.01 버전에서 파이썬으로 대체되었습니다.

To the members of the Budget Council

저는 우리 학부 교육과정의 프로그래밍 입문 과목에서 함수형 프로그래밍 언어 하스켈을 명령형 언어 자바로 대체하려는 움직임이 있다는 소문을 듣고 이 편지를 씁니다. 그리고 이런 경우에는, 잘못된 수준에서 결정이 내려지지 않도록 예산위원회가 책임을 져야 한다고 생각하기 때문입니다.

이 일은 결코 사소하지 않습니다. 주(州) 밖의 동료들은 (여전히!) 텍사스의 공고한 보수성이 같은 만큼의 공고한 미흡함을 보장한다고 자동적으로 가정하면서, 제가 오스틴 같은 곳에서 어떻게 버티는지 종종 의아해합니다. 그럴 때 저는 보통 이렇게 답합니다. “걱정 마세요. 우리 컴퓨터과학과는 꽤 깨어 있는 곳입니다. 예를 들어, 프로그래밍 입문 과목에서 신입생들에게 하스켈을 가르치죠.” 그러면 그들은 먼저 거의 믿지 못하는 반응을 보이고, 이어서 부러워합니다 — 보통 그들의 학부 교육과정은 파스칼에서 C++이나 자바 같은 것으로의 전환 충격에서 아직 회복하지 못했거든요.

신입생 과목에서 함수형 프로그래밍을 선호할 아주 실용적인 이유 하나는 대부분의 학생들이 이미 명령형 프로그래밍에 어느 정도 익숙하기 때문입니다. 함수형 프로그래밍이라는 새로움을 마주하게 하면, 프로그래밍에는 자신들이 생각했던 것보다 더 많은 세계가 있다는 메시지가 즉시 분명하게 전달됩니다. 그리고 곧 그들은, 함수형 프로그래밍이 고등학교 시절 사용하던 프로그래밍 수단으로는 매우 어렵거나 (혹은 불가능한) 해법들을 우아하게 허용한다는 것을 알게 됩니다.

보다 근본적인 이유는 함수형 프로그램이 명령형 프로그램보다 훨씬 더 수학적 객체로서 이해되기 쉽기 때문에, 프로그램에 대한 엄밀한 추론이 무엇인지 가르칠 수 있다는 점입니다. “지연 평가(lazy evaluation)”를 동반한 함수형 프로그래밍의 추가적인 이점은 수행 과정 중심의 추론(operational reasoning)을 억제하는 환경을 제공한다는 것입니다12.

마지막으로 하스켈과 자바를 직접 비교하자면, 하스켈은 완벽하진 않지만 품질 면에서 자바보다 몇 단계나 더 높은 수준이며, 자바는 혼란스러운 잡탕입니다(상업적 수용을 위해 대대적인 광고 캠페인과 공격적인 영업이 필요했죠). 전반적으로 업계가 형편없음이 분명한 설계를 “사실상의(de facto)” 표준으로 받아들이는 것만 해도 충분히 나쁜 일입니다. 개인적으로 저는 대학이 더 건전한 대안들을 계속 살아 있게 유지해야 한다고 생각합니다.

바이올린만이 바이올리니스트를 빚어내는 것은 아닙니다. 우리가 스스로 익혀 쓰는 도구들은 모두 우리를 빚어내며, 이 점에서 프로그래밍 언어는 교묘한 영향을 미칩니다. 곧, 그것들이 우리의 사고 습관을 형성합니다. 이 사정 때문에 첫 프로그래밍 언어의 선택이 그토록 중요한 것입니다. 우리는 입문 과목을 컴퓨팅 과학 커리큘럼의 토대가 될 수 있는 문화를 만드는 수단으로 쓰고 싶지, (그게 가능하기나 하다면 말이죠: 한 번 과거가 된 것은 영원히 그렇게 남으니) 많은 ‘잊어버리기’부터 강요받는 것으로 시작하고 싶지는 않습니다. 이 선택은 우리 학부생들에 대한 중대한 책임을 함축하며, 따라서 그 책임을 어떤 조직의 우연한 의장이 아니라 예산위원회가 져야 합니다. 이런 일은 공무원이나 정치인에게 맡겨둘 수 있는 것이 아닙니다. 여기에는 국정가(statesmen)가 필요합니다.

오스틴, 2001년 4월 12일

Edsger W. Dijkstra


  1. On the cruelty of really teaching computing science↩︎

  2. Real mathematicians don’t prove↩︎