1.1 프로그래밍이란?
사람(자연어 사용) ————-> 컴퓨터(기계어 사용: 0과 1)
: 컴퓨터에게 정확하고 상세하게 ‘요구사항’을 설명(코드를 통해)하고, 실행을 요구하는 일종의 사람과 컴퓨터간의 커뮤니케이션
실행을 요구하기 위해서는, 먼저 ‘무엇’을 실행시키고 싶은지 알아야 한다.
1. 해결해야 할 문제(요구사항)을 명확히 이해
- 대부분의 요구사항 : 복잡하고 불명확하다.
1> 문제를 명확하게 이해
2> 복잡함을 단순하게 분해 & 자료 정리 및 구분
3> 순서에 맞게 행위 배열
2. 적절한 문제 해결 방안 정의
- 이 때 필요한 것 : 컴퓨팅 사고.
1.2 프로그래밍 언어
문제 해결 능력을 바탕으로 정의된 문제해결방안 : '컴퓨터'에게 전달되어야 한다.
명령을 수행할 주체 : ‘컴퓨터’
즉, 사람이 이해할 수 있는 '자연어'가 아니라 컴퓨터가 이해할 수 있는 언어, 즉 ‘기계어(machine code)’로 명령을 전달해야 한다.
하지만, 사람이 기계어로 컴퓨터에게 직접 명령을 전달하는 것은 매우 어려운 일.
** 기계어 : 컴퓨터가 직접 읽을 수 있는 2진 숫자(binary digit, 0과 1)로 이루어진 언어. 비트(이진수의 하나의 자리수. ex: 01이면 0) 단위로 기술되어있다.
ex: x86 아키텍처의 리눅스환경에서 'Hello World'를 출력하는 기계어 코드.
00 00 00 00 00 00 00 00 01 35 40
—> 사람이 이해할 수 있는 약속된 구문(syntax)으로 구성된 ‘프로그래밍 언어’를 사용해 프로그램을 작성한 후, 그것을 컴퓨터가 이해할 수 있는 기계어로 변환하는 일종의 번역기(컴파일러compiler or 인터브리터interpreter)를 이용한다.
사람 > (프로그래밍 언어 사용) > 컴파일러 (번역) > (기계어로 전달) > 컴퓨터
즉, 프로그래밍언어 : 컴퓨터와의 대화(명령)에 사용되는 일종의 표현수단. 사람과 컴퓨터(컴파일러 또는 인터프리터) 모두가 이해할 수 있는 약속된 형태의 인공어.
1.3 구문과 의미
문법(syntax)에 맞는 문장을 구성하는 것은 물론, '의미(semantics)'를 가지고 있어야 언어의 역할을 충실히 수행할 수 있다.
Colorless green ideas sleep furiously.
위 문장은 문법적으로 전혀 문제가 없지만, 의미는 없다.
const number = 'string';
console.log(number * number); //NaN
자바스크립트 변수에는 어떠한 타입의 값도 할당할 수 있다. 따라서 위 예제는 '문법'적으로 전혀 문제가 없다. 하지만 '의미'적으로 옳지 않다.
number라는 변수에 문자열이 할당되어있다.
의미적으로 : number라는 이름의 변수에는 숫자를 할당하는게 옳다.
'JavaScript > 모던 자바스크립트 Deep Dive' 카테고리의 다른 글
실행 컨텍스트 (1) | 2023.12.08 |
---|---|
실행 컨텍스트 스택 (1) | 2023.12.08 |
10장 - 2. 객체 리터럴 (프로퍼티 / 메서드) (0) | 2022.02.02 |
10장 - 1. 객체 리터럴 (객체 / 객체 리터럴) (0) | 2022.02.01 |