[모던 자바스크립트] 1. 자바스크립트란
모던 자바스크립트 Deep Dive를 읽고 정리한 글입니다.
프로그래밍이란
요구사항의 집합을 분석해서 적절한 자료구조와 함수의 집합으로 변환한 후, 그 흐름을 제어하는 것
- 컴퓨터의 입장에서 문제를 바라보는 Computational thinking(컴퓨팅 사고) 필요하다.
- 컴퓨팅 사고를 바탕으로 한 문제 해결 방안을 프로그래밍 언어로 표현한다.
- 단순히 프로그래밍 언어의 문법에 부합하는 것이 아니라 수행하고자 하는 바를 정확히 수행 즉, 요구사항이 실현되어야 의미가 있다.
자바스크립트란
자바스크립트
- 1995년 넷스케이프 커뮤니케이션(Netscape communications)에 의해 브라우저에서 동작하는 경량 프로그래밍 언어로 도입됨.
- 파생 버전인 JScript와의 경쟁으로 인해 크로스 브라우징 이슈 발생 시작
- 모든 브라우저에서 정상 동작하는 표준하된 자바스크립트의 필요성으로 ECMAScript로 표준화된 자바스크립트 완성
- 자바스크립트는 ECMAScript + 브라우저 별도 지원하는 Web API (DOM, BOM, Canvas, XMLHttpRequest, fetch, requestAnimationFrame, SVG, Web Storage, Web Component, Web worker 등)을 포함하는 개념
Ajax
서버와 브라우저가 비동기 방식으로 데이터 교환할 수 있는 통신 기능 Ajax(Asynchronous Javascript and XML)가 XMLHttpRequest라는 이름으로 등장
- 서버에서의 불필요한 HTML 코드 전송 없어져 렌더링 (깜빡이는 현상) 필요 없이 변경하는 부분만 렌더링하는 방식 가능
jQuery
DOM(Document Object Model) 조작을 더욱 쉽게 제어할 수 있도록 해줌
V8
- 자바스크립트로 웹 어플리케이션 구축하려는 시도가 늘면서 더 빠르게 동작하는 엔진 필요, 2008년 구글 선보임.
- 웹 서버에서 수행되던 로직들이 대거 클라이언트(브라우저)로 이동
Node.js
- 2009년 Ryan Dahl이 발표한 V8으로 빌드된 자바스크립트 런타임 환경
- 브라우저 한정으로 동작하던 자바스크립트 엔진을 독립시켜 서버 사이드 애플리케이션 개발 등에 사용 가능해짐 (모듈, fs, HTTP api 제공)
- 비동기 I/O 단일 스레드(single thread) 이벤트 루프 기반으로 동작한다
TODO: 추가 설명 적기
SPA 프레임워크
- 웹 어플리케이션 개발 규모, 복잡도 상승에 따라 개발 과정이 복잡해지고 필요에 따라 많은 패턴, 라이브러리 출현
- 유연하고 확장하기 쉬운 어플리케이션 아키텍쳐 구축을 위해 프레임워크 등장
- CBD(Component Based Development) 방법론 기반으로 SPA가 대중화 되면서 Angular, Vue, React, Svelte 등 등장
인터프리터 언어 vs 컴파일러 언어
컴파일러 언어
- 코드 실행 전 기계어로 변환한 후 실행파일 생성한다
- 컴파일 / 실행 단계 분리되어 있다
- 컴파일은 한 번 수행된다
- 컴파일, 실행 단계 분리되어 있으므로 코드 실행 속도 빠르다
인터프리터 언어
- 코드 실행 단계인 런타임에 한 줄씩 바이트코드로 변환한 후 실행파일 없이 실행
- 인터프리트 / 실행 단계 분리 없이 인터프리터가 한 줄씩 바이트코드로 변환 후 즉시 실행
- 코드 실행될 떄마다 인터프리트 과정 반복
- 단계 분리 없이 반복 수행되므로 코드 실행 속도 비교적 느리다
자바스크립트
- 인터프리터 언어이다
- 비교적 느리다는 단점을 인터프리터 언어의 동적 기능 지원을 살리면서 극복 (컴파일러와 인터프리터의 기술적 구분이 점차 모호해지고 있음)
- 명령형, 함수형, 포로토타입 기반의 객체지향 등을 지원하는 멀티 패러다임 프로그래밍 언어이다