Edsger W. Dijkstra가 소프트웨어 공학 학생들의 질문에 답하며, 형식적 추론, 교육의 역할, 도구와 방법론, 산업과 학계의 관계 등에 대한 견해를 간결한 논제로 제시한다.
소프트웨어 공학 학생들의 질문에 대한 답변
[질문의 대략적 재구성은 독자의 연습 문제로 남겨 둔다.]
칠판 -> 오버헤드 프로젝터 -> 파워포인트
[의학 연구자가 자신이 연구하는 질병을 직접 앓을 필요는 없다.]
[의학 연구자가 더 많은 의약품 시장을 만들려고 새 질병을 개발해야 하는 것은 아니다.]
[사회가 요구하는 것은 대체로 널리 이해되어 있으며, 그것을 위해 굳이 대학이 필요하지 않다; 대학은 다른 누구도 제공할 수 없는 것을 제공해야 한다.]
[오래전에, 내가 새로운 조수를 쓸 수 있었다면 한 가지 전제 조건은 "FORTRAN에 사전 노출 없음"이었다. 그리고 시베리아의 고등학교에서는 BASIC의 교육이 허용되지 않았다.]
우리는 프로그래머가 인공물의 세계에서 산다는 사실을 결코 잊지 말아야 한다. 이는 대부분 다른 과학자들과의 중요한 차이점이다. 프로그래머는 건전한 프로그래밍 기법이 얼마나 적용 가능한지를 묻기보다, 그것들이 적용될 수 있는 세계를 만들어야 한다. 그것이 고품질 설계를 제공할 수 있는 그의 유일한 길이다. 여기에 EWD898 (1984)에서 한 구절을 덧붙이고자 한다.
"기계의 용량은 이제 우리가 엉망으로 만들 공간을 아주 넉넉히 제공한다. 일을 망칠 수 있는 기회가 무한하다! 사물을 충분히 단순하게 유지하려는 엄격한 지적 훈련을 개발하는 일은, 이런 환경에서는 기술적으로도 교육적으로도 만만치 않은 도전이다."
"원래의 질문으로 돌아가자. 컴퓨팅 과학이 컴퓨터 산업을 구할 수 있는가? 나의 대답은 "컴퓨터 산업이 구원될 수 있다면, 오직 컴퓨팅 과학만이 그것을 해낼 수 있다."이다. 그러나 컴퓨터 산업—특히 이미 잘 자리 잡은 회사들—이 이 견해를 공유하기까지는 오랜 시간이 걸릴지도 모른다. 그들이 자신의 미래를 계획하는 제한된 기간보다 더 오래 걸릴 것은 거의 확실하다. 그동안 장기적 관점을 전통적으로 더 멀리 잡는 학계에는 선택지가 없다. 컴퓨팅이 어떻게 수행되어야 하는지, 그것을 최대한 정교화하여 가르쳐야 한다; 오늘날의 악습을 전파하라는 압력에 굴복한다면, 차라리 문을 닫는 편이 낫다."
그러나 우리가 얼마나 많은 인내를 필요로 하는지 강조하기 위해, 다른 오래된 인용문(1988년)을 소개한다.
"오늘날 크게 찬양받는 첨단기술은 본질적으로 수학적 기술이라는 사실을 알아채는 이가 너무 적다."
(위원장 Dr. E. E. David Jr.의 이름을 따서 부르는 제2차 David 보고서에서)
아니오, 유감스럽게도 컴퓨터 과학은 인터넷의 인기 때문에 피해를 보았다. 과학적 성향이 거의 없는 학생들이 점점 더 많이—아니, 압도적으로!—유입되었고, 연구에서는 지배적인(그리고 다소 천박한) 속도와 용량에 대한 집착만을 더욱 강화했다.
그렇다, 여러분의 우려에 공감한다. 잘 프로그래밍하는 법은—가르칠 수 있는 주제임에도—거의 가르쳐지지 않는다. 상황은 수학과 비슷하다. 공식 교육과정은 수학적 결과들에 국한되어 있고, 수학을 어떻게 하는지는 학생이 말하자면 '삼투'를 통해 흡수해야 한다. 상징 조작과 계산에 기반한 논증을 선호하는 한 가지 이유는, 그것들의 설계가 언어적/도식적 논증의 설계보다 훨씬 더 잘 가르칠 수 있기 때문이다. 그러나 그런 계산적 방법론에 대한 과목을 대규모로 도입하려 하면, 극복 불가능한 정치적 문제에 부딪힐 것이다.
소프트웨어 산업에는 과학이 그들에게 도움이 될지조차 불분명한 기업들이 많이 있다; 과학이 시도해야 하는지조차도 불분명하다.
오스틴, 2000년 11월 28일
prof. dr. Edsger W. Dijkstra
컴퓨터 과학과
텍사스 대학교 오스틴
Austin, TX 78712 - 1188
USA
전사: James Lu.
마지막 수정: 2007년 11월 24일(토).