저자: 스티브 피긴스(Stephen Figgins), 역 전순재
2000년 초, 귀도(Guido)가 "모든이를 위한 컴퓨터 프로그래밍(CP4E) 프로젝트"를 선언한지 얼마 지나지 않아, 고 프랭크 윌슨(Frank Willison)이
제프 엘크너(Jeff Elkner)를 인터뷰한 적이 있다. 엘크너는 정열적인 교사로 버지니아주 알링턴에 있는 요크타운(Yorktown) 고등학교에서 아이들을 가르치고 있으며, C++ 대신 파이썬을 사용하여 프로그래밍을 가르치고 있었다. 그리고 모든 학생들이 파이썬을 사용함으로써 보다 쉽게 프로그래밍에 접근할 수 있기를 희망하였다.
그 때 이후로 이 프로젝트는 더욱 많은 학생들에게 영향을 미쳤을 뿐만 아니라 세상 밖으로 나오게 될 정도로 성숙하였다. 요크타운의 파이썬 공동체는 성장하였고, 프로그래밍 문화도 성장하였다. 학생은 해를 거듭할 수록 서로 도움을 주고받으면서 보다 수준 높은 일들을 한다. 올해, 엘크너는 그가 가르친 상급반 학생들이 개발한
pyKarel이라는 도구를 사용하여 새로운 학생들을 가르치고 있다.
PyKarel은 로봇 Karel을 파이썬으로 구현한 것이다. 로봇 Karel은 80년대에 소개되어 파스칼 프로그래밍 언어로 학생들이 도약할 수 있도록 하는데 목적을 두었다. 가상 로봇이 미로를 돌아 다니며, 벽과 비퍼(beeper)에 상호작용하면서, 주어진 작업을 수행한다. 파스칼적인 구조를 가지고 있지만, 명령어는 다음과 같이 다섯 개 뿐이다. 이동(move), 왼쪽으로 전환(turn left), 비퍼 들기(pick beeper), 비퍼 놓기(put beeper), 끄기turn off). 대략 18가지 상황조건이 있는데 대부분은 반복적이어서 "북쪽에 마주하면"이나 "남쪽을 마주하면"과 같은 것들이다. 변수는 전혀 없다. Karel의 장점은 시각적으로 보인다는 것과 간단하다는 것이다.
파이썬 프로그래머인 스티브 호웰(Steve Howell)은, 그가 예전 대학시절 Karel을 처음 마주할 때를 회상하면서, pyKarel의 첫 버전을 작성하였다. PyKarel은 Karel 프로그램을 취해 파이썬 프로그램으로 번역한 것이다. 호웰(Howell)은 커시스(curses) 프로그램으로 오리지날 시각적 컴포넌트를 작성하였다. 본질적으로, 그것은 아스키(ASCII) 그래픽이었다. pyKarel를 작성한 후, 그는 그 프로그램을 사용해 줄 사람을 찾았다. 그리고
파이썬 교육 동호회 메일링 리스트를 통해 알게 된 제프리 엘크너(Jeffrey Elkner)에게 연락을 하였다.
엘크너의 뛰어난 제자 몇 명이 pyKarel에 작업을 시작하였다. "정말 놀라울 뿐이었지요. 프로젝트를 진행하는데 해야 할 일이 별로 없었기 때문이었습니다."라고 호웰(Howell)은 말했다. "학생들이 넘겨 받자, 프로젝트는 독자적으로 스스로 굴러갔습니다." 그들이 제일 먼저 하고자 한 일은 커시스(curses) 인터페이스를 없애고 pyKarel을 약간 더 매력적으로 만드는 것이었다. 대신에 wxWindows를 사용하기로 결정했고, 도움은 파이썬 개발자인 미쉘 무어(Michele Moore)에게 받았다. 호웰과 무어가 약간 조언해준 것을 제외하면, pyKarel의 개발자들인 와셈 다허(Waseem Daher), 도날드 올레리치(Donald Oellerich), 렉스 브레즈니(Lex Berezhny)는 모두 학생들이다.
"학생들 스스로가 pyKarel을 개발하면서 배우게 된 것들을 그대로 학생들에게 가르쳐 줄 수는 없었을 겁니다"라고 엘크너(Elkner)는 말했다. "전문 프로그래머인 스티브(Steve)는 학생들을 내가 데려다 줄 수 없는 저 너머까지 데리고 갈 수 있습니다. (이 프로젝트에 대하여) 내가 가장 기쁘게 생각하는 일은 이 아이디어가 교실 벽에서 멈추지 않는다는데 있습니다."
호웰과 무어 같은 많은 전문가들도 학생들을 가르치고 싶은 생각은 있지만 학교에까지 오려면 상당한 시간이 소요되기 때문에 어려운 일이라는 깨닫는다. 하지만 전자우편과 웹 덕분에 이제 그들과 같은 전문가들이 참여하기가 훨씬 더 쉬어졌다. 이에 대해 엘크너는 다음과 같이 말한다. "미셸은 학생들의 개발 작업을 도와주는 중요한 역할을 하고 있지요. 몇 년 전만 하더라도 전혀 생각하지 못했을 테지만 이제는 인터넷을 사용할 수 있기 때문에 교실 수업의 한계가 없어졌습니다."
PyKarel는 신입생들에게도 귀중한 도구이다. 엘크너는 올해의 첫-수업 학생들과 함께 3주간의 로봇 Karel 프로그래밍을 시작하였다. 새로운 학생들은 상급반 학생들과 함께 서로 도움을 주고받으면서 새로운 것을 만드는데 도움이 될 수 있도록 그 도구 사용법을 숙달하게 되었다.
이 강좌는 단순하게 미래의 프로그래머들을 위한 것만은 아니다. 그 강좌는 누구나 수강할 수 있는 선택 과목으로 더 많은 학생들에게 접근하려는 목표를 가지고 있다. 많은 학생들에게 있어 어쩌면 이것은 자신만의 프로그래밍 경험에 불과할 수도 있다. 다른 성공으로 인도하는 디딤돌이 아니다. 단순하고 시각적인, 로봇 Karel은 즉시 그들에게 성취감을 맛보게 해 준다. 엘크너는 이에 대해 다음과 같이 덧붙였다. "너무 단선적인 프로그래밍은 학생들을 잃기 쉽습니다. 학생들은 프로그래밍을 할 수 없다는 사실에 좌절하여 "프로그래밍은 나에게 맞지 않아"와 같은 감정을 가집니다. 올해에는 학생들이 로봇 Karel의 사용을 너무나 재미있게 생각하는 것을 보고 나는 놀라움을 금할 수 없었습니다."
엘크너의 새 학생들은 지금 Karel를 끝내고 파이썬 과목을 나갈 예정이다. 상급반 학생들은 아직 pyKarel을 마치지 못하고 있다. 그들은 두 가지 일을 살펴볼 생각이다. 간단한 객체 지향 변형의 Karel 언어와 파이썬적인 Karel으로 Karel++의 구현을 만들어 보는 것, 파스칼류의 구문 대신에 파이썬적인 구문을 사용하는 Karel 언어의 사용이 바로 그것이다.
pyKarel은 그냥 파이썬 코드를 만들어 내기 때문에 어느 것이든 쉽게 할 수 있을 것이다. 그들은 Karel++이나 혹은 파이썬적인 버전으로부터 똑같은 파이썬 코드를 만들어 낼 수 있을 것이다. 엘크너는 파이썬적인 버전에 관해서는 잘 모르겠다고 말했다. "약간 안타깝습니다. 내가 파이썬을 좋아하는 이유 중의 하나가 들여쓰기된 블록 구조인데, 학생들이 처음에 곤란에 빠지는 문제는 "블록이 무엇인가"라는 것이지요. 들여쓰기된 블록을 이해하려면 좀 시간이 걸립니다." 명시적인 Begin과 End 서술문이라는 Karel의 파스칼적인 구조 덕분에, 블록 구조가 보다 명료하게 이해될 수 있다. 그렇지만 Karel은 파스칼에 대한 선구자를 의도한 것이 아니었다. 반면 엘크너는 pyKarel을 파이썬에 대한 선구자로 사용한다.
"나는 그냥 파일이 무엇인가 그리고 어디에 어떻게 파일을 저장할 것인가를 보여주기 위해 사용할 뿐입니다. 그 정도면 충분한 문제거리이지요"라고 엘크너는 말했다. 이 새 학생들은 운영체제를, 특히 리눅스를 다루는 법도 역시 배워야 한다. 엘크너의 수업에 사용되는 컴퓨터는 약 90 퍼센트가 리눅스이다. 그렇지만 고급반 학생들은 마이크로소프트 윈도우즈 시스템에서도 역시 pyKarel이 올바로 작동하도록 작업하고 있는 중이다. 그렇게 배울 것이 많기 때문에 엘크너는 프로그래밍의 첫 몇 주를 평범하고 간단한 Karel을 다루게 되어 다행으로 생각한다.
엘크너의 언약에도 불구하고, 이 시점에서 pyKarel에 일어나는 일들은 어쩌면 엘크너의 손을 벗어날 수도 있다. pyKarel의 개발을 지휘하고 있는 학생들이 어떻게든 파이썬적인 Karel 버전을 만들어서 엘크너가 미처 생각지 못한 것들을 추가해 구축한다고 할지라도 나는 놀라지 않을 것이다. 그것은 진정한 오픈 소프 프로젝트이고, 이것을 교실 안에 가둬 둔다고 해도 그렇게 되지 않으리라는 것을 알기 때문이다.
스티브 피긴스(Stephen Figgins)는 오라일리 네트워크(O"Reilly Network)의 편집자이자 파이썬 개발 센터의 편집국장이다.