<무기한 폐업>

Micsland.com Season II

학교, 지루한 컴퓨터 프로그래밍 강의시간에 씀
프로그래밍 입문 서적의 도입부는 책마다 다양합니다. 낡은 스타일의 책은 초보자라면 단어만으로도 혼란스러워 할 제어문과 키워드, 변수, 함수 등의 정의를 설명하는 지루하고 비효율적인 방법을 사용합니다. "Hello, World!"를 출력하는 몇 줄의 코드를 분석하는 것으로 언어의 기본 원리와 개념을 설명하는, 예제와 이해를 중시하는 요즘의 스타일도 있습니다.

하지만 입문 서적의 제 1장은 학습자가 프로그램적 사고를 하도록 유도하는 게 가장 중요하다는 게 제 생각입니다. 아무리 훌륭한 예제 위주의 책이라고 해도 '사고하는 법'을 가르치는 게 더욱 효율적이라 생각합니다. 비록 제가 대단한 프로그래머도 아니고 그저 학생일 뿐이지만 이런 교수법이 가장 효율적이라는 생각은 매우 강하게 주장할 수 있습니다. 그 근거로 프로그래밍 언어를 처음 접하는 사람에게 제가 주장하는 교수법으로 'if' 제어문을 설명해 보겠습니다.

아침 일찍 학교에 가야 하는 불쌍한 학생이 있습니다. 이 학생은 7시 이전에 일어나면 여유가 있지만 그 이후에 일어나면 서둘러야만 지각을 면할 수 있습니다.

이 학생의 어머니가 되어 적당한 지시를 내리려면 어떤 방식으로 사고해야 할까요? 답은 아주 단순합니다. 기상 시간이 7시 이전이면 여유있게 준비하라고 지시하고 그렇지 않다면 서두르라고 닦달해야 할 것입니다. 이것을 아래와 같은 형식으로 씁니다.

만약 기상시간이 7시 이전이면: 여유있게 준비하라고 지시한다
그렇지 않으면: 서두르라고 닦달한다

이런 형태로 생각할 수 있으면 나머지는 글자를 기호로 바꿔주는 단순한 작업뿐입니다. C 언어에서는 위 형식을 아래와 같은 형식으로 바꾸어 작성해야 합니다.

if(ì¡°ê±´) {
명령;
} else {
명령;
}

그러면 우리의 '어머니 프로그램'은 아래와 같은 형태가 되겠지요.

if(기상시간이 7시 이전) {
여유있게 준비하라고 지시;
} else {
서두르라고 닦달;
}

이후로는 '기상시간이 7시 이전' 이라는 조건을 '기상시간 < 7시'와 같은 형태의 조건으로 바꾸고 '여유있게 준비하라고 지시'를 '지시("여유있게 준비해라")'와 같은 형태로 고치는 과정이 설명되어야겠죠. 하지만 핵심은 '사고하는 법'입니다. 다시 언급하겠습니다.

만약 기상시간이 7시 이전이면: 여유있게 준비하라고 지시한다
그렇지 않으면: 서두르라고 닦달한다

이런 식으로 사고할 수 있다면 프로그래밍은 거의 다 떼었다고 볼 수 있습니다. 어떤 사람이 위처럼 사고해서 그것을 언어에 맞는 코드로 고치고, 그 코드를 보고 위처럼 이해할 수 있다면 그는 프로그래밍을 할 줄 안다고 말할 수 있을 것입니다. 그렇게 되면 처음 접한 언어도 어느 정도 능숙하게 다룰 수도 있게 됩니다. 구문의 차이가 있을 뿐 프로그래밍의 본질은 대동소이하니까요.

초보자들이 못하는 부분은 구문을 형식에 맞게 작성하는 것이 아니라 이런 형태의 사고를 하는 것입니다. 이것은 여기저기서 단편적인 지식만을 습득한 경우에 특히 두드러집니다. 일부 코드를 보고 시행착오를 통해 '어느 부분을 고치면 어떻게 된다'와 같은 단편적인 지식을 알고 있는 것 만으로는 직접 프로그램을 짜기 어렵습니다. 사고할 줄 알아야 합니다. 또 그렇게 가르쳐야 합니다.
Trackback URL: http://micsland.com/blog/tb/2
스팸 트랙백 문제로 인해 본문에 'http'가 포함되어 있을 경우 트랙백을 받지 않습니다.
기술적으로 해결할 때까지 한시적으로 취한 조치이므로 양해 바랍니다.
(뭐 어차피 트랙백이 올 건도 없습니다만;;)
  • cypher 2006/10/28 x
    CN님 블로그 타고 왔습니다.
    아마 이럴 때 쓰라고 pseudo code 가 있는 게 아닐까요. 물론 한국사람들에게는 어색하겠지만,
    http://gpgstudy.com/gpgiki/ProjectKoreanPseudoCodeVocabulary 이런 제안도 있으니까요.
    (활성화되지는 않았지만요 -_-;;)
  • CN 2006/10/28 x
    저도 사고를 먼저 만들어야 하고 거기에 적합한 방법을 찾아야 한다고 생각합니다. 우리가 (주동적이던 수동적이던) 교육에 실패를 해왔던 것은 적합한 방법을 찾지 못했기 때문이라고 생각합니다.
회원 가입이 되어 있는 분은 로그인 후 코멘트를 남겨주세요.
이름:
비밀번호:
홈페이지:

스팸 방지를 위해 오른쪽 체크박스 중 마지막 것만 체크하세요.
Copyright © by TheMics(Ki-yong Jung). Some rights reverved.

달리 명시하지 않는 한, 이 사이트의 저작물은 Creative Commons License에 의해 이용허락되었습니다.
Except where otherwise noted, this site is licensed under a Creative Commons License.
비밀번호: