ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 코딩 교육을 위해 초등학교 학생에게 vi를 가르치겠다고?
    IT topics 2018. 1. 25. 09:22
    반응형

    좀 시간이 지난 뉴스이기는 하지만 웃기다 못해 황당한 뉴스 하나가 기억나서리 그 얘기를 좀 적어보려고 한다. 내년부터 초등학교 5, 6학년부터 코딩 교육이 교과 과정에 포함된다는 뉴스는 익히 들어서 알고 있었는데 그러다보니 코딩 학원 얘기도 나오고 있고 내 주변의 몇몇 지인들도 나한테 와서 코딩 학원 하나 만들어서 운영해보자고 제의하는 분들도 있었다(지금은 직접적으로 업으로 개발을 하지 않고 시스템, 서비스 기획 및 설계를 하는 아키텍쳐지만 그래도 4년전까지는 15년간 개발을 해온, 그것도 서버 프로그래밍과 임베디드 프로그래밍을 해오던 보안 솔루션 개발자였기에 말이지). 뭐 일단 내 일에 집중하기 위해 제의는 거절하고 있지만 말이지.

    뭐 어찌되었던 초등학교 교과과정에 코딩이 들어있기 때문에 이에 대한 관심이 학부모 사이에서 많이 있는 것이 사실이다(뭐 학원 얘기도 그런 의미에서 나온 것이 아니겠는가 싶다). 실제로 코딩 학원들이 많이 생기고 있고 운영중인 것으로 안다. 커리큘럼을 보지는 못했지만 대상이 초등학교 학생인지라 그렇게 어려울꺼 같지는 않다는 생각이 든다. 그런데 최근 본 뉴스는 이런 내 생각을 확 깨버린 상황이다.

    초딩에게 대학 입시를 위해 대회 준비용으로 VI를 권한다?

    제목부터가 확 깬다. 초등학생에게 VI 사용한 코딩작업? ‘초2때부터 대회 준비 해야 대학입시 유리’​라는 제목의 기사를 보게 되었는데 내용을 보니 강남구 초등학생들 사이에서 코딩 과외 교육이 유행이고 학교에서 가르치는 수준이 걸음마 수준인지라 특성화 고교나 대학전공자들이 배우는 수준을 초딩에게 가르치고 있다는 코딩 학원 관계자 얘기도 있다. 코딩 교육이 정규교과에 들어가니 학원들이 미리 선점을 해서 원생늘리기를 하는 모습이라는 것이 이 기사의 핵심이다.

    vi란?

    vi (보통 vim을 vi라고 많이 부른다)

    일단 개발자들은 이 기사를 보면 황당하게 생각할 것이다. vi라니. vi는 리눅스를 설치하면 기본으로 설치되는 텍스트 에디터인데 윈도의 노트패드를 생각하면 될 듯 싶다. 물론 GUI 기반에서 동작되는 노트패드와 달리 vi는 개발에 최적화된 에디터 프로그램이다. 개발툴은 아니다. 자체적으로 컴파일하는 기능이나 해석해서 실행하는 인터프리터 기능은 없으니 말이다. 컴파일은 보통 gcc(C언어나 C++언어), python, javac(JAVA) 등을 별도로 설치해서 사용해야 한다(gcc의 경우 기본 설치는 아니지만 보통은 깔려있다 ㅎㅎ).

    vi는 말 그대로 텍스트 에디터지만 코딩은 일단 텍스트 에디터로 충분히 할 수 있으니 문제가 될 것은 없고 또 vi만큼 개발에 최적화된 다양한 기능을 제공하는, 그러면서도 가볍고 빠른 에디터도 별로 없는지라 리눅스, 유닉스 기반의 서버 프로그래밍, 혹은 임베디드 프로그래밍, 스크립트 제작 등에서는 거의 필수적으로 사용되는 프로그램임은 분명하다.

    하지만 vi는 일반적인 텍스트 에디터와 많이 다르다. 보기모드와 편집모드, 명령모드가 나뉘어있고 메뉴선택을 통한 제어가 아닌 명령모드에서 명령어를 직접 입력해서 저장을 하든, 파일을 읽어들이든, 끝내든 작업을 해야 한다. 물론 명령모드의 명령을 잘 이용하면 정말 편하게 프로그래밍을 할 수 있기 때문에 리눅스, 유닉스 기반의 프로그래밍을 하는 개발자들은 기본으로 알고 사용하는 에디터임은 분명하다.

    윈도 개발자에게는 친숙한 Visual Studio

    하지만 같은 개발자라고 하더라도 윈도에서 Visual Studio나 리눅스 기반이라고 하더라도 GUI 모드에서 Eclipse를 사용하던 개발자가 터미널을 띄우고 vi로 소스를 수정하라고 하면 익숙해지기 전까지는 엄청나게 힘들어한다. vi는 개발자들 사이에서도 좀 하드코어적인 에디터(기본 에디터임에도 불구하고)에 속한다. 물론 vi보다 더 하드코어를 자랑하는 Emacs라는 녀석도 존재하지만 터미널에서 손쉽게 코딩을 할 수 있는 pico라는 에디터(이 녀석도 터미널에서 사용이 가능하다)에 비하면 vi는 정말로 어렵다.

    리눅스나 유닉스 기반의 프로그램 개발을 밥벌이로 하는 전문 프로그래머가 사용하는 도구가 vi라는 얘기다. 그런데 이 vi를 초등학교 2학년때부터 배운다고?

    다른 쉬운 툴도 많은데 왜 vi를?

    일단 코딩 교육의 방향이 의심스럽다는 얘기밖에 할 말이 없다. 기본적으로 vi는 리눅스 기반에서 터미널 모드에서 동작하는 프로그램이다. 물론 윈도에서도 vi를 설치해서 사용할 수 있다(윈도용 vim이 존재한다. 아니면 cygwin같은 리눅스 에뮬레이터를 설치해서 터미널 창을 띄워도 쓸 수 있다). 하지만 리눅스에서 터미널로 작업하지 않을 것이라면, 그리고 대부분의 초등학교는 MS 윈도가 설치되어 있을텐데 그렇다면 윈도에서 vi보다 훨씬 편하게 코딩할 수 있는 무료 개발툴들이 많을텐데 왜 하필 vi를 배우게 한다는 것일까?

    노트패드에서도 코딩은 충분히 할 수 있다!

    윈도에서 노트패드로 코딩할 수도 있다. 예전에 내가 아는 어떤 자바 프로그래머는 노트패드로 코딩하고 컴파일(자바에서 컴파일이라는 단어가 좀 그렇기는 하지만 뭐 javac로 class 파일 만들고 java로 실행하니 그냥 통칭 컴파일이라고 하자)해서 작업하는 것도 봤다. 즉, 코딩을 할 수 있는 방법만 알려주면 되지 툴이 중요한 것은 아니라는 얘기다.

    어떤 언어로 코딩 교육을 할지 정해지지도 않았는데?

    그리고 vi는 텍스트 에디터이기 때문에 어떤 언어를 이용해서 코딩을 할 것인지가 중요한데 그것에 대한 얘기는 없고 vi를 가르킨다는 얘기만 나오니 더 황당하다. 이 글을 포스팅하는 시점에서 뉴스를 검색해봐도 어떤 컴퓨터 언어로 코딩 교육을 할 것인지에 대해서 정보를 찾아보기 어렵다.

    코딩 교육용 툴 겸 언어로 각광받고 있는 스크래치

    스크래치, 엔트리 등이 거론되고 있으며 BASIC 언어가 다시 부활할 것이라는 소문도 돌고 있다. 예전에는 웹 서버 프로그램이면 자바, 서버 프로그램이면 C, C++, 임베디드 프로그램이면 C를 많이 사용했고 요즘에는 다양한 분야에서 라이브러리가 풍부한 Python, Ruby, Go 등과 같은 인터프리트형, 혼합(컴파일 요소가 있는)형 언어들이 많이 쓰인다. 웹 언어는 자바 스크립트가 거의 천하통일을 하고 있다지만 웹 서버 언어로 C#.net, JSP, PHP 등의 언어도 많이 쓰고 있다. 개발용으로는 거의 안쓰지만 그래도 수학용 언어로 R이라는 언어(라고 봐야 하는지)도 있다. iOS 앱 개발로는 애플이 만든 Swift라는 언어도 존재한다. 여하튼 엄청 많은데 이 중에서 어떤 언어를 코딩 교육에 채택할지 모르는 상황이다(내가 찾기로는 그렇다). 언어에 따라서 사용하는 툴 역시도 맞게 사용하는 것이 좋다.

    코딩 교육이 왜 필요하지?

    그리고 솔직히 말해 코딩 교육의 목적이 뭘까라는 생각을 다시 하게 된다. 국내에 갑자기 코딩 교육의 열풍이 일어나게 된 계기가 MS의 빌게이츠, 페이스북의 마크 주크버그, 애플의 스티브 잡스 등 해외 유명 IT 업계 CEO들이 어려서부터 프로그래밍을 했으며 그것을 통해 논리적이고 합리적인 사고 방식을 얻게 되었다는 이유로 한국에서도 그런 인재들을 어려서부터 키워야 한다는 명분으로 코딩 교육이 제도권 교육 안에 들어온 것으로 알고 있다.

    그런데 빌게이트나 마크 주크버그, 고인이 된 스티브 잡스나 스티브 워즈니악 등 이른바 IT 업계 거물들이 어렸을 때 했던 코딩 교육이 지금 한국에서 일어나고 있는 코딩 교육과 어떤 공통점이나 연관성이 있을까? 이들이 배웠던 프로그래밍 언어는 아마도 C나 C++, 아니면 그것보다 더 기계적인 어셈블러일 것이다. 초딩에게 이 언어들을 이용해서 코딩 교육을 한다고 한다면 난 정말 미친짓이라고 말할 것이다. 내가 생각하는 코딩 교육에 적합한 언어는 손쉽게 코딩하고 그 결과를 빨리, 그리고 손쉽게 확인할 수 있는 위에서도 언급했던 스크래치를, 뭔가 입력하는 맛까지 느끼게 하고 싶다면 BASIC이나 Python 등이라고 본다. 참고로 내 경우에는 8살때 처음으로 Apple BASIC을 경험했는데 문법이 간단하고 쉽게 배울 수 있기 때문에 초보자용 언어로 이만한 언어는 없다고 생각한다.

    코딩 교육의 본질은?

    코딩교육의 본질은 생각하는 방법을 알게하는 것

    그런데 문제는 컴퓨터 언어가 아니다. 물론 어떤 컴퓨터 언어로 시작하느냐에 따라서 표현할 수 있는 범위 및 수준이 달라지는 것은 맞지만 애들에게 전문 개발자가 쓰는 수준의 언어와 툴을 교육용으로 쓰는 것은 맞지 않다고 본다. 그것보다는 왜 코딩 교육이 필요한지부터 먼저 생각을 해야 한다. 아예 미래의 개발자로 키우겠다고 생각을 한다면 모를까 모든 초딩들이 개발자가 될 이유는 없고 말이다. 코딩 교육을 해야 하는 이유는 앞서 언급했듯 실리콘벨리의 전설들이 얻었던 논리적이고 합리적인 사고 방식의 취득, 그리고 성취감 경험이 크다고 본다.

    다양한 조건을 생각하고 만드는데서 오는 논리적이고 합리적인 생각들..

    어떤 컴퓨터 언어든간에 프로그래밍을 하다보면 가장 많이 사용하는 것이 바로 조건문이다. 영어로는 if라고 하는 그 조건문인데 조건에 맞다면 이것을, 틀리다면 저것을 하게 만들어서 조건에 들어가는 변수의 값을 합리적으로 정하고 그것에 대한 행동을 결정하게 하는 것을 프로그래밍하는 과정이 아마도 가장 많을 것이다. 프로그래밍을 하다보면 조건문을 만들고 그 결과를 예측해서 그것을 코딩에 녹여서 쓴다. 그렇다면 어떤 조건이 필요한지, 그것에 대한 결과는 조건에 따라 어떻게 되는지를 다 머리속으로 계산하고 시뮬레이션을 해야 한다. 이 과정에서 논리적이고 합리적인 사고 방식이 자연스럽게 성장된다(물론 기계적으로 코딩하는 경우에는 아닐 수도 있겠지만).

    작은 것부터 완성시킴으로 시작하는 성취감 획득 경험

    그리고 성취감 취득이라고 했는데 다 그런 것은 아니지만 프로그램을 만들어서 실행시켜서 결과를 보는 것만큼 자원소모가 적게 어떤 것에 대한 결과를 보는 방법은 그렇게 많지가 않다. 어떤 뜻이냐면, 그림을 그리기 위해서는 스케치를 하고 색연필이든 물감이든 크레파스든 이용해서 색칠을 해야 한다. 그 과정에서 스케치북과 연필, 물감 등이 필요하다. 돈과 시간, 노력, 공간, 자원 등이 필요하며 그림을 그리다가 중간에 망치면 다시 그려야 하는데 그 과정에서 또 돈과, 자원의 소모가 필요하다. 물론 스케치만 하는 경우에는 지우개로 지우면 된다지만 여기서는 완성품의 목표를 색까지 다 칠해진 그림으로 하자. 목공예품을 만들기 위해서는 재료도 필요하고 기술도 필요하고 뭐 여러가지가 필요하다.

    하지만 코딩은 앞서 말한 그림을 그리는 것이나 목공예품을 만드는 것에 비하면 들어가는 자원의 소모나 중간에 변경을 하는 과정 등에서 확실히 상대적으로 손쉽게 작업할 수 있다는 장점이 있다. 어떤 결과를 내기 위해서 소요되는 시간이 그림을 그리거나 목공예품을 만드는 것보다는 상대적으로 적을 수 있다. 물론 간단한 수준의 프로그램을 뜻한다. 구구단을 보이게 한다던지 계산 프로그램을 만든다던지 하는 것, 혹은 삼각형, 사각형을 그리는 정도의 프로그램은 언어에 따라서 몇분만 배워도 만들 수 있는 프로그램이라고 본다. 즉, 빠른 시간 안에 끝을 볼 수 있다는 점에서 어떤 일을 시작하는데 있어 끝을 보게 함으로 성취감을 얻게 만들 수 있는 어떤 면에서는 가장 훌륭한 방식이 코딩이라는 생각이 든다.

    어렸을 때부터 어떤 일에 대해서 끝까지 마무리를 하는 버릇을 길러놓으면 커서도 어떤 일을 하더라도 끝까지 완수하는 힘을 얻을 수 있으며 그것을 키우는데 있어서 보통은 작은 프라모델을 만들게 한다던지 퍼즐을 맞추거나 하지만 코딩처럼 다양하게 할 수 있는 방법이 어떤 면에서는 매우 좋다는 생각을 하게 된다.

    애들의 사회에서 필요로 하는 힘을 길러내기 위한 아주 좋은 교육인 코딩 교육

    즉, 앞서 언급했듯 논리적이고 합리적인 사고 방식을 키우면서 성취감을 경험하게 해서 커서도 어떤 일을 할 때 유용하게 쓰일 수 있는 힘을 기르게 하기 위함이 코딩 교육의 목적이라고 생각을 하는데 이게 아무래도 대학 입시와 맞물려서 돌아가다보니, 또 사교육과 연계되어 돌아가다보니 vi를 배우게 한다던지 하는 등의 엉뚱한 방향으로 진행되는게 아닌가 싶다. 무엇이든 다 사교육을 통해 돈을 벌어볼려는 사람들때문에 본질이 흐려지고 엉뚱한 것만 커지는 것이 아닌가 하는 생각이 든다.

    코딩 이전에 설계 과정부터 공부시키는 것이 더 좋지 아니한가..

    예전에 코딩 교육에 대해서 포스팅​을 한 적이 있었는데 거기서는 코딩 교육 이전에 논리적 사고를 위해 순서도 그리는 것부터 배우고 설계하는 것부터 시작해야 한다고 얘기를 했다. 같은 맥락에서 앞서 말한 것들을 풀어봐야 한다고 생각을 한다. 왜 코딩 교육을 해야 하는지에 대해서 본질을 먼저 생각하고 그 다음에 툴을 고민해야 옳은데 장사꾼들이 먼저 설치다보니 좋은 취지는 온데간데 없고 엉뚱한 상황만 일어나고 있으며 거기에 학부모들은 애들의 대학 입시 문제로 인해 장사꾼들의 노름에 놀아나고 있는 꼴이 되고 있다.

    솔직히 말해 코딩 교육은 필요없다. 순서도만 잘 그려도 코딩 못잖은 효과를 볼 수 있다. 순서도 기호를 그대로 다 쓸 필요도 없다. 그냥 네모, 마름모, 동그라미 같은 기호를 이용해서도 충분히 논리적인 흐름을 그려낼 수 있다. 프로그램 개발의 60%는 설계에서 다 끝난다고 보는데 그렇다면 쓸데없이 vi와 같은 어려운 툴을 배우는데 힘을 쏟지 말고 설계하는 법을 먼저 가르치는 것이 아이의 미래를 위해 더 나은 방법이 아닐까 하는 생각을 해본다.


    반응형

    댓글

Designed by Tistory.