프로그래밍은 요구사항의 집합을 분석해서 적절한 자료구조와 함수의 집합으로 변환한 후, 그 흐름을 제어하는 것이다.
프로그래밍이란 컴퓨터에게 실행을 요구하는 일종의 커뮤니케이션이다. 이를 위해 해결해야할 문제를 이해한 후 적절한 문제 해결 방안을 정의할 필요가 있다.
- 문제 해결 능력
문제 해결 능력은 알고리즘보다 더 큰 차원의 능력 대부분의 문제는 복잡하며 명확하지 않다. 따라서 복잡함을 단순하게 분해하고 자료를 정리하고 구분해야하며 순서에 맞게 행위를 배열해야한다. 즉, 프로그래밍이란 0과 1밖에 알지 못하는 기계가 실행할 수 있을 정도로 정확하고 상세하게 요구사항을 설명하는 작업이고 이때 필요한 것이 컴퓨팅 사고이다. - 컴퓨팅 사고(Computational thinking)
컴퓨터와 사람은 사고, 인지의 방식이 다르다. 따라서 프로그래밍을 할 때는 컴퓨터의 관점에서 문제를 사고 해야한다. 예를들어 사람은 소리의 크기를 “크다” 또는 “작다”로 표현한다. 하지만 컴퓨터에게는 양적 개념인 숫자를 사용해 “볼륨을 60으로 조정해라”라고 명령해야한다.
문제 해결 방안을 컴퓨터에게 전달할 때에는 사람이 이해할 수 있는 자연어가 아니라 컴퓨터가 이해할 수 있는 언어, 즉 기계어로 명령을 전달해야 한다. 하지만 사람이 기계어로 직접 명령을 전달하는 것은 매우 어렵다.
- 컴파일러(Compiler)와 인터프리터(interpreter)
프로그래밍 언어를 컴퓨터가 이해할 수 있는 기계어로 변환하는 일종의 번역기. - 프로그래밍 언어
컴퓨터와의 대화에 사용되는 일종의 표현 수단으로, 사람과 컴퓨터(컴파일러 또는 인터프리터) 모두가 이해할 수 있는 약속된 형태의 인공어.
프로그래밍은 이처럼 프로그래밍 언어를 사용해 컴파일러 혹은 인터프리터로 전달하고 그것을 기계어로 번역해 컴퓨터에게 실행을 요구하는 일종의 커뮤니케이션이다.
프로그래밍 언어는 구문과 의미의 조합으로 표현된다.
프로그래밍 언어도 외국어를 구사할 때와 마찬가지로 문법에 맞는 문장을 구성하는 것은 물론 의미를 가지고 있어야 언어의 역할을 충분히 수행할 수 있다.
const number = "string";
console.log(number * number); //NaN
자바스크립트의 변수에는 어떠한 타입의 값도 할당할 수 있다. 따라서 위의 예제는 문법적으로는 문제가 없지만 의미적으로는 옳지 않다.
결론적으로, 문제를 만났을 때 문제 해결 능력을 바탕으로 해결방안을 찾고 그것을 문법과 의미에 맞게 코드로 나타내는 것이 프로그래밍이다.