C언어로 부는 바람..코딩이 뭐길래

입력 2016. 7. 7. 09:36
번역beta Translated by kaka i
글자크기 설정 파란원을 좌우로 움직이시면 글자크기가 변경 됩니다.

이 글자크기로 변경됩니다.

(예시) 가장 빠른 뉴스가 있고 다양한 정보, 쌍방향 소통이 숨쉬는 다음뉴스를 만나보세요. 다음뉴스는 국내외 주요이슈와 실시간 속보, 문화생활 및 다양한 분야의 뉴스를 입체적으로 전달하고 있습니다.

살면서 ‘코딩(Coding)’이란 말을 이렇게 자주 듣게 될 줄이야. 더불어 영어도 아니고 일어도 아니고 ‘C언어’를 흔하게 언급하는 시대가 와 버렸다. 어찌 된 일이란 말인가.

코딩, C언어. 이들로 말할 것 같으면 대학 시절 ‘공돌이’라 불리던 컴퓨터 공학과 친구가 과제를 할 때마다 소주를 들이붓게 만들었던 악명 높은 존재가 아닌가. 친구는 내게 말했었지. “네 자식의 자식까지도 C언어를 피해야 한다고”. 우여곡절 끝에 공대를 졸업한 그 친구가 지긋지긋하다는 그 코딩으로 밥벌이를 하게 되고, 강산이 한번 바뀔 시간이 지났다. 그 사이 세상은 많이 변한 것 같다. 몇 년 전만 해도 코딩이란 용어 자체를 모르던 일반인들이 너나 할 것 없이 “코딩을 배워야 한다”고 외치고 있으니 말이다. 잠시 열기를 식히고 상황을 들여다볼 때다.

▶이제 국영수보다 코딩이다?

본래 모든 신드롬은 자극적인 머릿말로 등장하는 법이다. 국내 사교육 시장에 불어닥친 코딩 열풍에 대한 소식도 그랬다. 한 달에 200만 원짜리 코딩 유치원에, 800만 원짜리 미국 명문대 코딩 캠프까지 생겼다는 이야기는 꾸준히 매스컴을 탔다. ‘세 살 코딩 여든까지 간다’는 농담까지 생겼다. 200만 원의 코딩 유치원이 특정 지역의 교육열을 보여주는 단면일지언정, 어떤 규모로든 코딩 교육에 대한 붐이 일고 있는 것은 사실이다.

주부들이 주로 모이는 인터넷 커뮤니티에는 ‘초등학생 대상 코딩 프로그램을 갖춘 학원을 추천해달라’는 등의 문의 글이 심심치 않게 눈에 띈다. 학원마다 조바심 난 학부모 입맛에 맞춰 ‘조기 코딩 프로그램’을 내걸기 시작한 건 물론이다. 개인적으로 코딩 열풍을 아주 흥미롭게 바라보고 있다. 시대가 빠르게 바뀌고 있는데 새로운 학문이 위세를 떨치는 건 전혀 이상한 일이 아니다. 게다가 ‘코딩 치맛바람’에 앞장서고 있는 것이 한국만의 일은 아니니 조금은 안심해도 좋겠다.

버락 오바마 미국 대통령은 2013년부터 코딩 교육이 국가의 경쟁력에 일조한다는 근거를 내세워 컴퓨터 프로그래밍 교육의 중요성을 꾸준히 강조해 왔다. 그는 ‘모든 학생이 컴퓨터 코드를 배워야 한다. 단순히 비디오 게임을 플레이하고 놀 것이 아니라, 직접 프로그램을 만들어 활용하라’는 충고였다. 일주일에 한 시간씩 코딩을 배우자는 취지의 ‘아워 오브 코드(Hour of Code)’ 캠페인은 이미 미국 내에서 사회적 흐름으로 자리 잡아 가고 있다. 영국 역시 지난 2014년부터 코딩을 정규 과목으로 편성했고, 핀란드와 프랑스 등도 교과 과정에 도입했다. 우리나라도 오는 2018년부터 중고등학생의 소프트웨어 교육을 의무화한다는 계획이다. 이듬해인 2019년에는 초등학교에서도 소프트웨어 수업을 가르치게 된다. 주요 교과목은 ‘알고리즘 체험’, ‘컴퓨팅 사고에 기반을 둔 문제 해결’, ‘프로그래밍 개발 및 설계’ 등이다. 이 모든 프로그래밍의 골자가 ‘코딩’이기 때문에 설익은 한국 사교육 시장이 코딩으로 들끓기 시작한 것이다.

▶그래서 코딩이란 무엇인가

