brunch

You can make anything
by writing

C.S.Lewis

by 고코더 Sep 25. 2023

[07] 상상을 현실로 만드는 프로그래밍

프로그래밍이란?

엑셀 삼국지


삼국지 14

'삼국지' 게임을 아시나요? 코에이 테크모에서 개발한 이 게임은 2세기말 ~ 3세기 초 후한 말기 및 삼국 시대 초반 역사를 기반으로 한 전략시뮬레이션 게임입니다. 우리에게 익숙한 유비, 관우, 장비, 조조가 등장합니다. 게임을 시작하면 삼국지의 등장인물 중 하나를 선택해 중국을 통일하는 것이 궁극적인 목표입니다. 1985년부터 지금까지 계속 시리즈를 출시하고 있고 있으며, 저 역시 삼국지를 게임을 열심히 플레이 했었고 한때 푹 빠져 있던 시절도 있었습니다, 지금도 이 게임은 많은 게이머들에게 많은 사랑을 받고 있는 게임입니다.


엑셀 삼국지

그런데 이런 삼국지 게임을 엑셀로 만든 전설적인 이야기가 존재합니다. 왜 그런데 좋은 프로그램 언어들을 놔두고 엑셀로 이런 게임을 만들었을까요? 소문에 의하면 제작자는 군인이었고, 군내에서 제공하는 엑셀만을 가지고 이런 복잡한 게임을 만들었다고 합니다. 이뿐만 아니라 '테트리스', 'RPG 게임', '슈팅게임', '슈퍼마리오', '버블버블'까지 엑셀 고인문들이 만들어낸 게임들은 상상을 초월합니다. 근데 이런 일이 어떻게 가능할까요? 엑셀은 생각보다 강력한 도구입니다. 비주얼베이식에 자바스크립트까지 지원하는 파워풀한 프로그래밍이 가능한 도구입니다. 그렇기 때문에 평소 우리가 엑셀을 사용하는 수준을 넘어 이런 다이내믹한 게임들까지 만들어 낼 수 있는 것이 바로 프로그래밍입니다.


코딩


일기를 쓴다고 예를 들어보겠습니다. 오늘 있었던 일들을 일기에 기록할 때 그 사람이 사용하는 고유의 문자를 사용합니다. 쓰는 사람에 따라 한글을 쓸 수도 있고 영어를 쓸 수도 있습니다. 그런데 일기에는 의미 없는  문자를 늘어놓지 않습니다. 갓난아이라면 낙서를 하겠지만 언어를 사용하는 성인이라면 되도록 문법을 지키고 적절한 단어를 사용하여 문장을 완성할 것입니다. 그렇게 되면 일기는 언제든지 꺼내어 읽을 때 의미를 해석할 수 있기 때문입니다. 이는 작성하는 것만큼 다시 읽을 때를 염두에 두는 것입니다.


단어를 모아 문장을 쓰고 전체 글쓰기를 하는 이유는 읽고 이해하기 위해서입니다. 나도 알아들을 수 있고 상대방도 알아들을 수 있는 언어로 적는 것입니다. 코딩은 그 상대방이 컴퓨터이고, 그것이 바로 코딩입니다. 이때 '컴퓨터가 이해할 수 있는 언어'가 프로그래밍 언어이고 그 언어로 글쓰기를 한 게 바로 코딩입니다. 이때 컴퓨터와 이해할 수 있는 언어의 반대되는 개념은 '자연어 (Natural Language)'라고 부릅니다.



프로그래밍


일기를 넘어 수필을 쓴다면 어떻게야 할까요? 나만이 알고 있는 언어로 마구잡이로 적기만 한다면 그것은 일기일 뿐입니다. 수필을 쓴다면 글을 읽는 사람에게 감동을 줘야 합니다. 예를 들면 기승전결로 짜임새 있는 글을 구성할 수도 있습니다. 화제의 시작, 화제가 전개됨, 내용을 전환함, 결말 이렇게 4단 구성을 사용하면 독자에게도 큰 감동을 줄 수 있을 것입니다. 


이처럼 프로그래밍은 일기보다는 수필에 가까운 작업입니다. 완성도와 안전성을 높이기 위해 고민하고 관리하는 과정까지 모두 포함된 개념입니다. 코딩으로 언어를 적는 것 이상으로 프로그램이 효율적으로 동작하는 방법을 모색하고, 동작하던 프로그램에서 문제 발생 시 대처하는 법까지 고려하는 것을 말합니다.



