컴파일 : 소스 코드를 실행하기에 앞서 기계어로 번역하는 행위
컴파일러 : 컴파일을 수행하는 소프트웨어
소스 코드 여러 개를 하나로 묶어 컴파일 한 후에 실행하는 프로그래밍 언어.
컴파일 하는데는 시간이 걸리지만 실행되는 속도가 빠름.
ex) C, C++, Java, Objective C
절차적 언어 : 절차를 순서대로 작성해 나감
객체 지향 언어 : 처리와 관련된 데이터와 절차를 하나로 묶어 객체 단위로 관리
함수형언어 : 프로그램을 함수를 조합하여 구현
논리형 언어 : 데이터 사이의 관계와 논리를 설명해 나감
인터프리터 언어 :
최근 웹 브라우저 대부분에 실행 시간에 자바스크립트 코드를 컴파일 하는 JIT 컴파일러(Just In Time Compiler)가 내장되어 실행 속도가 매우 빨라짐.
동적 프로토타입 기반 객체 지향 언어 :
클래스가 아닌 프로토타입을 상속.
객체를 생성한 후에도 프로퍼티와 메서드를 동적으로 추가하거나 삭제할 수 있음.
동적 타입 언어 :
변수 타입이 없음.
프로그램을 실행하는 도중에 변수에 저장되는 데이터 타입이 동적으로 바뀔 수 있음.
함수가 일급 객체 :
자바스크립트 함수는 객체이며, 함수에 함수를 인수로 넘길 수 있다.
이 특성을 활용하면 고차 함수를 구현할 수 있어 함수형 프로그래밍이 가능해짐.
함수가 클로저를 정의 :
자바스크립트의 함수는 클로저를 정의.
클로저로 변수를 은닉하거나 영속성을 보장하는 등 다양한 기능 구현이 가능.
웹 서버에서 동작하는 자바스크립트를 서버 측 자바스크립트라고 함.
웹 서버 구현에는 Perl, PHP, Python, Ruby 등의 프로그래밍 언어가 널리 사용.
최근에는 서버 측 언어로 자바스크립트 또한 많이 사용.
서버 측 자바스크립트 실행 환경