이쯤에서 코딩이 무엇인지에 대해 명확히 할 필요가 있을 것 같다. 온 세상이 ‘코딩’을 외치는 통에 새삼스럽게 그 의미를 물어보기조차 머쓱해졌지만, 그 개념을 정확히 모르는 사람들이 더 많다. 사실 당연한 일이다. 세상 모든 일이 어떻게 일어나는지 생각해보자. 우리는 배가 고파서 요리하고, 외로워서 연애한다. 사람의 행동에는 이유가 있고 목적이 있다. 양파를 잘게 썰고, 기름에 볶는 요리 과정에 대해서는 학습이 필요하지만 왜 음식을 먹어야하는지에 대해서는 가르칠 필요가 없다. 배가 고프면 밥을 먹으려 하는 건 인간이 가진 자연스러운 욕구이니 말이다. 이렇듯 사람은 먹고 살기 위해 알아서 움직인다.

컴퓨터는 그 반대다. 욕구가 없고, 원하는 것이 없다. 동기가 없으니 절대 스스로 움직이지 않는다. “배가 고플 때 밥을 지어라”는 말은 컴퓨터에게 설득력이 없다. “12시 30분까지 밥을 지어라”고 해야 알아들을 수 있다. ‘목적’과 ‘과정’에 대한 정확한 명령이 있어야만 작동할 수 있다는 뜻이다.

밥 얘기가 나왔으니 얘기를 계속 해보자. 코딩은 스마트폰이나 데스크톱의 프로그램에만 필요한 것이 아니다. 주방에 있는 전기밥솥에도 취사를 위한 코딩이 필요하다. 어떤 버튼을 눌렀을 때 취사 모드로 들어가고 보온 모드로 들어가며, 어떤 알고리즘으로 쌀을 조리해 밥으로 만드는지 절차를 입력해두어야 밥솥이 제대로 돌아갈 수 있다.

문제는 밥솥(을 포함한 모든 컴퓨터)이 한국어에 통달하지 못했다는 것이다. 심지어 세계공용어인 영어조차 통하지 않는다. 컴퓨터를 향해 아무리 자세하게 “취사 버튼을 누르면 내부 온도를 올리고 압력을 가해 쌀을 조리한다”고 설명해봐야 헛수고다. 그들의 세계에는 오직 ‘0’과 ‘1’만이 존재한다. 밥을 짓는 절차를 입력하고 싶다면 컴퓨터가 알아들을 수 있는 언어를 사용해야 한다. 이 언어를 ‘코드’라고 하며, 코드를 사용해 프로그램을 만드는 과정을 ‘코딩’이라고 한다.

코딩은 어렵지만, 코딩의 개념은 어렵지 않다. 아무런 욕망이 없는 컴퓨터로 하여금 배고픈 나를 위한 밥을 대신 짓게 명령하는 과정이 코딩인 것이다. 이 과정에서 명령어를 하나라도 빼먹으면 밥을 망칠 수 있으니 꼼꼼히 확인해야 한다. 컴퓨터는 절대 ‘눈치껏’ 판단하지 않고, 시킨 대로만 일하니까 말이다.

컴퓨터에 알고리즘을 입력할 때 0과 1로만 구성된 이진법 숫자를 사용하면 그 절차가 너무 복잡할 뿐만 아니라, 일반 사람은 감당할 수 없을 것이다. 때문에 프로그래밍 언어가 필요하다. 사람의 언어와 기계의 언어의 중간에 위치한 언어라고 생각하면 된다. 앞서 잠시 언급했던 ‘C언어’는 사람이 컴퓨터에게 명령을 내리기 위해 사용하는 프로그래밍 언어 중 하나다. C++, 파이썬, 루비 등 종류도 다양하다. 최근엔 자바를 가장 많이 사용한다. C/C++에 비해 쉽고 네트워크 기능의 구현이 용이해, 웹 환경에서 가장 활발히 사용되고 있다.

▶코딩은 현대인의 기본 소양인가

내 아버지는 오십을 훌쩍 넘어 컴퓨터를 배웠다. 처음엔 한사코 배우길 꺼렸지만, 결국 인터넷 주식거래라는 편리한 도구에 발을 들였다. 이제는 굼뜬 손놀림이지만 한글 자판 입력도 제법 익숙해졌다. 덩달아 아버지의 일상도 많이 바뀌었다. 종이 신문만 읽던 분이 인터넷을 통해 외신까지 쉽게 접하고, 금융 프로그램으로 주식 투자를 하며, 참석하지 못하는 결혼식에는 인터넷 뱅킹으로 축의금을 보낸다. 모든 것이 디지털화된 시대에 컴퓨터를 모르고 사는 건 삶의 질을 저하시키는 일이다. 인터넷 뱅킹이면 5분 안에 해결될 일을 은행까지 찾아가야 하는 번거로움에서 해방될 수 있으며, 모든 정보에 빠르게 접근할 수 있다.

