1.1 프로그래밍이란?
컴퓨터에게 실행을 요구하는 커뮤니케이션
커뮤니케이션 = 문제(요구사항)에 대한 명확한 이해 + 적절한 문제 해결 방안 정의
명확한 이해 = 문제(요구사항)의 복잡함을 단순하게 분해*(decomposition)*
문제 해결 방안 정의 = 정리하여 구분*(modeling)* + 순서에 맞게 배열
💬 0과 1밖에 모르는 컴퓨터와 커뮤니케이션을 하기 위해선, 위 단계를 포함한 **매우 상세하고 정확한 요구사항을 설명**하는 작업이 필요하다.
컴퓨팅 사고?
문제에 대해 컴퓨터의 관점에서 논리적이고 수학적인 사고를 가지고 해결 방안을 고려하는 것
- 일반적인 사람의 사고는 매우 포괄적이고 경험에 대한 의지로부터 불러온 익숙함이 존재한다.
- 컴퓨터의 사고로 문제를 바라볼 땐, 상대적인 개념과 같은 불명확적인 기준으로 설명하면 안된다.
컴퓨팅 사고 = 문제를 매우 작은 단위로 분해 + 패턴화하여 추출 + 평가 가능하도록 정의
1.2 프로그래밍 언어
컴퓨팅 사고로 정의된 문제 해결 방안을 컴퓨터에게 명령으로 전달할 때, 사람과 컴퓨터가 이해할 수 있는 언어
어떻게 기계에게 명령을 전달하지?
- 컴퓨터가 사용하는 언어인 기계어로 사람이 전달하기엔 너무 어렵다.
- 기계와 사람 사이에 번역기가 존재했음 좋겠는데..?
컴파일러 혹은 인터프리터 = 사람도 기계도 명령을 전달하고 이해하는데 도와줄 번역기
컴퓨터에게 명령을 내리는 과정
- 사람이 컴파일러에게 프로그래밍 언어를 사용해서 명령을 전달
- 컴파일러가 기계어로 번역 후 컴퓨터에게 전달
프로그래밍 언어 = 구문(syntax) + 의미(semantics)
프로그래밍 = 프로그래밍 언어를 사용해 컴퓨터와 커뮤니케이션하는 행위
1.3 구문과 의미
💬 프로그래밍 언어를 잘 사용하는 것은 문제 해결 능력을 통해 만들어낸 해결 방안으로 문제의 요구사항을 모두 충족시키는 것을 의미한다.
- 모든 언어와 마찬가지로 프로그래밍 언어를 사용할 때, 문법적으로 맞는 문장을 구성함과 동시에 의미를 가지고 있어야 한다.
- 프로그래밍의 최종 목적은 문제 해결이다.
- 문제 해결을 위해서 요구사항의 집합을 분석해서 적절한 자료구조와 함수의 집합으로 변환 후 그 흐름을 제어한다.