
프로그래밍이란 컴퓨터가 이해할 수 있도록 정확하고 상세하게 요구사항을 설명하는 커뮤니케이션 작업이다. 본인이 원하는 요구사항이 무엇인지 명확하게 이해한 후, 구체적인 문제 해결 방안(프로그래밍)을 찾아나가야한다. 이 때 필요한 것이 컴퓨팅 사고(Computational Thinking)이다. 사람의 관점에서 해석되는 모호한 요구 사항을 컴퓨터가 이해할 수 있도록 작은 단위로 분해하고 패턴화하여 추출하는 것이다.
컴퓨터는 사람이 정의한 해결 방안을 실행해야한다. 컴퓨터는 사람이 사용하는 자연어가 아니라 기계어를 통해 명령을 전달 받아 실행하게 된다. 아래는 Hello World의 기계어 코드이다.
// Hello World 출력 기계어
7F 45 4C 46 01 01 01 00 00 ...
이처럼 사람이 직접 기계어를 이해하고 직접 명령하는 것은 매우 어려운 일이다. 이 때 가장 유용한 대안은 사람이 이해할 수 있는 약속된 구문으로 구성된 프로그래밍 언어를 사용해 프로그램을 작성한 후, 컴파일러 혹은 인터프리터를 통해 기계어로 번역을 하는 작업을 거쳐 명령을 내린다. 이런 프로그래밍 언어는 구문과 의미의 조합으로 표현된다.
프로그래밍 언어를 학습하는 것은 외국어 학습과 매우 유사하다. 문맥에 따른 적절한 어휘 선택과 의미를 갖추고 있어야만 언어의 역할을 충실히 했다고 할 수 있다.
const number = 'string';
console.log(number * number); // NaN
위 예제는 문법적으로 문제는 없으나 number라는 변수에 문자열이 할당되어 있기 때문에 의미적으로는 옳지 못하다. 해당 변수에는 숫자를 할당하는 것이 의미적으로 옳다.
이처럼 프로그래밍 언어의 문법에 부합하는 것은 물론이고, 요구사항이 실현(문제 해결)되어야 의미가 있다.