그렇다면 혹시 가까운 미래에는 코딩 능력이 삶의 질을 나누는 지표가 되지 않을까? 개인이 가진 각종 기기를 입맛에 맞게 코딩하고 보수하고 사용하는 일이, 컴퓨터 자판을 자유자재로 입력하는 것만큼이나 자연스러운 일이 될까? 잘 생각해보아야 할 일이다. 코딩은 우리가 생각하는 것보다 훨씬 광범위한 개념이며, 우리는 온갖 전자기기에 일상의 많은 부분을 의지하고 있다. 스스로도 모르는 사이에 코딩을 했거나, 필요로 하고 있었을지 모른다는 이야기다.

원론적으로 보자면 엑셀 역시 코딩의 일종이다. 사무직에 종사하는 직장인이 가족의 얼굴보다 자주 본다는 그 프로그램, 마이크로소프트의 그 엑셀 말이다. 무한정의 네모 칸으로 나뉘어 있는 ‘셀’ 안에 컴퓨터가 알아들을 수 있는 특정 ‘수식’을 입력하면 해당 계산을 수행하라는 명령이 된다. 이를 통해 회식비도 계산하고, 출장비도 정산한다. 일단 한번 명령어를 입력해 놓으면, 엑셀은 빛처럼 빠른 속도로 계산한다. 나보다 더 빠르고 지치지 않는 기기에게 나 대신 일을 하라고 명령을 하는 과정이 코딩이라면 우리는 매일 코딩을 하고 있다.

초등교육과정에 소프트웨어 교육이 포함되는 것은 전 국민을 프로그래머로 만들기 위함이 아니다.

모두가 프로그래머가 되어 고도의 프로그램을 뚝딱 만들어낼 순 없다. 그럴 필요도 없고 말이다. 다만, 코딩 능력이 삶을 더 윤택하게 영위할 수도 있도록 만드는 양념이 될 순 있겠다. 10년 전엔 사진을 찍고 영상을 편집하는 것이 명백히 전문가의 영역이었지만, 지금은 누구나 도전할 수 있다. 스마트폰으로 영상을 촬영해 편집 프로그램을 터치하면 쉽고 직관적인 방식으로 그럴싸한 한 편의 영상물이 만들어진다. 마찬가지다. 10년, 혹은 5년 후만 보더라도 코딩 환경은 완전히 달라질 것이다. 비전문가들이 참여하기 쉬운 도구가 마련될 것이고 누구나 쉽게 맞춤형 소프트웨어를 만질 수 있게 될 것이 틀림없다.

▶코딩은 목적이 있어야 한다

코딩을 배우는 것은 좋다. 이 개념을 이해하고 스스로 소프트웨어를 창조할 수 있는 능력을 갖추는 것 역시 중요하다. 그런데 현재의 교육 시스템이 이런 능력 양성에 과연 도움이 될지는 의문이 남는다. 지금 대한민국에 부는 코딩 교육 열풍은 그대로 단어만 바꾸면 과거의(혹은 현재까지의) 영어 교육 열풍과 똑 닮았다. 나 역시 사교육 바람 속에서 남 부럽지 않을 만큼 과외와 학원에 돈을 낭비한 세대다. 사교육은 내게 영어 단어를 빨리 외우는 능력을 선사했을 뿐, 영어 실력을 주진 않았다. 나는 전형적인 주입식 교육의 폐해를 경험했다. 오히려 내 짧은 영어 실력의 근간이 된 건 밤새워 보던 미국 드라마였다.

한국에선 코딩 역시 국영수에 이은 네 번째 암기 과목이 될 가능성이 높다. 정해진 진도에 맞추어 알고리즘 커리큘럼을 짜 놓고, 이를 컴퓨터 언어로 변환하는 것만 학습한다면 무슨 의미가 있겠는가. 자연스러운 흥미 유발 없이 주입식으로 강요하는 기술 과목이 된다면 아이들은 염증을 느낄 것이다. 결국 내가 배운 영어처럼 활용 불가능한 학문이 되어 버린다. 게다가 개발 환경이 수시로 변하고 있는 소프트웨어 분야에서 ‘현재’의 기술에 이론만을 배우는 것이 무슨 큰 의미가 있을까? 10년쯤 후에는 아무도 교과과정에 나온 프로그래밍 언어를 사용하지 않을지도 모른다. 초등학교 때 강제로 배운 주산을, 어른이 되어서는 단 한 번도 쓸 일이 없었던 것처럼 말이다.

소프트웨어는 흰 도화지에 그릴 수 있는 무궁무진한 그림이다. 그 그림으로 아픈 사람들은 버튼 하나를 눌러 의사를 부를 수도 있고, 낯선 여행지에서 사람들과 소통할 수 있는 번역기가 되기도 한다. 이론을 암기할 때가 아니라, 무엇이든 만들어낼 수 있다는 코딩의 자유를 인식할 수 있도록 해야 한다. 상상력을 키울 수 있는 교육이 필요한 때다. 당장 코드를 입력할 수 있는 기술 자체에 연연할 것이 아니라 원하는 결과를 현실로 만들기 위한 수학적 사고에 접근할 수 있도록 물꼬를 터줘야 한다. 흥미를 유발하고 동기부여를 하는 과정도 필요하단 뜻이다. 코딩 방법을 아는 것도 중요하지만 왜 해야 하는지를 알아야 하지 않을까. 우리는 무소유의 마음을 지닌 컴퓨터와는 다르게 욕망과 소망을 가진 사람이니까. 어떤 그림을 그리고 싶은지 모른다면, 그림 그리는 방법이 무슨 소용일까?

가까운 미래에는 나만을 위한 맞춤형 스마트폰 앱을 만들기 위해 코딩을 하는 작업이 일상이 될 것이다. 그때를 위해 우리가 준비해야 할 것은 전문 코더로서의 능력이 아니다. 이 개념을 이해하고 응용할 수 있는 말랑한 뇌와 상상력이다.

쉽게 배우는 코딩 커리큘럼 이제 이토록 목 아프게 외친 그 이름 ‘코딩’을 어떻게 배우면 좋을지 알아볼 차례다. 여러분에게 200만 원의 학원 수강료를 지급하라고 말할 생각은 없다. 세상엔 우리 생각보다 친절한 프로그래밍 커리큘럼이 많이 준비되어 있더라.

1. 생활코딩 (opentutorials.org)

생활코딩은 이미 프로그래밍을 배우는 사람들 사이에선 유명하다. 내 스마트폰에도 ‘생활코딩’ 앱이 진작부터 자리하고 있었다. HTML, 자바, 리눅스까지 아우르는 다양한 프로그래밍 강의를 무료로 볼 수 있다. 전직 개발자가 운영하고 있으며, 누구나 콘텐츠를 올릴 수 있는 개방형 플랫폼이다.

2. 코드닷오알지 (code.org)

‘모든 학생은 컴퓨터를 배울 기회가 있어야 한다’는 슬로건 하에 운영 중인 미국의 비영리단체. 오바마가 강조하고 있는 ‘아워 오브 코드’ 캠페인을 실시하고 있는 곳이기도 하다. 어린 아이들도 쉽게 코딩의 개념을 익힐 수 있도록 다양한 프로그램을 마련했다. 자신만의 <스타워즈> 게임을 만들거나, <겨울왕국>의 캐릭터를 활용하는 등 흥미를 끌 만한 요소가 많다. 한국어 서비스도 제공한다.

3. 엔트리 (play-entry.org)

2013년 카이스트 학생들이 만든 엔트리교육연구소는 프로그래밍의 원리를 배우고 창작물을 만들 수 있는 온라인 교육 플랫폼 엔트리를 개발해 운영해왔다. 마치 게임처럼 마우스로 블록을 옮겨 프로그래밍을 배우는 교육 프로그램은 좋은 반응을 얻고 있다. 동영상 강의를 무료 제공하며 교재와 교사용 지도서 등 교육 자료도 배포하고 있어 정부가 지정한 소프트웨어 교육 선도학교 다수가 엔트리를 교육 도구로 채택해 활용하고 있다.

4. 코드카데미 (codecademy.com)

컴퓨터 프로그래밍을 전혀 모르는 사람들도 프로그래밍 언어를 무료로 쉽게 배울 수 있는 미국의 강의 웹사이트다. 실제 프로그래머들이 코드카데미 사이트에 교육 과정을 등록하면, 사람들이 단계별로 실습하며 배워가는 방식이다. 결과물을 직접 확인하며 코드를 입력할 수 있다.

5. 스위프트 플레이그라운드 (Swift Playgrounds)

애플이 WWDC 2016에서 공개한 스위프트 플레이그라운드 역시 재미있는 도구다. 애플의 쉬운 프로그래밍 언어 스위프트 사용법을 초보자들이 감각적으로 탐색할 수 있도록 만든 아이패드용 앱이다. 명령어 생성, 루프 작동, 함수 정의 등 코딩 개념에 대해 배우며 자신만의 앱을 만들고 수정할 수 있다. 터치 인터페이스를 기반으로 한 직관적인 사용성이 큰 무기다.

[글 하경화(IT칼럼니스트) 사진 pixabay.com 일러스트 포토파크]

[본 기사는 매일경제 Citylife 제536호 (16.07.12일자) 기사입니다]

[ⓒ 매일경제 & mk.co.kr, 무단전재 및 재배포 금지]

Copyright© 시티라이프. 무단전재 및 재배포 금지.

이 기사에 대해 어떻게 생각하시나요?