인생멘토·코딩교육

[코딩교육] 컴퓨터적 사고력의 분해와 패턴인식

Buddhastudy 2022. 3. 16. 19:00

 

 

스크립트 이번 강의에선

컴퓨터적 사고력의 한 가지 요소인

분해와 패턴인식에 대해서

좀 더 자세히 이야기 해보도록 하겠습니다.

 

분해는 아마 나머지 요소들에 비해서 가장 이해하기 쉬우실 거예요.

분해는 문제를 해결하기 위해

그 문제를 해결할 수 있는 가장 작은 단위로 나누는 작업을 의미한다고 했었습니다.

 

성인들 입장에선

큰 문제를 작은 것들로 나누어서 해결한다는 방법은

어찌 보면 당연한 것이기도 한데

아이들 입장에선 꼭 그렇지도 않습니다.

 

큰 문제를 작은 문제들로 나누는 걸 경험해 보지 않았다면

아이들은 복잡한 문제를 만날 때마다

어떻게 할지 몰라 쩔쩔맬지도 모릅니다.

 

그리고 성인들도 복잡한 성격의 문제와 마주칠 경우에

골머리를 앓는 경우도 많죠.

 

예를 들어 초등학교 1학년인 아들에게 학교 갈 준비를 하라고

엄마가 지시했다고 생각해보겠습니다.

엄마입장에선 학교 갈 준비라는게 직관적으로 뭘 의미하는지 이해하겠지만

8살 아이입장에선 특히 남자아이한테 이게 결코 만만치 않은 일이거든요.

 

남자애들은 발달이 상대적으로 느리잖아요.

그래서 학교 갈 준비라는 건 남자아이한테는 충분히 복잡한 일입니다.

 

학교 갈 준비를 한다는 건

여러 가지 일들을 모두 완료해야 한다는 뜻이죠.

일어나서 이불을 개고, 양치질 하고, 세수를 해야 합니다.

필요하다면 머리를 감기도 하고 수업에 필요한 준비물들을 챙겨야 하고 옷을 입고 양말을 신어야 돼요.

밥도 먹고 가방을 멘 다음 신고 갈 신발을 확인해야 돼죠.

 

이 정도의 일들을 수행해내야

학교 갈 준비라는 복잡한 과제를 한 것이라고 할 수 있는데요

성인한테는 이게 별거 아닌 일일 수 있지만

8살 남자아이한테는 충분히 복잡한 문제일 수 있습니다.

 

전에 성격 급한 엄마 한 분이

자기 아들이 학교 갈 준비를 혼자서 못한다고

아이한테 아침 내내 계속 화를 내는 걸 본 적이 있어요.

 

아이가 굼뜨니까 그 엄마가 너무 답답해 하시더라고요.

애가 너무 굼뜨니까 아이 발달에 뭔가 문제가 있는지 너무 걱정된다면서

병원까지 가서 검사도 받으시더라고요.

 

근데 아이에 대한 병원 검사 결과는 정상으로 나왔어요.

그랬더니 애 엄마가 더 황당해 하시는 거예요.

애가 너무 느려서 당연히 발달에 문제가 있을 거라고 생각했었고

계속 이런식이면 학교도 1년 늦게 갈 생각까지 하고 있으셨거든요.

 

이런 문제의 원인은

그냥 단지 아이 엄마가

아이가 작은 일들을 하나하나 모두 혼자서 수행할 수 있도록

개별적으로 훈련 시킨 적이 없었다는 거예요.

 

분해 능력이 있다면 복잡한 문제가 생겨도

아이는 겁먹지 않고 문제의 복잡함을 바라보며

그것을 잘게 나눠서 해결할 수 있을 겁니다.

 

이런 기술을 아이에게 가르치는 것이 부모의 역할 아니겠습니까?

복잡한 일을 못 해낸다고 아이에게 윽박지르지 말고

차근차근 분해해서 하나씩 완료할 수 있도록 도와주라는 거죠.

 

--

자 다음엔 패턴인식에 대해서 이야기를 해보도록 하겠습니다.

여러분은 패턴하면 어떤 생각이 떠오르시나요?

전 커텐이 생각나더라고요.

커텐의 천을 보면 일정한 무늬가 패턴을 이루고 있는 경우가 많죠.

 

패턴은 이런 그림처럼 비슷한 모양을 가진 것들의 집합입니다.

패턴을 이룬다는 건 비슷한 것들이 반복된다는 것을 의미하죠.

 