코딩과 프로그래밍의 차이

코딩과 프로그래밍


엑셀로 '코딩'과 '프로그래밍' 비유를 좀 더 다뤄볼까요? 제가 사용하는 엑셀의 기능은 합계(SUM), 평균(AVG) 함수가 전부입니다. 문서를 작성하는 일이 그다지 많지 않기 때문에 필요한 부분을 살짝 고쳐서 엑셀을 사용합니다. 이러한 행위를 개발로 치면 코딩이라고 할 수 있습니다. 코딩은 보통 '코드를 작성하는 것'을 말합니다. 프로그래밍은 코딩으로 프로그램을 만드는 것을 말합니다. 제가 평소에 사용하는 엑셀은 가벼운 코딩이라면 앞서 소개해 드렸던 게임들은 엑셀 전문가들이 게임 프로그램을 만들어냈으므로 프로그래밍이라고 하는 게 좀 더 올바른 표현 같습니다.


또 다른 비유를 들어보겠습니다. 외국인 친구가 한국어를 배워 소통이 가능하게 되었습니다. 언어를 배워 대화하는 법을 터득하고 사용하고 있으니 '코딩'으로 비유할 수 있습니다. 그런데 이 친구가 한국어를 더 열심히 공부하더니 글을 쓰고 에세이를 출간하였습니다. 소통을 넘어 하나의 작품을 만들어 자신의 생각을 기록했네요. 이 친구는 한국어라는 언어로 '프로그래밍'까지 하여 프로그램을 만들어 낸 것입니다. 간혹 코딩과 프로그래밍을 동의어로 사용하는 경우가 종종 있는데 실제로는 상당한 차이가 있습니다. 굳이 단계를 나누자면 코딩은 프로그래밍의 하위 단계라고 볼 수 있습니다. 프로그래밍은 실행 가능한 프로그램을 만드는 과정이므로 코딩의 보다 더 높은 단계라고 볼 수 있습니다.


현업에서는 코딩과 프로그래밍을 명확하게 구분 짓지 않는 경우가 많습니다. 그러므로 코딩과 프로그래밍을 딱 나누어서 지칭하지 않아도 됩니다. 코딩과 프로그래밍을 그때마다 마음에 드는 단어를 사용하셔도 됩니다. 하지만 현업에서는 좀 더 짧고 발음하기 좋은 코딩이란 단어를 좀 더 선호합니다. 사실 개발자들이 하는 건 프로그래밍에 가까운데도 말이죠. 이 두 용어의 핵심은 이렇습니다. 컴퓨터가 이해할 수 있는 언어를 다루는 것은 코딩, 컴퓨터가 명령한 내용을 원활하게 따를 수 있도록 명령하고 관리해 주는 것은 프로그래밍이라고 할 수 수 있습니다. 



4차 산업혁명과 코딩


'다보스포럼'이라고 불리는 세계경제포럼에서 세계 40여 개국 정상 및 국제기구의 유력한 인사들이 모여서 각종 정보를 교환하고 세계 경제의 최대 화두와 발전 방안, 미래에 대한 주제 등을 논의합니다. 2016년 이 포럼에서 창립 이래 최초로 과학 기술 분야의 주제를 주요 의제로 채택했습니다. 바로 '제4차 산업혁명'입니다. 다보스포럼의 창립자이자 회장인 '클라우스 슈밥(Klaus Schwab)'은 곧 4차 산업혁명이 일어나 지금까지 인류가 경험하지 못한 대변혁을 맞이할 것이라고 말합니다.


4차 산업혁명은 범위가 매우 넓어  한마디로 정의하기는 어렵습니다.

빅 데이터 분석, 인공지능, 로봇공학, 사물인터넷, 무인 운송 수단(무인 항공기, 무인 자동차), 3차원 인쇄, 나노 기술과 같은 7대 분야를 말합니다. 가장 큰 특징은 기술적 융합이 이루어짐으로써 디지털 세계, 생물학적 영역, 물리적 영역 간의 경계가 허물어진다는 것입니다. 인간이 조정하지 않아도 사물들끼리 서로 정보를 주고받으며 알아서 판단하는 산업 시대, 쉽게 말해 '사물지능 시대'가 도래하는 것입니다. SF영화에서 로봇이 길거리를 청소하고 심부를 해주는 그런 일들이 실제로 일어날 수 있다는 것입니다. 이렇게 되면 기계를 통한 완전 자동생산체제는 노동시장의 붕괴를 초래할 수 있다고 합니다. 


