인생멘토·코딩교육

[코딩교육] 컴퓨터적 사고력의 추상화, 알고리즘

Buddhastudy 2022. 3. 17. 18:32

 

 

이번 강의에선 컴퓨터적 사고력의 나머지 요소들인

추상화와 알고리즘 에 대해서 좀 더 자세히 이야기 해보도록 하겠습니다.

 

 

추상이란 말은

추상적이라서 언뜻 이해가 잘 안 되지 않으시나요?

 

추상이라는 단어는 눈에 보이지 않는 어떤 것을 말합니다.

우리 머리속에만 존재하는 그런 정신적인 것이죠.

 

추상화는 어떤 것의 일반성을 추출해서

쉽고 간결하게 표현하는 것을 의미합니다.

그래서 추상화를 일반화라고 말할 수도 있습니다.

 

우리 주위엔 추상적으로 표현된 것들이 굉장히 많습니다.

예를 들어 달력은 날짜와 요일이라는 개념을 알기 쉽게

일련의 숫자 배열로만 표현해 줍니다.

 

우리는 달력을 보면

그게 날짜와 요일 그리고 월을 나타낸 다는 것을 직관적으로 이해할 수 있습니다.

이건 달력이 날짜와 요일이란 개념을

추상적으로 잘 표현 해주었기 때문이라고 할 수 있습니다.

 

시간이란 것은 눈에 보이지 않죠.

눈에 보이지 않는 이런 것을

사람이 정신적으로 이해할 수 있도록

눈에 보이도록 표현하는 것을 추상화 라고 합니다.

 

지하철 노선도는 또 어떤가요?

지하철 노선도는 각 역들의 정확한 거리 나 위치를 표시하지 않으면서도

꼭 필요한 정보만으로 복잡한 지하철 시스템을 아주 간단히 표현해줍니다.

 

우리는 지하철 노선도만 있으면

어느 역이든 간에 어떻게 찾아가야 할지 쉽게 계산해낼 수 있습니다.

이건 지하철 노선도가 지하철역들의 관계를

추상적으로 잘 표현 하였기 때문이라고 할 수 있습니다.

 

이렇듯 추상화란

어떤 시스템이나 사물들에서

가장 필요한 정보만을 선택해서

전체를 이해하기 쉽게 표현하는 기술을 뜻합니다.

 

지하철 노선도의 예에서처럼

꼭 필요한 정보만으로 전체가 잘 표현되어 있을 때

문제를 더 이해하기 쉬워지고 해결책도 고안하기 더 쉬워지기 때문이에요.

 

추상화 기술이 우리에게 주는 핵심 이점은

문제가 쉽게 표현되어 있을수록 해결책도 쉽게 나올 수 있다는 것입니다.

 

전체에서 핵심만을 뽑아내서 전체를 표현해내는 능력이

추상화 기술이기 때문에

우리 아이들이 어떤 것이 중요하고 어떤 것은 중요하지 않는지에 대한

판단 능력을 길러 줄 필요가 있습니다.

 

추상화와 관련해서 제 얘기를 좀 공유해드리자면

전 학교 다닐 때 에세이나 설명문 혹은 소설 작품 등의 줄거리를 쓰는 일을

너무 어려워 했습니다.

혹시 여러분은 줄거리를 쓰거나 요약하는 일이 쉬우셨나요?

 

줄거리란 건 전체 글을 대표 할 수 있어야 하는 건데

제가 글의 줄거리를 쓰다보면

글의 양이 어느새 전체 글의 반에 육박하고 있더라구요.

 

그때엔 전체 글에서 핵심만을 뽑아내는게 참 어려웠습니다.

무엇이 중요하고 무엇은 안 중요한 지가 구분이 안 되더라구요.

 

핵심들로만 간결하게 전체를 기술하는 능력이 있는 분들이

보통 돈을 벌죠.

기업에서도 높은 위치 있으시거나 혹은 굉장히 좋은 회사를 다니시는 분들이거나

혹은 학생들 중에선 서울대 연고대 등에 다니는 학생들을 보면 전체를 간결하게 표현할 수 있는 능력들이 좋아요.

 

 

--

다음엔 마지막으로 알고리즘에 대해서 이야기해보도록 하겠습니다.

알고리즘은 문제해결을 위한 단계들을 의미한다고 했었습니다.

 

알고리즘을 설계하려면

문제가 잘 이해되어야 한다는 것이 먼저 전제됩니다.

 

컴퓨터적 사고력이 시사해주는 점은

문제를 해결하는 것보다 문제를 잘 이해하는 것이 훨씬 중요하다는 사실입니다.

 

문제를 잘 이해하기 위해서

분해와 추상화 기술을 사용하는 것이고요.

 

문제만 잘 이해되면 문제해결은 의외로 쉽게 되는 경우가 많습니다.

알고리즘의 대표적인 예들 중 하나는 요리 레시피가 있습니다.

 

전 백종원 선생님의 레시피를 좋아하는데

왜냐하면 백주부의 레시피는 요리 단계가 별로 많지 않고 간단해서

따라하기가 편하거든요.

요리 가 뚝딱 완성되고 맛도 좋습니다.

 

개인적으로 전 요리도 좀 잘하는 편입니다.

왜냐하면 알고리즘을 잘 지키거든요.

 

레시피에서 하라는 대로 그대로 따라하기 때문이에요.

계량도 딱 정확하게 하고 시간도 정확하게 지키면서 하기 때문에 맛이 좋아요.

 

알고리즘의 매력은 재연성에 있습니다.

예를 들어 맥도날드는 어느 매장을 가던지

항상 거의 동일한 품질의 햄버거를 만드는 것으로 유명합니다.

 

맥도날드의 햄버거 조리 과정은

매뉴얼화되어 있고 모든 직원들이 이 매뉴얼을 철저하게 지킬 것을 요구받고 있어요.

어딜 가든 똑같이 조리해야 합니다.

그래서 맥도날드는 어딜 가든 비슷비슷한 맛을 보장하죠.

 

그런데 음식 맛의 동일함을 잘 지키지 못하는 음식점들도 많아요.

갈 때마다 음식맛이 달라진다면 그 식당에 다시 가고 싶지 않더라구요.

 

매뉴얼화되어 있지 않은 식당들은

음식을 동일하게 재연하지 못하는 경우가 많습니다.

매뉴얼 없이 주방장들에 의존하는 식당들은 오래가지 못 하더라고요.

 

문제를 해결하기 위해

명확한 단계 들을 정의할 수 있는지가

알고리즘 설계 능력의 핵심입니다.

 

문제 해결을 위해 무엇을 해야 하는가

어떤 순서대로 해야만 하는가를 알고리즘 설계 단계에서 하게 됩니다.

 

우리 아이가 이 알고리즘 설계 능력이 있다면

복잡한 문제들과 맞닥뜨려도 겁먹지 않고 문제를 해결하려면

먼저 문제를 잘 표현해서 이해한 다음

명확한 단계들을 설정해야 한다는 것을 본능적으로 떠올리게 될 겁니다.

이런 능력을 길러주는 훈련을 코딩교육이 해야하는 것이고요.

 

 

자 이제 정리하자면

컴퓨터적 사고력을 이루고 있는 추상화 기술은

문제를 핵심 정보만으로 간략하게 표현하는 것을 의미합니다.

 

이를 위해서 필요한 것과 불필요한 것을 나눌 수 있는 분별력이 필요하죠.

이제 문제가 잘 이해되었으면 문제를 실제로 해결하기 위해

필요한 작업들의 단계를 정의하는 알고리즘 설계 작업을 해야 합니다.

 

알고리즘의 핵심은 재연성이라고 했습니다.

즉 어떤 알고리즘을 설계했을 때

동일한 종류의 다른 문제를 풀려고 할 경우

이미 설계된 알고리즘으로 그 문제가 해결될 수 있어야 하는 걸 의미합니다.

 

그래서 최종적으로 컴퓨터적 사고력으로 문제해결을 하는 과정을

4가지 요소기술들로 간략하게 기술해 보면

복잡한 문제를

분해하고

추상화해서

이해가 쉽도록 잘 표현한 다음

패턴인식을 통해 쉽게 해결할 수 있는 것들을 확인하고

최종적으로 문제해결을 위해 알고리즘을 설계하는 것이라고

정리할 수 있겠습니다.