모던 자바스크립트(딥다이브) 1~2장

노영완·2023년 8월 1일
0

JavaScript(Deep Dive)

목록 보기
1/23
post-custom-banner

1. 프로그래밍

1-1. 프로그래밍이란

프로그래밍이란 컴퓨터에게 실행을 요구하는 일종의 커뮤니케이션 커뮤니케이션을 잘하기 위해 먼저 무엇을 실행하고 싶은지 정의할 필요가 있다. 다시 말해, 프로그래밍에 앞서 해결해야 할 문제를 명확히 이해한 후 적절한 문제 해결 방안을 정의할 필요가 있다.
즉, 프로그래밍이란 0과 1밖에 알지 못하는 기계가 실행할 수 있을 정도로 정확하고 상세하게 요구사항을 설명하는 작업이며, 그 결과물이 바로 코드

1-2. 프로그래밍 언어

명령을 수행할 주체는 컴퓨터이며, 컴퓨터가 이해할 수 있는 즉, 기계어로 명령을 전달해야 한다. 하지만 사람이 기계어를 이해하는 것은 매우 어려운 일이며, 이 기계어로 직접 명령을 전달하는 것을 대신할 가장 유용한 대안은 사람이 이해할 수 있는 약속된 구문으로 구성된 프로그래밍 언어를 사용해 프로그램을 작성한 후, 그것을 컴퓨터가 이해할 수 있는 기계어로 변환하는 일종의 번역기를 이용하는 것. 이 일종의 번역기 컴파일러 혹은 인터프리터

1-3. 구문과 의미

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

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

2. 자바스크립트란

2-1. 자바스크립트의 탄생

웹 페이지의 보조적인 기능을 수행하기 위해 브라우저에서 동작하는 경량 프로그래밍 언어를 도입하기로 결정 그래서 탄생한 것이 브렌덴 아이크가 개발한 자바스크립트
1996년 3월 웹 브라우저인 넷스케이프 내비게이터에 탑재 모카로 명명 그러다 그해 9월 라이브스크립트로 이름이 바뀌었다가 12월 자바스크립트라는 이름으로 최종 명명

2-2. 자바스크립트의 표준화

크로스 브라우징 이슈 발생 결과적으로 모든 브라우저에서 정상적으로 동작하는 웹페이지를 개발하기가 무척 어려워짐 이에 모든 브라우저에서 정상적으로 동작하는 표준화된 자바스크립트의 필요성이 대두되기 시작함. 이를 위해 1996년 11월, 넷스케이프 커뮤니케이션즈는 컴퓨터 시스템의 표준을 관리하는 비영리 표준화 기구인 ECMA 인터내셔널에 자바스크립트의 표준화를 요청. ECMASCript로 명명
크로스 브라우징

  • ECMASCript 버전별 특징도 같이보기

2-3. 자바스크립트의 성장의 역사

초장기 자바스크립트 웹페이지의 보조적인 기능을 수행하기 위한 한정적인 용도로만 사용 이시기에는 대부분의 로직 주로 웹 서버에서 실행 브라우저는 서버로 부터 전달받은 HTML과 CSS를 단순히 랜더링 하는 수준
2.3.1 Ajax
1999년, 자바스크립트를 이용해 서버와 브라우저가 비동기 방식으로 데이터를 교환할 수 있는 통신기능 Ajax 등장. 이 등장은 웹페이지에서 변경할 필요가 없는 부분은 다시 랜더링하지 않고 서버로부터 필요한 데이터만 받아와 랜더링 방식 가능해짐.
2.3.2 jQuery
2006년, jQuery의 등장으로 다소 번거롭고 논란이 있던 DOM을 더욱 쉽게 제어할 수 있게 되었고 크로스 브라우징 이슈도 어느 정도 해결
2.3.3 V8 자바스크립트 엔진
웹 애플리케이션을 구축하려는 시도가 늘면서 더욱 빠르게 동작하는 자바스크립트 엔진의 필요성이 대두 V8 자바스크립트 엔진 이러한 요구에 부합하는성능 보여줌. 또한 데스크톱 애플리케이션과 유사한 사용자 경험을 제공할 수 있는 웹 애플리케이션 프로그램 언어로 정착
V8 자바스크립트 엔진으로 촉발된 자바스크립트의 발전으로 과거 웹 서버에서 수행된던 로직들이 대거 클라이언트로 이동 이는 웹 애플리케이션 개발에서 프런트엔드 영역이 주목받는 계기로 작용.
2.3.4 Node.js
구글 V8 자바스크립트 엔진으로 빌드된 자바스크립트 런타임 환경 자바스크립트 엔진에서만 동작하던 자바스크립트를 브라우저 이외의 환경에서도 동작할 수 있도록 자바스크립트 엔진을 브라우저에서 독립시킨 자바스크립트 실행 환경 Node.js 비동기 I/O를 지원 단일 스레드 이벤트 루프 기반으로 동작. Node.js 데이터를 실시간으로 처리하기 위해 I/O가 빈번하게 발생하는 SPA에 적합 CPU 사용률이 높은 애플리케이션에는 권장하지 않음. Node.js의 등장 자바스크립트 브라우저를 벗어나 서버 사이드 애플리케이션 개발에서도 사용할 수 있는 범용 프로그래밍 언어
2.3.5 SPA 프레임워크
Angular, React, Vue.js, Svelte 등 다양한 SPA 프레임워크/라이브 등장

2.4 자바스크립트와 ECMAScript

ECMAScript는 자바스크립트의 표준 사양인 ECMA-262를 말하며, 프로그래밍 언어의 값, 타입, 객체와 프로퍼티, 함수, 표준 빌트인 객체등 핵심 문법을 규정. 각 브라우저 제조사는 ECMAScript 사양을 준수해서 브라우저에 내장되는 자바스크립트 엔진을 구현한다.
자바스크립트는 일반적으로 프로그래밍 언어로서 기본 뼈대를 이루는 ECMAScript와 브라우저가 별도 지원하는 클라이언트 사이드 Web API 등을 아우르는 개념

2.5 자바스크립트의 특징

자바스크립트는 HTML, CSS와 함께 웹을 구성하는 요소 중 하나로 웹 브라우저에서 동작하는 유일한 프로그래밍 언어, 개발자가 별도의 컴파일 작업을 수행하지 않는 인터프리터 언어
하지만 대부분의 모던 자바스크립트 엔진(크롬의 V8, 파이어폭스의 SpiderMonkey, 사파리의 JavaScriptCore 등등..)은 인터프리터와 컴파일러의 장점을 결합해 비교적 처리 속도가 느린 인터프리터의 단점을 해결 그래도 자바스크립트는 런타임에 컴파일되며 실행 파일이 생성되지 않고 인터프리터의 도움 없이 실행 할 수 없기 때문에 컴파일러 언어라고 할 없다.
컴파일러 vs 인터프리터(언어)
자바스크립트는 명령형, 함수형, 프로토타입 기반 객체지향 프로그래밍을 지원하는 멀티 패러다임 프로그래밍 언어

2.6 ES6 브라우저 지원 현황

인터넷 익스프롤러를 제외한 대부분의 모던 브라우저는 ES6를 지원 하지만 100% 지원하고 있지는 않다.

post-custom-banner

0개의 댓글