교육용 프로그래밍 언어

@codemaru · December 31, 2006 · 7 min read

2000년도에 우리 과는 신입생들에게 C언어를 가르쳤다. 컴퓨터 프로그래밍이란 작업을 한번도 해보지 않은 신입생들에게 C언어는 굉장히 딱딱한 수업이었다. 열정적인 학생들도 중도 포기하는 경우가 많았으며, 포인터 정도까지 가면 대부분 내부적으론 포기하는 상태가 되곤 했다. 그러면서 프로그래밍이란 작업에 흥미를 극도로 잃게 되는 경우가 많았다. 더욱이 같은 수업에 C언어를 잘 아는 친구라도 있으면 그 좌절감은 더해진다. 그리곤 2학년 전공을 단지 프로그래밍 때문에 전자과로 간다. 이렇게 점차 우리과에 지원하는 학생들이 줄어들자 교수님들은 고민하게 되었다. 그래서 더이상 1학년때 C언어를 가르치지 않고 Visual Basic을 가르치기로 결정했다. Visual Basic은 C보다는 좀 더 루즈하고, 이름에서 들어 나듯이 Visual 적인 요소가 강하기 때문이었다.

지난 학기에 난 일학년들과 같이 Visual Basic을 듣게 되었다. 한 학기를 듣고난 후 나의 느낌은 "이게 프로그래밍 언어를 가르쳐주는 수업인가?" 라는 것이었다. 시종일관 가르쳐 주는 거라곤 메뉴를 붙이고, 버튼을 더블 클릭해서 색깔을 바꾸고 하는 것들이었다. 그건 언어를 배우는 것이 아니라 툴 사용법을 배우는 과정이었다. 학생들이 자신의 생각을 컴퓨터 언어로 표현하는 능력은 전혀 향상되지 않으리라는 것이 나의 생각이다. Visual Basic은 잘못된 선택이었다. 차라리 Basic이 더 낫다고 생각한다.

그렇다면 컴퓨터 언어를 한번도 접해보지 않은 학생들에게 가르치기에 가장 적합한 언어는 무엇일까? 얼마전 까지만 해도 나는 파이썬 정도면 좋겠다고 생각했다. 그래서 당연히 권해주고는 했다. 하지만 그것은 전적으로 나의 눈높이에 맞춘 생각이라는 것을 요즘 깨닳았다. 이유는 학생들은 파이썬 인터프리터를 설치하고 환경을 정비하는 것 자체도 힘들어 하기 때문이다. 차라리 이런 점에서는 Visual Basic이 더 쉬울 수 있는 것이다. 더욱 심각한 것은 요즘 학생들은 화면에 Hello, World를 출력하는 것을 더 이상 신기해 하지 않는 점이다. 그들은 Visual과 GUI에 익숙한 세대인 것이다.

그렇다면 어떠한 요소를 가져야 교육용으로 적합할까? 가장 먼저 필요한 요소는 쉬워야 한다는 것이다. 앞서 살펴보았던 C언어의 실패가 교훈이된다. 어려워서는 학생들의 흥미를 유발시키기 힘들다. 둘째는 개발 환경 구축이 쉬워야 한다는 점이다. 이건 파이썬의 교훈에서 우리가 배울 수 있다. 진입 장벽을 낮추어야 좀 더 쉽게 접근할 수 있는 것이다. 셋째는 언어가 로직을 가르칠 수 있는 수준이어야 한다는 점이다. 이런 점에서 이벤트 드리븐 방식의 Visual Basic 보다는 고전적인 절차 지향적인 언어들이 강점을 가진다. 처음 배우는 학생들은 자신이 의도하지 않은 곳에서 갑자기 뭔가가 호출된다는 사실에 굉장한 스트레스를 받는다. 넷째는 실용성이다. 실용성 없는 언어를 배우는 것은 수학을 배우는 것만큼이나 재미 없는 일일 것이다. 실컷 언어를 배웠는데 그걸로 유용한 것들을 만들수 없다면 얼마나 서글픈 일일까? 다섯째는 가장 중요한 요소다. 그들이 만든 것을 친구에게 자랑할 수 있어야한다. 태권도를 배우면 한번 싸움을 해보고 싶은 것과 마찬가지로 프로그래밍을 배우면 자기가 만든 것을 친구에게 자랑하고 싶어진다. 그래서 열심히 만들어서 친구에게 메신저로 보내준다. 하지만 그가 만든 실행 파일이나 스크립트를 보냈을때 그게 상대방 컴퓨터에서 정상적으로 동작할 확률은 의외로 낮다. 런타임이 없는 경우도 많고, 파이썬 인터프리터가 설치된 친구 컴퓨터는 거의 없을 것이기 때문이다.

이 다섯가지 요소를 만족하는 언어는 무엇일까? 난 자바스크립트를 추천하고 싶다. 자바스크립트는 굉장히 쉽다. 몇 가지 기본적인 사항만 익히고 나면 바로 자신의 생각을 표현할 수 있다. 개발 환경 구축은 별도로 필요하지도 않다. 대부분의 컴퓨터에 브라우저가 설치되어 있기 때문이다. 좀 더 본격적으로 해보려는 학생들에겐 괜찮은 에디터(editplus) 정도만 있으면 된다. 자바 스크립트는 말 그대로 물 흐르듯 위에서 아래로 진행되는 언어다. 거기다 구조적 프로그래밍에 사용되는 모든 흐름 제어 키워드를 가지고 있다. 따라서 학생들의 로직 표현력 향상에 도움을 줄 수 있는 언어다. 네번째와 다섯번째는 별도로 설명할 필요도 없이 충족되는 요소다.

@codemaru
돌아보니 좋은 날도 있었고, 나쁜 날도 있었다. 그런 나의 모든 소소한 일상과 배움을 기록한다. 여기에 기록된 모든 내용은 한 개인의 관점이고 의견이다. 내가 속한 조직과는 1도 상관이 없다.
(C) 2001 YoungJin Shin, 0일째 운영 중