절차적 사고란?
소프트웨어를 사용하여 컴퓨터가 일상 속 문제를 해결해주기 때문에 우리는 편리한 생활을 할 수 있다. 그러므로 소프트웨어를 만들 때 문제를 해결하는 과정에서 절차적 사고라는 과정이 필요하다는 것이다. 경우에 따라서 어떤 문제를 마주하게 될 때 해결해야 할 문제가 무엇인지 알아본 후, 문제를 세분해 단계별로 처리하면 더 쉽게 해결할 수 있다. 이처럼 문제를 효율적으로 해결하기 위해 문제를 세분화한 후에 각각의 문제를 단계별로 처리해 나가는 사고 과정을 절차적 사고라고 한다.
절차적 사고로 문제를 해결하기 위해서는 먼저 문제 이해하기, 정보 알아보기 단계가 제일 먼저 해야 할 과정이다. 이어서 문제를 작게 나누어 해결하기 단계를 거치게 된다. 그 중에 공통된 해결 방법은 묶어서 표현하고 문제를 해결하는 데 불필요한 부분은 제거하는 묶어서 표현하기, 필요없는 부분 제거하기 단계를 통해 문제 해결 과정이 완성된다.
이러한 절차적 사고를 향상 시키기 위한 방법중 하나로 알고리즘의 학습이 필요하다. https://cafe.daum.net/flowlife/F6Jx/339
위키피디아에 따르면 알고리즘은
“수학, 컴퓨팅, 언어학과 같은 분야에서 계산이나 데이터 처리에 주로 사용되는, 유한(有限) 개수의 명령어들의 순차적인 나열이
다. 어떠한 일을 수행하기 위하여, 잘 정의된 명령어들을 적절한 순서대로 나열을 하고, 그 나열된 순서대로 명령어들을 차례대
로 수행하면 결국 최종적으로 그 일이 완성되게 하는 효과적인 방법이다.”
알고리즘을 설명하는 예로 알란 튜링 (Alan Turing)에 대한 일화를 보자. 튜링의 집에는 교육을 받지 못한 가정부가 있었다고 한다. 튜링은 그 당시 어려운 수학문제를 어떻게 하면 자동으로 해결할 수 있는 가상의 기계를 만들 수 있을까를 고민하고 있을 때였는데, 어느 날 그 가정부에게 수학 문제 풀이를 할 수 있도록 하는 방법을 생각을 해 봤다고 한다. 교육을 전혀 받지 못해 기본적인 단순 논리 사고만 할 수 있는 그 가정부가 어려운 수학문제를 풀 수 있도록 하게 한다면, 기계에도 그 수학문제를 풀 수 있도록 만들 수 있을 것이라고 생각한 것이다. 튜링이 사용한 방법은 어려운 수학 문제 풀이 과정을 세분한 후 단순한 기계적인 사고만으로도 해결할 수 있도록, 그것을 순서대로 나열해 놓고, 따라 하도록 하는 것이었다. 결국 가정부는 그 순서대로만 일을 수행을 하였고 어렵지 않게 수학 문제 풀이를 완성하더라는 것이다. 따라서 튜링은 인간이 해결하는 어떠한 문제라도 그 해결 과정을 기계가 처리할 수 있는 단위까지 아주 잘게 분해하여 순서대로 나열해 놓고, 그 기계에게 차례대로 처리하도록 할 수만 있다면 인간의 문제를 자동으로 처리하는 기계를 설계할 수 있다고 생각한 것이다.
이 가정은 다시 생각해 보면, 정보를 아주 작은 최소의 단위로 분해하면 0과 1로 분해할 수 있고, 0과 1의 순차적인 나열을 읽고 처리할 수 있는 기계를 만들 수가 있는데, 튜링은 이러한 모델을 만들었으며 이것을 “Turing Machine”이라 부른다. 이 튜링머신이라는 가상 모델은 오늘날 우리가 사용하고 있는 모든 컴퓨터의 이론적 모델로 사용되었다.
문제해결 방법을 검증된 알고리즘으로 만들어 프로그래밍 하면 컴퓨터가 복잡하고 반복적인 작업을 빠르게 실수없이 처리할 수 있게 된다. 그렇다면, 문제해결 방법은 누가 생각해 낼 것이고 누가 알고리즘 형태로 바꾸어 줄 것인가? 컴퓨터가 자동으로 처리 해 줄 수 있을까? 물론 아니다. 문제가 있을 때 그 문제를 해결하는 효율적인 방법은 사람이 생각해 내야 하는 것이고(딥러닝으로 인해 일부는 컴퓨터를 통해 처리가 가능해짐) 처리만 컴퓨터에서 자동으로 할 수 있게 하는 것이다. 이 것이 바로 알고리즘을 학습해야 하는 이유라고 할 수 있다. 알고리즘이야말로 개발자의 능력 및 가능성을 확인할 수 있는 주요 바로미터라고 하겠다.
좀더 구체적인 내용 보기 https://cafe.daum.net/flowlife/F6Jx/339