이 글은 에츠허르 W. 데이크스트라가 1999년에 16년간 가르치던 오스틴 텍사스 대학에서 은퇴하고 2년 후 대학에서 프로그래밍 입문 과정에 자바를 가르치기로 했다는 소식을 듣고 대학에 보낸 편지(원문)입니다. 데이크스트라는 이 편지를 보낸 다음 해에 암으로 사망합니다.
예산 위원회 회원들에게
학부 프로그래밍 입문 교과의 함수형 언어 하스켈을 명령형 언어인 자바로 바꾸려고 한다는 소문 때문에, 그리고 예산 위원회가 잘못된 수준에서 이 결정이 내려지지 않도록 책임져야 한다고 생각해서 이 글을 씁니다.
여러분도 알다시피 이는 사소한 일이 아닙니다. 외지에서 온 동료들은, 엄격한 보수주의에서는 똑같이 평범해 질 것이 강요될 것이라고 가정하고서는, 내가 텍사스 오스틴 같은 곳에서 어떻게 버틸 수 있는지 궁금합니다. 이에 대해 나는 “걱정 마세요. 우리 컴퓨터 과학 학과는 매우 계몽된 곳입니다. 예를 들어, 프로그래밍 입문에 우리는 신입생들에게 하스켈을 가르칩니다”라는 식으로 답하곤 했습니다. 이 대답에 그들은 처음에는 거의 믿지 못하겠다는 반응을 하다가 결국엔 부러워합니다. 대게 그들의 학부 교과가 파스칼에서 C++나 자바 같은 것으로 전환하는 수준을 넘어서지 못하기 때문입니다.
아주 실용적인 이유를 들자면, 대부분 학생들이 어느 정도 명령형 프로그래밍에 친숙하기 때문에 1학년 교과에는 함수형 프로그래밍이 낫습니다. 학생들이 색다른 함수형 프로그래밍을 접하게 되면, 생각보다 프로그래밍에 더 많은 것이 있다는 메시지를 즉시 깨닫게 됩니다. 그리고 그들은 곧바로 고등학교 시절의 프로그래밍 수단으로는 매우 어렵거나 불가능한 해결책을 함수형 프로그래밍이 우아하게 수용한다는 사실을 목격하게 될 것입니다.
이렇게 선호하는 근본 이유는 함수형 프로그램이 명령형보다 수학적인 대상으로 훨씬 쉽게 인식되기 때문에 프로그램에 대한 엄격한 논증이 무엇인지 가르칠 수 있기 때문입니다. ‘지연 평가’로 인한 함수형 프로그래밍의 추가적인 장점은 운영 논증을 하지 않아도 되는 환경을 제공한다는 점입니다.
마지막으로, 하스켈과 자바를 구체적으로 비교했을 때, 하스켈이 완벽하지는 않지만, 엉망인 (그리고 상업적 확산을 위해 광범위한 광고 캠페인과 공격적인 영업 능력이 필요한) 자바보다 몇 등급이나 높은 품질입니다. 대체로 산업계가 형편 없다고 판명된 설계를 “사실상의” 표준으로 받아들이는 것은 나쁘다고 말하기에 충분합니다. 나는 대학이 더 건강한 대안들을 계속 유지해야 한다고 생각합니다.
바이올린이 바이올린 연주자를 만드는 것처럼, 우리 모두는 잘 다루려고 노력하는 그 도구에 의해 만들어집니다. 그리고 이런 점에서 우리의 사고 습관을 만드는 프로그래밍 언어들은 그릇된 영향을 미칩니다. 상황이 이러해서 첫 번째 프로그래밍 언어를 선택하는 일은 매우 중요합니다. 시작부터 배운 많은 것을 스스로 버리도록 강요받게 하기 보다는 컴퓨터 과학 교과 과정의 기초가 될 수 있는 문화를 만드는 수단으로 입문 프로그래밍 과정을 사용하고 싶습니다. 이런 선택이 우리 학부생에 대한 중대한 책임을 내포하고 있기 때문에 어떤 일에 대한 아무 책임자에게 맡길 수 없고 예산 위원회가 해야만 하는 것입니다. 이것은 공무원이나 직업 정치인에게 맡겨질 수 있는 것이 아닙니다. 지금 책임있는 정치가가 필요합니다.