현재 4차 산업혁명은 '기하급수적'으로 진행되고 있습니다. 디지털 혁명, 소프트웨어 혁명을 통해 세상의 모든 것을 코딩으로 로봇화, 자동화, 인공지능화하는 시대가 빠른 속도로 다가오고 있는 것입니다. 이에 지금 세계 주요 선진국들은 4차 산업혁명에 대비해 코딩 교육을 강화하고 있습니다. 디지털 혁명을 토대로 일어나는 4차 산업혁명 시대에 살아남으려면 코딩은 필수적인 능력이니깐요. 세계 각국은 이러한 코딩 교육을 이미 선행하고 있습니다. 이스라엘은 1994년부터 소프트웨어 과목을 학교 정규 교육과정에 포함시켰고, 핀란드는 2014년부터 코디콜로(코딩학교)를 전국으로 확대하고 있습니다. 오바마 전 대통령은 "코딩을 배우는 것은 여러분의 미래는 물론 조국의 미래에도 매우 중요합니다."라고 말하며 소프트웨어 교육, 코딩 교육이 국가의 경쟁력을 높인다며 교육의 중요성을 꾸준히 강조하고 있습니다.


한국도 소프트웨어 교육을 2018년 중학교 1학년부터 의무화하였고, 이어 2019년에는 초등학교 5~6학년으로 확대했습니다. 또한, 2025년부터는 AI 교육을 초중고에 정식 도입하고 안착시킬 계획입니다. 이처럼 프로그래밍은 소프트웨어 시대를 대비해 꼭 배워야 하는 필수적인 능력이라고 할 수 있습니다.




그래서 프로그래밍이란?

프로그래밍

코딩과 프로그래밍 모두 코드를 작성하는 개념에 대해 상당한 이해가 필요로 합니다. 두 가지 모두 교육을 받지 않으면 접근할 수 없는 분야입니다. 하지만 이 둘 사이에서 프로그래밍은 훨씬 더 많은 지식이 필요로 합니다. 앞서 말씀드렸던 거처럼 코딩은 프로그래밍의 구성요소이기 때문입니다. 코딩은 컴퓨터가 제시한 지침에 따라 입력하는 일입니다. 하지만 프로그래밍은 '테스트', '유지보수', '설계' 등 다양한 기술들을 필요로 합니다. 기술뿐만 아니라 프로그래밍은 더 많은 도구들을 필요로 합니다. '모델링 프로그램', '테스트 도구'등이 더 필요로 합니다. 이처럼 프로그래밍은 다양한 소프트웨어 솔루션을 요구하는 경우가 있습니다. 그래서 우린 단순 학습으로 코드를 짤 때 '코딩'을 한다고 표현하는 경우가 많습니다. 단순한 도구 가지고 실행을 하기 때문입니다.


1. 문제 인식

2. 프로그램 설계

3. 프로그램 구현

4. 테스트와 디버깅

5. 프로그램 유지보수


프로그래밍이란 무엇인가를 다시 정리해 보자면 이렇습니다. 기획된 요청사항을 인지하고, 알고리즘을 적용하여 코딩을 하는 과정 그리고 오류를 수정하고 요구에 맞는 프로그램을 만드는 것을 말합니다.



프로그래밍은 창조가 아닐까?

제가 생각하는 프로그래밍을 비유할만한 단어는 바로 '창조'입니다. 프로그래밍은 누군가에게 편리함을 제공하는 프로그램을 만들어 내기 때문입니다. 평소에 누군가 상상했던 것들을 프로그래밍으로 구현하고 만들어 내었다면 상상을 현실로 창조한 것이 아닐까요? 그렇기 때문에 프로그래밍은 창조입니다. 저는 여러분도 이런 창조의 세계에 초청되었으면 합니다.


코딩의 상상은 현실이 된다.



매거진의 이전글 [06] 프로그래머? 프로게이머?
브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari