Dijkstra는 그의 논문 에서 실제로 컴퓨팅 과학을 가르치는 잔인함에 대해 다음과 같은 입문 프로그래밍 과정을 제안합니다.
한편으로, 우리는 술어 미적분학처럼 보이는 것을 가르치지 만 철학자와는 매우 다르게 행동합니다. 해석되지 않은 공식의 조작에서 초보자 프로그래머를 훈련시키기 위해 논리 대수의 모든 대수적 특성에 대해 학생들에게 친숙하게 부울 대수로 가르칩니다. 직감에 대한 링크를 더 잘 나누기 위해 부울 도메인의 {true, false} 값을 {black, white}로 이름을 바꿉니다.
반면에, 우리는 단순하고 깨끗하며 명령형 프로그래밍 언어를 건너 뛰고 기본 문장으로 여러 번 할당하고 지역 변수에 대한 블록 구조, 문장 구성을위한 연산자로 세미콜론, 훌륭한 대안 구문, 멋진 반복 및 원할 경우 절차 호출. 여기에 부울, 정수, 문자 및 문자열과 같은 최소 데이터 유형을 추가합니다. 중요한 것은 우리가 소개하는 모든 것에 해당하는 의미론이 그와 함께 제공되는 증명 규칙에 의해 정의된다는 것입니다.
처음부터 물론 모든 과정에서 우리는 프로그래머의 업무가 단순히 프로그램을 작성하는 것이 아니라 그가 제안한 프로그램이 동일한 형식의 기능 사양을 충족한다는 공식적인 증거를 제공하는 것이 주된 과제임을 강조합니다. 증거와 프로그램을 직접 디자인하는 동안, 학생은 술어 미적분으로 조작 민첩성을 완성 할 수있는 충분한 기회를 얻습니다. 마지막으로,이 입문 프로그래밍 과정이 주로 공식 수학 과정이라는 메시지를 집으로 가져 오기 위해, 우리는 문제의 프로그래밍 언어가 캠퍼스에서 구현되지 않았으므로 학생들은 프로그램을 시험하려는 유혹으로부터 보호됩니다 .
그는 이것이 진지한 제안임을 강조하고 그의 아이디어가“완전히 비현실적”이며“너무 어려워요”를 포함하여 다양한 가능한 반대 의견을 제시합니다.
그러나 그 연은 가정이 잘못되었다는 이유로 날지 않을 것입니다. 80 년대 초 이래로, 그러한 초급 프로그래밍 과정은 매년 수백 명의 대학 신입생에게 성공적으로 주어졌습니다. [내 경험상, 이것이 한 번 충분하지 않다고 말했기 때문에, 이전 문장은 적어도 두 번 더 반복되어야합니다.]
Dijkstra는 어느 과정을 언급하고 있으며, 그것을 다루는 다른 문헌이 있습니까?
이 글은 1988 년에 Dijkstra가 Austin의 Texas University에있을 때 실마리 였을 것입니다. Dijkstra 아카이브를 주최하지만 규모가 크며이 과정에 대한 다른 사람들의 의견에 특히 관심이 있습니다.
Dijkstra의 아이디어가 여기에서 좋은지 또는 현실적인지 논의하고 싶지 않습니다. 나는 이것을 cstheory.se 또는 cs.se에 게시하는 것을 고려했지만 a) 교육자 커뮤니티가 쉽게 대답 할 수있는 사람을 가질 가능성이 더 높을 수 있기 때문에 여기에 정착했다. 공식 수학. " 동의하지 않으면 이주를 위해 플래그를 지정하십시오.