이 문제가 예전에 이미 해결되었던 문제들과 비슷한 패턴이 있다라고 하면

이미 사용했던 해결책을 새로운 문제를 해결하기 위해 바로 사용할 수 있습니다.

즉 검증된 해결방법 을 재사용하는 것이 패턴인식의 핵심인 것이죠.

 

이미 검증된 해결방법을 사용할 수 있다면 당연히 좋지 않겠습니까?

시간 절약과 더불어 해결책을 짜내려하는 고민을 안 해도 되까요.

 

프로젝트와 같이 복잡한 과제를 수행하는 것과 관련해서

패턴인식 기술을 활용하는 건

프로젝트를 완료해내기 위해 분해된 과제들을 빨리 처리할 수 있는 방법들을 확인하는 작업이라고 할 수 있습니다.

 

예를 들어 어떤 프로젝트를 수행하던 간에

사람들끼리 모여서 하는 그룹 프로젝트엔

반드시 잘 관리 되어야 할 문제들이 존재합니다.

 

팀원 간의 의사소통 방법이라든가 리서치 자료 정리 및 산출물 보관 같은 작업은

무슨 프로젝트 이던 간에 반드시 잘 관리되어야 하는 일들입니다.

 

그런데 이런 일들을 처리하기 위해 그때 그때마다 새로운 방법을 강구 해야만 할까요?

프로젝트를 할 때마다 산출물 보관 방법을 새롭게 만들어야 한다면

귀찮기도 하거니와 얼마나 시간을 많이 낭비하겠습니까?

 

시간을 절약하기 위해

우린 기존에 사용했던 검증된 방법이나 도구들을 사용하는 겁니다.

작업의 효율성을 높이는 것이죠.

 

패턴인식 기술이 강조해주는 사실은

문제를 해결할 때 맨땅에 헤딩하지 말라는 겁니다.

 

처음부터 모든 걸 혼자서 하려고 하는 것만큼 바보같은 짓은 없다는 것에요.

패턴인식은 우리의 선배들이 이미 이룩해놓은 것들을 재사용해서

소위 삽질을 하지 않게 막아주는 기술이라고 말할 수 있습니다.

어떤 사람도 무에서 유를 창조하지는 않습니다.

 

뉴튼이 그런 말을 한 적이 있었죠.

만약 내가 다른 이들보다 더 멀리 볼 수 있었다면

그건 바로 거인들의 어깨 위에 올라섰기 때문이라고요.

 

이 말을 처음 들어보신 분들을 위해 해석해드리자면

뉴튼이 뛰어난 과학적 업적을 이룰 수 있었던 이유는

선배 과학자들이 이룩해놓은 업적들을 잘 활용했었기 때문에

시간을 단축할 수 있었던 것이다라고 해석할 수 있습니다.

, 뉴튼도 패턴인식 기술을 활용했던 것이죠.

 

 

사실 프로그래밍 세계에서 코드를 재사용하는 기술은

매우 중요한 기술 중 하나입니다.

 

예를 들어 내가 웹사이트를 하나 개발해야 하는데

웹사이트에 게시판을 하나 넣어서 거기에 사진과 파일을 업로드할 수 있도록 하려고 한다고 해 봅시다.

 

이걸 내가 혼자서 처음부터 다 개발하려고 한다면

시간이 정말 많이 걸릴 수밖에 없습니다.

그리고 어떤 개발자도 이걸 혼자서 다 개발하려고 하지 않습니다.

시간이 너무 많이 걸리니까요.

 

그래서 이미 선배들이 잘 만들어놓은 코드들이 많기 때문에

그걸 가져다가 약간만 수정해서 사용합니다.

 

프로그래밍 세계에선 이렇게 재사용 가능한 코드들을

오픈소스라고 부릅니다.

 

프로그래머들은 지극히 효율성을 추구하는 사람들이기 때문에

패턴인식의 전문가들이라고 할 수 있습니다.

 

--

, 간단히 이번 강의의 내용을 정리 해보겠습니다.

분해는 큰 문제를 작은 것들로 나누는 기술이고

패턴인식은 기존의 해결책을 지금의 문제를 해결하기 위해 사용할 수 있는지 확인하는 기술입니다.

 

별로 어렵지 않은 내용이었죠.

다음 강의에선 컴퓨터적 사고력의 나머지 두 부분인

추상화와 알고리즘에 대해서 이야기하도록 하겠습니다.