지금은 4차 산업혁명의 시대라고 한다. 모든 사람들이 소프트웨어는 4차 산업혁명의 핵심이라고 말하고 있다. 우리나라도 4차 산업혁명에서 다른 나라들에게 뒤쳐지지 않기 위하여 의무 교육으로 미래의 주역들에게 프로그램 코딩교육을 실시할 예정이다. 그런데 아쉽게도 우리는 프로그램 코딩 교육을 프로그램을 만드는 프로그래밍 언어 교육으로 잘못 알고 있다. 소프트웨어를 잘 만들기 위해서는 컴퓨터의 한계를 이해한 상황에서 프로그램을 잘하기 위한 기본적인 개념을 습득해야 한다. 그 기본 개념을 일반적으로 컴퓨팅 사고력이라고 부른다. 즉 컴퓨터처럼 생각하자는 것이다. 컴퓨터처럼 생각하자는 것은 컴퓨터에 가장 적합한 문제해결 방법을 찾자는 것과 동일한 의미이다. 아무리 좋은 해결 방법이라도 컴퓨터를 사용할 수 없다면 소프트웨어 중심의 4차산업혁명의 시대에 적응할 수 없기 때문이다.

컴퓨팅 사고력의 핵심은 우리가 풀어야 할 것들에 대한 해결안을 모델화하는 것이다. 모델화가 잘 되었다면 그 모델을 바탕으로 누구나 어렵지 않게 프로그램으로 만들 수 있다. 모델을 만드는 것은 가장 창의적이고 창조적인 활동인 반면에 프로그램을 코딩하는 것은 비교적 손쉬운 일이다. 문제의 해결을 컴퓨팅 사고력에 기반하여 모델화하는 방법을 이해함으로써 창의력을 높일 수 있으며, 또한 논리력을 크게 증대시킬 수 있다.

우리는 매일 수많은 크고 작은 문제들과 마주치고 있지만, 대부분의 경우 이미 익숙해져 있거나 정답을 알고 있어서 별다른 고민 없이 해결할 수 있는 것들이다. 학생이 아침에 늦게 일어나서 학교에 지각할 것 같으면 본능적으로 뛰어 간다. 혹은 절대로 늦어서는 안 되는 약속이라면 비싸더라도 택시를 타고 간다. 정작 우리의 고민거리는 우리가 경험해보지 못했거나, 복잡하게 얽혀 있어서 어떻게 해야 할지 모르는 경우일 것이다.

우리는 운동을 하거나 산책을 하는 등 일상적으로 걸어 다닐 때 어떻게 해야 잘 걸을지에 대해서 특별히 고민하거나 생각하지 않는다. 심지어 굉장히 빠른 속도로 달릴 수도 있다. 그러나 어린 아기에게 걷는다는 것은 자라면서 극복해야 할 매우 어려운 문제일 수도 있다. 아기는 여러 번의 시도와 실패를 통하여 걷는 경험을 축적하고 마침내 두발로 서서 걷는 방법을 깨우치게 된다. 다리 근육의 힘을 키우고 넘어짐의 두려움을 극복해서 걷는 방법을 알면 더 이상 걷기는 문제가 되지 않는다. 걷기와 같은 운동능력은 뇌의 깊숙한 부분에서 발달해서 우리가 특별히 의식하지 않더라도 주어진 상황에 자동적으로 반응하게 된다. 자전거 타기처럼 일단 익히게 되면 특별히 신경 쓰지 않아도 자동적으로 몸이 반응해서 균형을 유지하는 것도 이 때문일 것이다. 소프트웨어 논리도 마찬가지이다. 처음에는 어려울 수 있지만 학습과 훈련이 되면 점차적으로 특별히 의식하지 않아도 스스로 잘 할 수 있게 된다. 시간이 지남에 따라 그냥 컴퓨터에 적합하게 생각하거나 컴퓨터적으로 생각하게 되는 것이다.

컴퓨터에게 일을 시키는 것이 어떤 것인지 생각해보자. 컴퓨터는 소프트웨어가 없으면 할 수 있는 일이 별로 없다. 그렇기 때문에 소프트웨어가 없으면 비싼 깡통이라고 비유하기도 한다. 큰 돈을 들여 구입했지만 별로 쓸모는 없다는 뜻일 것이다. 컴퓨터에게 가치 있는 일을 시키기 위해서는 우리 사람들의 생각을 정리해서 소프트웨어로 만들어야 한다. 그런데 아쉽게도 아직까지 컴퓨터는 사람의 말을 제대로 이해하지 못한다. 컴퓨터가 이해할 수 있는 한정된 말로만 일을 시켜야 하기 때문에 경험 없는 사람이 컴퓨터에게 일을 시키는 것은 대단히 어려운 작업일 수도 있다. 그나마 다행인 것은 컴퓨터는 사람이 이해하는 논리를 불평 없이 잘 수행하는 편이다. 따라서 컴퓨터가 생각하는 방식으로 소프트웨어를 만들어서 수행시키면 사람보다는 훨씬 더 빠른 속도로 일을 할 수 있는 것이다.

현재 대부분의 컴퓨터는 한정된 명령어인 100여개 정도의 단어만 이해한다. 그렇기 때문에 직접적으로 할 수 있는 일도 매우 제한적일 수 밖에 없다. 예를 들어 어떤 컴퓨터는 덧셈만 할 줄 안다. 그러면 컴퓨터에게 뺄셈을 시킬 때는 어떻게 하면 될까? 컴퓨터에게 수학의 보수를 만들어서 더하라고 시키면 된다.

그럼 곱하기를 시킬 때는 어떻게 하면 될까? 곱하는 수만큼 더하라고 시키면 된다. 이렇듯 컴퓨터는 생각하는 것 즉 할 수 있는 것이 아주 제한적이기 때문에 이런 제한적인 능력을 가지고도 원하는 것을 할 수 있도록 대부분의 것들은 사람이 생각해 내야 한다. 그러한 것들을 소프트웨어 논리라고 할 수 있다. 즉 컴퓨터의 제한적이고 단순한 능력을 가지고 복잡한 일을 할 수 있도록 컴퓨터에게 명령하는 것을 의미한다. 이렇게 제한적인 명령어를 잘 조합하여 소프트웨어를 만들게 된다.

그러므로 소프트웨어 논리란 컴퓨터의 제한적인 능력을 이용해서 우리가 하고자 하는 것을 이루기 위한 창의적인 생각이라고 할 수 있다. 이 말을 좀 더 세련되게 표현하면 우리가 알고 있는 문제를 구체적으로 정리하여 컴퓨터의 제한적인 능력을 잘 이해함으로써 제대로 활용하여, 주어진 문제를 해결하려는 것이다.

채성수 chaesungsoo@iabacus.co.kr소프트웨어 개발 전문기업 ㈜ 애버커스 사업총괄 부사장. 엘지전자와 엘지씨엔에스(LG CNS)에서 다년간 컴퓨터 관련 사업을 추진한 전문가이다. 국가 공인 최고 자격인 정보관리기술사로 성균관대 및 서강대에서 컴퓨터 관련 연구를 수행했으며 소프트웨어 공학, 컴퓨터적 사고에 대해서 관심을 갖고 다양한 활동을 하고 있다.

(* 이 칼럼은 Nextdaily의 편집방향과 다를 수 있습니다.)

저작권자 © 넥스트데일리 무단전재 및 재배포 금지