0과 1밖에 알지 못하는 기계가 실행할 수 있을 정도로 정확하고 상세하게 요구사항을 설명하는 작업
사람이 사용하는 언어 체계와 다르기 때문에 직접 명령을 전달하는 것은 매우 어려워 컴파일러 혹은 인터프리터를 사용해서 컴퓨터와 대화한다. 이런한 프로그래밍 언어는 구문 과 의미의 조합으로 표현된다.
문법을 잘 안다고 해서 외국어를 잘한다고 말할 수 없듯이, 프로그래밍도 마찬가지로 문법을 정확히 이해한 후에, 문법에 맞는 문장을 구성하는것은 물론 의미를 가지고 있어야 언어의 역할을 충실히 수행할 수 있다.
const number = 'string';
console.log(number * number); // NaN
1995년, 넷스케이프 커뮤니케이션즈에서 웹페이지의 보조적인 기능을 수행하기 위해 브라우저에서 동작하는 경량 프로그래밍 언어를 도입함 이것이 브랜던 아이크가 만든 자바스크립트이다. 그러나 자바스크립트의 파생 버전인 JScript가 출시되어 위기를 맞는다.
이름 변경
모카 → 라이브스크립트 → 자바스크립트
마이크로 소트트는 자바스크립트의 파생 버전 JScript를 인터넷 익스플로러에 탑재 → 시장 점유율을 높이기 위해 자사 브라우저에서만 동작하는 기능 추가 → 크라스 브라우징 이슈 발생
이로 인해, 표준화된 자바스크립트의 필요성이 대두되고 ECMA 인터내셔널에서 표준화된 ECMAScript가 탄생됨
2009년에 ECMAScript5가 HTML5와 함께 표준 사양이 출현하고 이후로는 작은 버전업만 한다.
초창기 자바스크립트는 웹의 보조적인 기능을 수행하기 위해 한정적인 용도로 사용하였습니다.
Ajax
자바스크립트를 이용해 서버와 브라우저가 비동기 방식으로 데이터를 교환할 수 있는 통신 기능이다.
jQuery
jQuery의 등장으로 DOM을 더욱 쉽게 제어하고, 크로스 브라우징 이슈도 많이 완화 됬다. 배우기 쉽고 직관적인다.
V8 자바스크립트 엔진
V8 자바스크립트 엔진 등장으로 웹 어플리케이션 구축이 더욱 빠르게 작동하게 된다.
웹 서버 수행 → 클라이언트로 이동하게 됨
SPA 프레임워크
복잡해진 개발 과정을 수행하기 어려워져 이에 따라 많은 패턴과 라이브러리가 출현 했지만 부족함 → 프레임워크 등장
웹 브라우저에서 동작하는 유일한 프로그래밍 언어
인터프리터 언어이며 대부분의 모던 자바스크립트 엔진은 인터프리터와 컴파일러의 장점을 결합해 비교적 처리 속도가 느린 인터프리터의 단점을 해결함.
또한 명령형, 함수형, 프로토타입 기반 객체지향 프로그래밍을 지원하는 멀티 패러다임 프로그래밍 언어 이면서 다른 객체지향 언어와의 차이점이 있긴 하지만 클래스 기반 객체지향 언어보다 효율적이면서 강력한 프로토타입 기반의 객체지향 언어다.
브라우저에서 아직 지원하지 않는 최신 기능을 사용하거나 인터넷 익스플로러나 구형 브라우저를 고려해야 하는 상황이면 바벨(Babel)과 같은 트랜스파일러를 사용한다.
브라우저와 Node.js 용도가 다르기 때문에 이에따라 지원하는 API들이 다르다.
프로젝트 규모가 커짐에 따라 프레임워크 또는 라이브러리 도입, Babel, Webpack, ESLint등 여러가지 도구를 사용하기 위해 Node.js와 npm이 필요함.
Node.js는 자바스크립트를 브라우저 이외의 환경에서 동작시킬 수 있는 자바스크립트 실행환경
npm은 자바스크립트 패키지 매니저로, Node.js 사용할 수 있는 모듈들을 패키지화 해서 모아둔 저장소 역활, 패키지 설치 및 관리를 위한 CLI를 제공한다.