brunch

You can make anything
by writing

C.S.Lewis

by Cylogic Apr 30. 2018

코딩은 왜 배워? - 코딩 수업 시작하기

뭘 또 배워야 한다니...


멋진 차트 글씨를 쓰는 사람은 군대와 같은 보고 문화 사회에서 최고 능력자로 통했다. 군대의 차트병을 지원하려면 차트 쓰는 법을 배워야 했다. 

일반 행정병이 사용하는 타이프라이터로는 큰 글자를 찍어낼 수 없었기 때문이다.


사무실에서 일어나는 모든 계산 작업을 주판으로 해결했던 때도 있다. 나도 초등학교 때 6급 자격증을 딴 기억이 있다.(주판을 배우던 반 친구들 중에서는 최하위 급수였다.)

소형 전자계산기가 나타나자 주판 없이 암산이 가능한 분들만 그 능력을 인정받게 되었다. 

나 같이 급수를 논하며 단증을 경외의 눈으로 바라보던 사람들은 명함도 못 내밀었다.


그런데 더 큰 글자로 더 멋진 문서를 만들어야 하고,  더 빠른 계산을 필요로 하는 세상이 오고, 수많은 계산 작업을 마우스 클릭 몇 번으로 해결하는 엑셀 프로그램이 생기고 나니 이런 프로그램을 사용하지 못하는 사람들은 무능력자가 되고 만다.

그래서 어쩔 수 없이 한두 가지라도 업무용 소프트웨어를 익혀야 한다.

워드프로세서는 기본이고, 엑셀과 같은 표 계산 프로그램, 멋지게 자기 생각을 발표하기 위한 프레젠테이션 그리고 인터넷 검색은 당연히 누구나가 알아야 할 기능이 되었다.


이제 우리는 컴퓨터 없이는 못 산다.

휴대폰이 작은 컴퓨터라는 것도 잊지 말자.


그런데...


초등학교에서 컴퓨터 프로그램(코딩)을 교육한다고 한다. 


누군가 배워야할 모든 것들을 유치원에서 배웠다고 큰소리를 쳤는데...

이제 겨우 휴대폰으로 인터넷을 검색하고, 카톡으로 대화하고, 무늬 세 개 맞추기 게임을 배웠는데, 프로그램이라니...


그래도 꿈 많은 엄마들은 아이들이 컴퓨터를 배우면 언젠가 알파고 같은 프로그램을 만들 것이라고 상상한다.

그러나 세상 모든 사람들이 컴퓨터 프로그래머가 되는 일은 일어나지 않는다.


우리가 고등학교 수학 시간 때 미적분을 배웠지만, 모두 수학자가 되지는 않고, 미적분에 통달하였다고 하여도 자동차 액셀을 밟을 때 발생하는 가속도와 달린 거리를 미적분으로 계산해 보지도 않는다.


그러면 코딩을 왜 배워야 하나??

어릴 적 읽었던 유명한 수학자 이야기에 이런 것이 있었다.

이 수학자가 초등학교 수업시간에 선생님이 내준 문제

"1부터 100까지 숫자를 모두 더한 값은?"

이라는 말에 다른 친구들은 모두 

1+2=3, 3+3=6, 6+4=10......  이런 계산을 하고 있을 때

대 수학자가 될 어린이가 손을 바짝 쳐들고 "5050입니다."이라고 대답했다는 누구나 알고 있는 에피소드였다. 지금 생각하면 약간 뻥 같지만 그렇다 치자.


1+100=101,

2+99=101,

3+98=101, 과 같은 합이 101이 되는 숫자의 세트가 50개 있으니 

101 X 50 = 5050이라는 것이다.

이제 우리 모두 알고 있는 이야기이지만, 어릴 적 이 이야기를 읽은 내 심장은 크게 뛰었다.

세상의 모든 문제는 해결 방법만 알고 있다면 아무것도 아닐 수 있다는 어쭙잖은 생각을 하게 된 것이다.


우리는 복잡한 문제들을 어떻게 풀까??.... 이것이 궁금하다면 코딩을 배우는 충분한 이유가 될 것이다.

나는 코딩(컴퓨터 프로그램)이 가진 가장 큰 기능이 무엇인 가를 묻는다면 다음 두 가지라고 이야기해주고 싶다.


    1. 문제 풀이
    2. 대용량 데이터의 처리


이 두 가지가 컴퓨터 프로그램에서 배우고 실행해야 할 가장 큰 과제인 것이다. 


문제풀이와 데이터의 처리는 아래와 같은 흔한 과제를 포함한다.

1부터 100까지 숫자의 합은?

로또 당첨 확률은 정말 번개 맞아 죽을 확률보다 낮을까?

새로 수강 신청하는 학생들의 출석표를 이름 순서대로 한 장, 나이 순서대로 한 장 출력하려면?

순서대로 만들어진 출석부에 5000명의 학생이 있다면, 그중 "길라임"이라는 학생의 이름은 어떻게 찾을까?

가로, 세로 다섯 칸의 모눈종이에 1부터 25까지의 숫자를 하나씩 적어 넣을 때 모든 가로와 세로줄의 합이 같으려면 어떻게 숫자를 넣을까?

목재 서랍장을 만들 때 서랍의 외경이 400X400X180mm 이고 두께가 15mm 인 서랍 5개를 만들려면 필요한 목재의 갯수와 크기는?


등등과 같은 단순하지만 구태여 풀어야 하는 문제가 발생하였을 경우 우리는 이러한 문제를 어떻게 풀어나갈까의 과정이 코딩이고 컴퓨터 프로그램인 것이다.


인공지능 알파고도, 돈된다는 비트코인과  블록체인 이야기도 이렇게 작은 문제풀이 부터 시작하여야만 이해될 수 있는 이야기이다.


연재를 진행하는 동안 더 재미있는 문제를 만들어서 함께 풀어보는 시간을 가질 것이다.

대부분의 이야기에서 소위말하는 프로그램 코드가 한 줄도 들어가지 않을 수도 있고, 코드가 나와도 무시해도 된다. 우리는 코딩을 이해하고 문제 풀이의 방법을 생각하는 과정을 함께하는 것이다.


코딩을 가급적 이야기와 논리 만으로 풀어볼 생각이다.
프로그램 자체가 중요한 것이 아니고, 어떻게 문제를 풀어갈 수 있을까 생각하는 것이 중요한 것이기 때문이다.
함께 풀이의 방법을 생각해 볼 것이고, 따라서 이 글들을 읽었다고 해도 절대로 코딩을 잘할 수 없다.


그러니 단지 코딩이 뭔지 술자리에서 이야기할 수 있을 정도의 실력이라도 배양해 본다는 생각이 있다면, 앞으로 진행되는 이야기들을 재미있게 읽을 수 있을 것이다.

술자리 대화가 없어 궁색한 나이가 되신 분들이라면 반길 만한 일이 아니던가!


독자분 께서 한때 인문, 사회와 정치를 논하고, 한때는 문화인임을 자부했던 분이라면 더더욱 그러할 것이다 ^^

브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari