컴퓨테이셔널 씽킹의 한 예로 커다란 복잡한 문제를 작은 문제들로 분해할 수 있음을 보여주신 것 같고, 압축 알고리즘 예를 통해 알고리즘에 대해서 설명해 주신 것 같습니다.
하지만 이 둘의 차이점이 무엇인지 아리송 합니다. 왜냐하면 둘 다 문제를 해결하기 위한 느낌이 강하거든요.
혹시 컴퓨테이셔널 씽킹에 알고리즘이 포함되는 건지, 컴퓨테이셔널 씽킹에 따라 알고리즘이 달라질 수 있는지도 궁금합니다. 끝으로 이 둘의 차이점을 알 수 있도록 추가적인 설명을 곁들여 주시면 뇌가 즐거운 공부가 될 수 있을 것 같습니다^^
읽어 보았던 내용이였네요^^; 그럼에도 불구하고 이해가 안되서 올린 질문 이였구요.. 아래 관리자님께서 유익한 정보를 남겨주셨으니 참고하셔도 좋을것 같습니다.
다음은 18일 자정을 넘어가는 새벽 시간에 컴퓨테이셔널 씽킹과 알고리즘에 대해서 제 개인적 생각을 초보자 입장에서 정리한 내용입니다. 가볍게 읽어주시고 관리자님의 답변을 주의깊게 읽으시면 되겠죠^^?
컴퓨터 시스템은 하드웨어와 소프트웨어로 이뤄져 있으며, 이런 컴퓨터 시스템이 문제를 해결하게 됩니다. 즉 컴퓨터 시스템이 문제를 해결하는 '단위'가 됩니다. 때문에 컴퓨테이셔널 씽킹이란 주어진 본래의 추상적 문제를 컴퓨터 시스템 단위로 분해하는 일련의 과정을 말하지 않나 싶습니다. 결국 컴퓨테이셔널 씽킹의 결과물은 컴퓨터 시스템이라는 단위가 되고, 이들이 모여서 본래의 추상적 문제를 해결한다고 볼 수 있을것 같습니다.
알고리즘이란 컴퓨테이셔널 씽킹의 결과물인 컴퓨터 시스템이라는 단위에서 주어진 자원(컴퓨터 하드웨어)을 이용하여 요구사항을 수행하는 일련의 과정을 구체화 하는 단계라고 볼 수 있을것 같습니다. 그리고 알고리즘의 결과물을 가지고 프로그래밍(또는 코딩)에 임하게 되는 것이죠.
강좌 게시글의 무인 자동차 예에서도 "사람의 눈과 귀 역할을 하는 카메라와 센서를 장착해서 주변 상황을 인식하게 하고, 팔과 다리 역할을 하는 각종 제어 장치를 만들어서 사람 없이 움직이게 합니다." 라는 문장을 볼 수 있습니다. 이 문장에서 컴퓨터 시스템의 하드웨어에 속하는 것은 카메라와 센서이며, 주변 상황을 인식하게 하는 문제(요구사항)을 소프트웨어라고 볼 수 있습니다. 즉 컴퓨터 시스템 단위입니다. 그리고 주변 상황 인식이라는 요구사항을 수행할 수 있는 과정을 구체화 하는 단계를 알고리즘이라 보면 좋을 것 같습니다.
# 조금 더 다듬어진 내용입니다.
컴퓨테이셔널 씽킹과 알고리즘(Algorithm)이란?
컴퓨터 시스템은 하드웨어와 소프트웨어로 이뤄져 있으며, 이러한 컴퓨터 시스템이 문제를 해결하는 단위가 됩니다. 때문에 본래의 추상적 문제를 컴퓨터 시스템 단위로 분해하고, 이들이 모여서 본래의 커다란 문제를 해결하도록 하는 전략도 문제를 분석하고 해결책을 찾는 과학적 사고법 즉 컴퓨테이셔널 씽킹이라 볼 수 있습니다. 알고리즘이라는 것도 컴퓨테이셔널 씽킹이라 볼 수 있습니다. 왜냐하면 추상적이지 않은 즉 구체적인 요구사항(문제)를 컴퓨터라는 자원을 사용(소모)하여 수행할 수 있는 일련의 과정을 구체화하는 것 역시 과학적 사고법이고 이를 가리켜 알고리즘이라 하기 때문입니다.
무인 자동차를 예를 들어보면 “사람의 눈과 귀 역할을 하는 카메라와 센서를 장착해서 주변 상황을 인식하게 하고”이것이 하나의 컴퓨터 시스템 단위이고, “팔과 다리 역할을 하는 각종 제어 장치를 만들어서 사람 없이 움직이게 합니다.”이 역시도 하나의 컴퓨터 시스템 단위입니다. 사람의 눈과 귀 역할을 하는 카메라와 센서가 컴퓨터 시스템의 하드웨어이며, 주변 상황을 인식하게 하는 문제(요구사항)을 소프트웨어라고 볼 수 있습니다. 그리고 주변 상황 인식이라는 구체화된 문제를 수행할 수 있는 과정을 구체화하는 단계를 알고리즘이라 합니다.
http://www.bbc.co.uk/education/guides/zp92mp3/revision
BBC에 잘 정리되어 있네요.
컴퓨터로 문제를 해결할 수 있지만, 그렇게 하려면
먼저 문제 자체를 이해해야 합니다. 문제를 이해해야
컴퓨터로 문제를 해결할 수 있겠죠. 이를 컴퓨테이셔널 씽킹이라고 합니다.
컴퓨테이셔널 씽킹은 4가지로 되어 있습니다.
-. 분해: 복잡한 문제를 작은 문제로 나눕니다.
-. 패턴 인식: 문제 안에서 유사성을 발견합니다.
-. 추상화: 문제의 핵심에만 집중하고, 부차적인 것은 제외합니다.
-. 알고리즘: 이렇게 정의한 문제를 해결하는 절차입니다.
복잡한 문제를 해결하는 것은 어렵지만, 작은 문제를 해결하는 것은 비교적 쉬습니다. 작은 문제를 하나씩 해결하다보면 복잡한 문제를 해결하게 됩니다.
컴퓨터 공학에서 배우는 알고리즘은 대부분 정형화된 문제에 대한 검증된 해법을 제시하는 과목입니다.
현실에서 컴퓨터로 해결하려는 문제는 정형화된 문제가 아니라 비정형화된 문제가 더 많습니다. 그래서 비정형화된 문제를 컴퓨터로 해결하는 과정, 즉, 문제를 이해하고, 분해, 패턴 인식, 추상화, 알고리즘 작성까지를 컴퓨터테이셔널 씽킹이라고 합니다.
컴퓨테이셔널 씽킹 = 알고리즘으로 이해하면 컴퓨테이셔널 씽킹을 너무 좁은 의미로 해석한 게 아닐까 싶습니다.
구글에서 만든 컴퓨테이셔널 씽킹 소개 영상이 있습니다.
감사합니다.
또 제가 한 발 늦었네요..T_T
남겨주신 답변 내용이 딱딱하게 느껴지는 걸 보니(특히 패턴, 추상화) 아직 갈 길이 멀어보입니다^^;
하지만 컴퓨테이셔널 씽킹의 분해 단계와 알고리즘 단계 그리고 컴퓨테이셔널 씽킹과 알고리즘의 관계에 대해서 생각할 시간을 가지게 됬고, 그것을 제 입맛에 맞게 정리할 수 있었네요^_^
ps.
아직 강좌의 초반부를 읽고 있지만, 생각할 꺼리가 다소 있다는 것이 매력으로 다가옵니다. 하루 빨리 책이 출판되길 바랄뿐입니다^_^
아! 참.. 책의 속지는 어떤 재질인가요? 손으로 넘기다보니 이것을 고려한 재질이였으면 하는 바램이 있습니다..ㅠ.,ㅠ 요즘은 모르겠지만 예전 책들을 보면 지문이 닳아 없어질것 같은 재질이라서 책 넘기기가 힘들었다는..
지문이 닳아 없어질 것 같은 재질이 어떤 재질인지 잘 몰라서 답변하기가 어려운데요.
<유니티 2D 게임 공작소>와 같은 용지로 제작됩니다.
서점에서 확인해볼 수 있을 거에요.
보통은 촉촉한 재질이고, 감김이 좋고, 고급스러운 느낌이 나는 용지입니다.
날이 서서 잘 베이거나 그런 재질은 아닙니다. 형광등 때문에 발생하는 빛 반사도 적고요.
대신 힘이 있어서 버티는 용지는 아니어서 처진다고 싫어하는 분도 간혹 있지만, 보통은 고급스런 용지라고 좋아하는 용지입니다.
서점이나 도서관에서 확인해보세요. (주)도서출판 길벗의 다른 유니티 게임 프로그래밍 도서도 모두 같은 용지입니다.
감사합니다.
-주의 위의 글은 사실이 아닐 수 도 있으니 비판적 시각으로 읽어주시기 바랍니다
알고리즘은 문제를 푸는 방법이고
computational thinking은
multiple abstraction 의 방법론으로 알고 있습니다
섣불리 일반화 해본다면;;ㅋㅋ
알고리즘의 주체는 컴퓨터이고
computational thinking의 주체는 사람입니다
그리고 알고리즘의 목적은 문제를 풀기 위한것이지만
computational thinking의 문제는 단순히 문제를 푸는것보다 더큰
그냥 사람간의 커뮤니케이션 등등 아무거나 주제가 문제가 아닐수도
있습니다
제가 주관적으로 생각해봤을 때
우리가 리얼월드를 봤을 때 느끼는 생각의 방식
만약 한국인의 예를 들면 그냥 아무 때나 출근할 때나 등등 생각 없이
나는 생각의 방법론을
computational thinking을 사용하여 이어나가는 것입니다.
이렇게 예기하면 욕 처먹을 게 분명하니까
객관적으로 욕 안처먹게 주관적으로 말한다면
알고리즘을 짤 때
왜 알고리즘을 짜는지
어떻게 알고리즘을 짜는지
이 알고리즘의 한계는 무엇인지
알고리즘이 필요한지
알고리즘을 짜야한다는 생각이 왜들었는지
컴퓨터가 이 알고리즘을 사용할 수 있는지
사용하게 하려면 어떻게 해야하는지
에 관한 것을 초딩들한테 교육하려고 만든 개념 같습니다. (저는초딩이아닙니다 오해하지마세요^^)
추가로 자넷윙이라는 마이크로소프트 어느부서 부사장이 주장한 개념
입니다.
-이 글은 copyleft 규정을 따릅니다
- 글싸서 죄송합니다