프로그래밍이란 컴퓨터에게 실행을 요구하는 일종의 커뮤니케이션이다. 그러므로 먼저 무엇을 실행하고 싶은지를 정의할 필요가 있다.
컴퓨터에게 무엇을 실행하고 싶은지 전달하려면 컴퓨터의 입장에서 문제를 바라봐야 한다. 이것을 컴퓨팅 사고(Computational Thinking)이라고 정의한다.
컴퓨터의 관점에서 문제를 사고하려면 해결 과제를 작은 단위로 분해하고 패턴화해서 추출해야한다.
컴퓨팅 사고를 통해 문제를 재정의했다면, 이를 컴퓨터에 전달할 때에는 기계어로 바꿔줘야 한다. 하지만 사람이 0과 1로 이루어진 기계어를 작성할 수는 없으므로 약속된 구문으로 작성된 프로그래밍 언어로 문제 해결 방법을 작성한뒤, 컴파일러를 통해 기계어로 변환하게 된다.
프로그래밍 언어는 구문(Syntax)과 의미(Sementics)의 결합으로 이루어진다. 프로그래밍 언어를 잘 구사하려면 의미가 올바르게 담긴 구문을 작성해야 한다. 그리고 프로그래밍 언어에서 의미란 문제가 실현(혹은 요구사항이 해결)되는 것이다.