[이학무의 테크리딩] 코딩 배우기는 기술 이해의 첫 단추

이학무 미래에셋증권 애널리스트
입력 2021.04.18 06:00
기술이 세상을 빠르게 바꾸고 있다. 기술을 직접 개발하지 않는다 하더라도 각자의 영역에서 필요한 만큼의 기술에 대한 이해가 필요한 세상이 되었다. 학생은 미래의 직업을 선택하기 위해서 그리고 이미 직업을 가진 사람은 각자 직업의 미래를 예상하기 위해서 세상을 바꾸는 기술에 대해서 이해해야만 한다. IT조선은 [이학무의 테크리딩]을 통해서 기술을 이해하기 위한 기초 다지기와 이를 기반으로 필수적인 기술 이해 방법을 제공한다.<편집자주>

코딩은 요즘 시대에 꽤 많이 사용되는 말이다. 코딩은 말 그대로 컴퓨터 프로그램을 만드는 일이다. 이 정의만으로도 코딩을 배우는 것이 기술을 이해하는 그 첫걸음이 된다는 것은 직관적으로 알 수 있을 것이다.

주변을 돌아보면 우리의 삶을 바꾸는 대부분은 모두 컴퓨터 프로그램과 연관이 되어 있다. 스마트폰의 모든 애플리케이션들은 말할 것도 없고 인공지능 및 자율주행차 등도 모두 프로그램으로 구현되는 것이다. 따라서 코딩을 한다는 것은 코딩으로 구현하고자 하는 기술을 완전히 알고 있어야 가능하다. 결국, 코딩이라는 도구를 통해서 많은 기술의 핵심을 이해할 수 있게 되는 것이다.

그렇다면 코딩을 배운다는 것은 무엇일까? 대부분의 사람들은 코딩이라고 하면 바로 C언어, 자바 또는 파이썬 등이 먼저 떠오를 것이다. 하지만 프로그램은 컴퓨터와 대화하는 것이 아니고 컴퓨터에게 일을 시키는 것이기 때문에 이와 같은 언어를 먼저 배워야 하기 보다는 컴퓨터가 어떻게 일을 하는지를 파악하고 이해하는 것이 우선이다. 컴퓨터는 인간이 생각하는 방식과는 완전히 다르게 일을 한다.

아이클릭아트
아주 단순하게 이야기 하면 ‘0’과 ‘1’의 조합으로 수없이 많은 연산을 통해서 일을 하는 것이다. 우리가 보는 화려한 그래픽도 자율주행차의 화려한 주행도 모두 ‘0’과 ‘1’의 연산을 통해서 이루어 지는 것이다. 물론 이와 같은 컴퓨터의 연산 방식을 인간이 이해하기 쉽게 인간의 언어와 유사하게 만든 것이 프로그래밍 언어이긴 하다. 그래서 과거에는 컴퓨터가 일하는 방식을 더 쉽게 이해할 방법이 없었기 때문에 프로그래밍 언어를 먼저 배웠다. 하지만 이제는 그럴 필요가 없다.

‘스크래치’라는 프로그래밍 도구가 개발되었기 때문이다. 프로그래밍 도구나 프로그래밍 언어나 똑 같은 것 아니냐고 반문할 수도 있을 것이다. 하지만 이건 상당히 다르다. 영어로 예를 들면 스크래치는 한글 단어로 영어 문법만 배우는 것이라고 볼 수 있다.

‘나는 학교에 간다’를 영어로 이야기 하려면 ‘I go to school’ 이라고 표현해야 한다. 그런데 스크래치는 ‘나는 간다 에 학교’ 라고 한글 단어로 써도 알아 들을 수 있는 툴이라고 이해하면 된다. 이러한 툴이 있다면 영어의 표현 방식 또는 문법을 먼저 쉽게 공부할 수 있고 익숙해 질 수 있다는 것이 장점이다.

언어에서의 문법과 프로그래밍 언어에서의 문법은 유사한 듯 하지만 상당한 차이가 있다. 언어에서의 문법은 사용되는 언어를 보고 차후에 유사성을 가지고 정리한 것이고 프로그래밍 언어는 컴퓨터가 일하는 방식을 언어의 문법으로 만든 것이다. 그래서 프로그래밍 언어는 정확하게 문법에 따라서 동작하게 된다. 이중에서도 스크래치로 배울 수 있는 것은 영어로 치면 어순 정도를 배울 수 있는 것이다. 영어의 어순은 컴퓨터에 있어서는 논리 구조이다.

논리 구조라는 것은 곧 컴퓨터가 일하는 방식이다. 컴퓨터는 상당히 똑똑한 것 같지만 실제로는 바보다. 하나하나 일일이 챙겨주지 않으면 아무것도 할 수 없다. 이해를 돕기 위해서 엘리베이터 운행 프로그램을 예로 들어 보겠다. 10층 건물에 2대의 엘리베이터가 있다고 가정을 해보자. 현재 1층과 8층에 엘리베이터가 1대씩 있는 상황에서 5층에 있는 탑승객이 내려가는 엘리베이터를 요청한다면, 인간은 고민할 것도 없이 8층에 있는 엘리베이터를 내려 보낼 것이다.

여기서 우리가 8층을 선택한 이유는 가장 가까운 곳에 있는 엘리베이터이기 때문이다. 그런데 가장 가깝다는 것은 어떻게 알 수 있을까? 컴퓨터에는 이것부터 알려줘야 한다. 엘리베이터가 있는 층과 요청이 있는 층의 차이를 구하고 그 절대값을 비교해서 그 값이 가장 작은 값이 나오는 층의 엘리베이터를 보내라고 일단 정한다. 그리고 8층의 엘리베이터가 선택 되었어도 그 엘리베이터가 올라가고 있는 중인지 아닌지도 체크해야 한다. 10층으로 올라가는 중이라고 한다면 1층에 있는 엘리베이터를 올려 보내줘야 하기 때문이다.

이와 같은 모든 경우의 수를 다 포함해서 하나하나 지시를 해줘야 한다. 이와 같은 구조를 짜보는 것이 코딩의 시작이다. 그리고 이를 쉽게 구현할 수 있도록 도와주는 툴이 스크래치이다. 따라서 스크래치를 활용해서 이와 같은 컴퓨터의 논리적 구조에 익숙해 진 후에 언어를 배우는 것이 순서이다.

이학무 미래에셋증권 통신서비스 애널리스트 leehakmoo@gmail.com

※ 외부필자의 원고는 IT조선의 편집방향과 일치하지 않을 수 있습니다.

이학무 미래에셋증권 애널리스트는 반도체, 핸드폰, 디스플레이 등 IT 산업뿐아니라 전기차, 배터리 및 신재생에너지 산업까지 다수의 성장산업을 분석한 신성장 산업 분석 전문가다. 공학을 전공하고 비즈니스를 20년간 분석한 경험을 바탕으로 세상을 이끄는(lead) 기술 읽기(read)를 제공한다.


T조선 뉴스레터 를 받아보세요! - 구독신청하기
매일 IT조선 뉴스를 받아보세요 닫기