모던 자바스크립트 Deep Dive 시작!

가은·2022년 8월 17일
0

숨참고 딥 다이브

목록 보기
1/31
post-thumbnail

1장 프로그래밍

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

▪️ 대부분 문제(요구사항)는 복잡하며 명확하지 않을 수도 있다. 따라서 문제를 명확히 이해하는 것이 우선되어야 하며 복잡함을 단순하게 분해하고 자료를 정리하고 구분해야하며 순서에 맞게 행위를 배열해야 한다.

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

컴퓨터에게 명령을 전달할 때엔 기계어machine code 로 명령을 전달해야 한다.

프로그래밍 언어를 사용해 프로그램을 작성한 후 그것을 컴퓨터가 이해할 수 있는 기계어로 변환시키는데, 이 과정을 컴파일러compiler 혹은 인터프리터interpreter 라고 한다.

작성된 코드는 해결 방안의 구체적 구현물이다. 이것은 프로그래밍 언어의 문법에 부합하는 것은 물론이고 수행하고자 하는 바를 정확히 해내는, 요구사항 실현이 되어야 의미가 있다.

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


2장 자바스크립트

자바스크립트는 HTML, CSS와 함께 웹을 구성하는 요소 중 하나로 웹 브라우저에서 동작하는 유일한 프로그래밍 언어이다.

자바스크립트는 개발자가 별도의 컴파일 작업을 수행하지 않는 인터프리터 언어interpreter language이다.

✔️ 대부분의 모던 자바스크립트 엔진은 인터프리터와 컴파일러의 장점을 결합해 비교적 처리 속도가 느린 인터프리터의 단점을 해결했다.
✔️ 인터프리터는 소스코드를 즉시 실행하고 컴파일러는 빠르게 동작하는 머신 코드를 생성하고 최적화 한다. 이를 통해 컴파일 단계에서 추가적인 시간이 필요함에도 더욱 빠르게 코드를 실행할 수 있다.

컴파일러 언어인터프리터 언어
코드가 실행되기 전 단계인 컴파일 타임에 소스코드 전체를 한번에 머신 코드로 변환한 후 실행한다.코드가 실행되는 단계인 런타임에 문 단위로 한 줄씩 중간 코드인 바이트코드로 변환한 후 실행한다.
실행 파일을 생성한다.실행 파일을 생성하지 않는다.
컴파일 단계와 실행 단계가 분리되어 있다. 명시적인 컴파일 단계를 거치고, 명시적으로 실행 파일을 실행한다.인터프리트 단계와 실행 단계가 분리되어 있지 않다. 인터프리터는 한 줄씩 바이트코드로 변환하고 즉시 실행한다.
실행에 앞서 컴파일은 단 한번 수행된다.코드가 실행될 때마다 인터프리트 과정이 반복 수행된다.
컴파일과 실행 단계가 분리되어 있으므로 코드 실행 속도가 빠르다.인터프리트 단계와 실행 단계가 분리되어 있지 않고 반복 수행되므로 코드 실행 속도가 비교적 느리다.

⭐ 자바스크립트는 런타임에 컴파일되며 실행 파일이 생성되지 않고 인터프리터의 도움 없이 실행할 수 없기 때문에 컴파일러 언어라고 할 수 없다.

자바스크립트는 명령형imperative, 함수형function, 프로토타입 기반prototype-based 객체지향 프로그래밍을 지원하는 멀티 패러다임 프로그래밍 언어이면서도 클래스 기반 객체지향 언어보다 효율적이면서 강력한 프로토타입 기반의 객체지향 언어이다.


3장 자바스크립트 개발환경과 실행방법

자바스크립트는 브라우저 환경 또는 Node.js 환경에서 실행할 수 있다.
하지만 브라우저는 HTML, CSS, JS을 실행해 웹페이지를 브라우저 화면에 렌더링하는 것이 주된 목적이지만, Node.js는 브라우저 외부에서 자바스크립트 실행 환경을 제공하는 것이 주된 목적이라는 점에서 다르다.

❓ 웹 크롤링web crawling
서버에서 웹사이트의 콘텐츠를 수집하기 위해 웹사이트에서 HTML 문서를 가져온 다음, 이를 가공해서 필요한 데이터만 추출하는 경우를 말한다. 서버 환경은 DOM API를 제공하지 않으므로 DOM 라이브러리를 사용해 HTML 문서를 가공하기도 한다.

▪️ 브라우저는 ECMAScript와 DOM, BOM, Canvas, Web Storage 등 클라이언트 사이드 Web API를 지원하지만, Node.js는 클라이언트 사이드 Web API를 지원하지 않고 ECMAScript와 Node.js 고유의 API를 지원한다.

profile
일이 재밌게 진행 되겠는걸?

0개의 댓글