01장 프로그래밍

1.1 프로그래밍이란?

프로그래밍이란 컴퓨터에게 실행을 요구하는 일종의 커뮤니케이션이다.
이를 위해 프로그래밍에 앞서 해결해야 할 문제(요구사항)를 명확히 이해한 후 적절한 문제 해결 방안을 정의할 필요가 있다.

즉, 프로그래밍이란 0과 1 밖에 알지 못하는 기계가 실행할 수 있을 정도로 정확하고 상세히 요구사항을 설명하는 작업이며, 그 결과물이 바로 코드다.

우리는 문제 해결 방안을 고려할 때 컴퓨터의 입장에서 문제를 바라봐야 한다.
이때 필요한 것이 컴퓨팅 사고(Computational thinking)이다.

컴퓨터와 사람은 사고, 인지의 방식이 다르기 때문에 컴퓨터의 관점에서 문제를 사고해야 한다. 여기에는 논리적, 수학적 사고가 필요하며 해결 과제를 작은 단위로 분해하고 패턴화해서 추출하며, 프로그래밍 내에서 사용될 모든 개념은 평가 가능하도록 정의해야 한다.

1.2 프로그래밍 언어

문제 해결 능력을 바탕으로 정의된 문제 해결 방안은 사람이 이해할 수 있는 자연어가 아니라 컴퓨터가 이해할 수 있는 언어인 기계어로 명령을 전달해야 한다.

기계어로 직접 명령을 전달하는 것을 대신할 가장 유용한 대안은 사람이 이해할 수 있는 약속된 구문(Syntax)으로 구성된 프로그래밍 언어를 사용하여 프로그램을 작성한 뒤, 그것을 컴퓨터가 이해할 수 있는 기계어로 변환하는 일종의 번역기를 이용하는 것이다.
이를 우리는 컴파일러 혹은 인터프리터라고 한다.

1.3 구문과 의미

프로그래밍 언어는 문법(Syntax)에 맞는 문장을 구성하는 것은 물론 의미(Semantics)를 가지고 있어야 언어의 역할을 충실히 수행할 수 있다.

const number = 'string';
console.log(number*number); //NaN

자바스크립트 변수에는 어떠한 타입의 값도 할당할 수 있다. 따라서 위 예제는 문법적으로 전혀 문제가 없지만 의미적으로는 옳지 않다.
number라는 이름의 변수에는 숫자를 할당하는 것이 의미적으로 옳다.

대부분의 프로그래밍 언어는 변수와 값, 키워드, 연산자, 표현식과 문, 조건문반복문에 의한 흐름제어, 함수 그리고 자료구조인 객체, 배열 등과 같은 문법을 제공한다.

결국 프로그래밍은 요구사항의 집합을 분석해서 적절한 자료구조와 함수의 집합으로 변환한 후, 그 흐름을 제어하는 것이다.

profile
매일 성장하고, 좋은 개발자가 되길 원하는 FE개발자입니다😄

0개의 댓글