🏃♀️ 매일매일 읽고 블로그에 정리하기를 목표합니다
6.18 토 p1~p73 (chapter 1 ~ 6)
컴퓨터에게 실행을 요구하는 일종의 커뮤니케이션
컴퓨터는 사람과 사고가 다르다. 0 과 1밖에 모르는 놈이기 때문에 커뮤니케이션을 하려면 정확하고 상세하게 요구를 해야하며 이때 필요한게 Computational Thinking(컴퓨팅 사고)
이다.
컴퓨터처럼 사고 하고 정의된 문제 해결 방안을 컴퓨터에게 전달하려면? 컴퓨터가 이해할 수 있는 기계어로 명령을 전달해야한다.
하지만 한낱 인간이 기계어를 달달 외우고 다니진 못하니.. 이때 사용하는 것이 사람이 이해할 수 있는 약속된 구문(문법)으로 구성된 "프로그래밍 언어"를 사용하여 프로그램을 작성한 후 컴퓨터가 이해할 수 있는 기계어로 변환하는 일종의 번역기를 이용한다.
이 일종의 번역기를 컴파일러(Compiler)
혹은 인터프리터(Interpreter)
라 한다.
프로그래밍은 프로그래밍 언어를 사용해 컴퓨터에게 실행을 요구하는 일종의 커뮤니케이션이다.
프로그래밍 언어는 구문(syntax)
와 의미(semantics)
의 조합으로 표현된다.
자바스크립트는 1995년 약 90%의 시장 점유율로 웹 브라우저 시장을 지배하고 있던 넷스케이프에서 웹페이지의 보조적인 기능을 수행하기 위해 브라우저에서 동작하는 경량 프로그래밍 언어를 도입하기 위해 브랜든 아이크가 개발한(10일 동안...!)언어이다.
마이크로소프트에서도 자바스크립트의 파생 버전인 JScript를 출시해 IE3.0에 탑재했다. 하지만 여기서 JScript와 자바스크립트가 표준화 되지 못하고 적당히 호환되었는데 요것이 문제가 된다. 넷스케이프와 마이크로소프트는 누가누가 이기냐.. 자사 브라우저에서만 동작하는 기능을 추가하기 시작했다.
이로 인해 브라우저에 따라 웹페이지가 정상적으로 동작하지 않는 크로스 브라우징
이슈가 발생하기 시작한다.
모든 브라우저에서 동작하는 표준화가 필요했기때문에 1996년 11월 넷스케이프는 컴퓨터 시스템의 표준을 관리하는 비영리 펴준화 기구인 ECMA 인터내셔널에 자바스크립트 표준화를 요청하게 되어 1997년 ECMAScript가 나오게 된다.
1999년, 자바스크립트를 이용해 서버와 브라우저가 비동기(asynchronous)방식으로 데이터를 교환할 수 있는 통신 기능 Ajax(Asynchronous JavaScript and XML)가 XMLHttpRequest라는 이름으로 등장
이전의 웹페이지는 Html코드를 서버로부터 전송받아 웹페이지 전체를 렌더링하는 방식으로 동작 -> 화면 전환되면 또 HTML 받아서 웹페이지 전체를 다시 렌더링
이런 방식은 불필요한 데이터 통신이 발생하고 성능도 떨어진다
하지만 Ajax의 등장으로 서버로부터 필요한 데이터만 전송받아 변경할 부분만 렌더하는 방식이 가능해지므로 빠른 성능과 부드러운 화면 전환이 가능해졌다
2009년, 구글 V8 자바스크립트 엔진으로 빌드된 자바스크립트 런타임 환경
자바스크립트 엔진에서만 동작하던 자바스크립트를 브라우저 이외의 환경에서도 동작할 수 있게 한 실행환경이며 주로 서버 사이드 개발에 사용되며 이에 필요한 모듈, 파일 시스템, HTTP등 내장 API를 제공한다
비동기I/O
를 지원하며 단일 스레드 이벤트 루프 기반
으로 동작함으로써 요청 처리 성능이 좋다.
-> 데이터를 실시간으로 처리하기 위해 I/O가 빈번하게 발생하는 SPA에 적합하나 CPU 사용률이 높은 애플리케이션에는 권장하지 않는다.
자바스크립트는 HTML, CSS와 웹을 구성하는 요소 중 하나로 웹 브라우저에서 동작하는 유일한 프로그래밍 언어이다.
개발자가 별도의 컴파일 작업을 수행하지 않는 인터프리터 언어
다.
대부분의 모던 자바스크립트의 엔진(크롬의 V8, 파폭의 SpiderMonkey등..)는 인터프리터와 컴파일러의 장점을 결합해 비교적 처리 속도가 느린 인터프리터의 단점을 해결했다.
인터프리터는 소스코드를 즉시 실행하고 컴파일러는 빠르게 동작하는 머신 코드를 생성하고 최적화 한다.
컴파일러 언어
- 코드가 실행하기 전 단계(컴파일 타임)에 소스코드 전체를 한번에 머신 코드로 변환 후 실행
인터프리터 언어
- 코드가 실행되는 단계(런타임)에 한 줄씩 중간 코드인 바이트코드로 변환 후 실행
-> 현재는 컴파일러와 인터프리터의 기술적 구분이 점차 모호해지고 있음 but 자바스크립트는 런타임에 컴파일되고 실행 파일이 생성x, 인터프리터 없이는 실행되지 않기 때문에 컴파일러 언어가 아니다!
자바스크립트는 명령형, 함수형, 프로토타입기반 객체지향 프로그래밍을 지원하는 멀티 패러다임 프로그래밍 언어다
생략~