EtoC
프로그래밍과 컴퓨팅적 사고 본문
1. 프로그래밍
컴퓨터에게 명령하기전에 문제(요구사항)를 명확히하고, 복잡한 과정을 단순한 과정으로 분해(decomposition), 자료를정리하여 구분(modeling)하여 순서를 정해주어야하는데 이러한 과정을 프로그래밍이라 한다.
간단히 말하자면
- 프로그래밍의 목적은 문제해결이다.
- 문제를 해결하기위해 컴퓨터에게 실행을 요구하는 커뮤니케이션이다.
- 0과1로 이루어진 컴퓨터가 문제를 해결할 수 있도록 정확하고 상세하게 요구사항을 설명하는 작업이며, 그결과물이 코드이다.
이렇게 컴퓨터에게 문제를 해결하라 할 때, 컴퓨터의 입장에서 생각해야하는데 이를 컴퓨팅 사고라한다.
1. 컴퓨팅 사고
- 컴퓨팅적 사고는 컴퓨터 과학자뿐만이 아니라 누구나 배워서 활용할 수 있는 보편적인 사고이자 기술이다.
- 컴퓨팅적 사고의 핵심은 프로그래밍이 아닌 개념화에 있다.
COMMUNICATIONS OF THE ACM March 2006/Vol. 49, No. 3 에서
재료를 준비하고 샌드위치를 만들어 달라고 요구했을때, 사람이라면 식빵 좀 잘라서 가져온 재료만 넣고 말들어달라고하면 알아서 만들어준다.
하지만 컴퓨터는 식빵의 어디에 잼을 발라야할지, 내용물은 어떻게 해야할지, 씼어야하는지, 껍질을 벗겨야하는지, 으깨야하는지, 잼은 뚜껑을 따야하는지, 잼을 어떻게 바를지, 만들었을때 그릇위에 내놓아야할지 등등 하나하나 알려주지않으면 동작하지 않는다.
이처럼 컴퓨터는 사람과 인지의 방식이 다르기때문에 문제를 해결하기위해서는 컴퓨터의 관점에서 사고하고 명령해야한다.
컴퓨터처럼 사고하기 위해서는 논리적,수학적 사고가 필요하며, 해결과제를 작은 단위로 분해하고 패턴화해서 추출하여 프로그래밍 내에서 사용될 모든 개념은 평가하도록 정의해야한다.
2. 프로그래밍 언어
이러한 명령을 수행할 컴퓨터가 이해할 수 있는 기계어로 명령을 전달해야하는데, 기계어는 비트(bit)단위로 쓰여있어 사람은 이해하기 어렵다.
컴퓨터에 기계어로 명령을 전달하기위해서는 사람과 기계가 이해할 수 있는 syntax로 이루어진 프로그래밍 언어를 사용해 프로그램을 작성하고, 그것을 컴퓨터가 이해할 수 있는 기계어로 변환하는 번역기(compiler 또는 interpreter)를 사용해야한다.
- 프로그래밍 언어는 사람과 컴퓨터가 이해할 수 있는 번역기를 사용하는데, 이를 컴파일러 또는 인터프리터라고 하며, syntax로 구성되어있다.
- 프로그래밍 언어에는 syntax와 semantics로 구성되어있다.
3. 구문과 의미
syntax만 옳다고해서 컴퓨터가 잘 수행하는것은아니다. 단어와 문맥에 담긴 내용이 다르면 오류가 발생 할 수 있다.
즉, 문법도 맞으면서 올바른 의미를 지녀야한다.
- syntax(구문)
컴퓨터언어와 인간어 사이의 원활한 커뮤니케이션을 위한 문법이다.
- semantics(의미)
언어학 및 논리학의 기본 분야 중의 하나로 말이나 글의 의미 또는 뜻을 연구하는 분야이다.
그러나 이러한 정의는 의미 또는 뜻이라는 개념 자체가 불분명하다는 점에서 충분히 명확한 정의라고 할 수 없다는데,
내용을 알아볼수 있는 의미를 가지는 이름을 사용해야 한다는 말이라고 생각한다.