자바스크립트
자바스크립트
자바스크립트는 웹 브라우저에서 사용하기 위해 만들어진 프로그래밍 언어는데 Node.js와 같은 런타임을 통해서 서버 프로그래밍에도 사용되고 있다.
특징
-
동적언어이다.
-
인터프리터언어이다.
-
객체 지향형 프로그래밍과 함수형 프로그래밍 모두 표현 가능하다.
정적언어와 동적언어
두 언어를 구분하는 기준은 코드의 상수, 변수, 함수 등의 타입이 확정되는 시점에 따라 구분된다.
-
정적언어
int num = 1; string name = "bak";
컴파일 타임에 타입을 확인한다. 따라서 미리 타입을 확안하기 때문에 타입으로 인한 런타임 오류를 방지할 수 있으며 명시적으로 지정했기 때문에 코드의 가독성이 좋다. 하지만 그 만큼 매번 변수를 지정해야하는 번거로움이 있다.
C, C++, java 등 -
동적언어
var num = 1; num = true; num = "hello";
런타임에서 타입이 결정된다. 매번 타입을 써줄 필요가 없기 때문에 빠르게 코드를 작성할 수 있으며 상대적으로 언어를 사용할 때 타입과 관련한 코드와 규칙이 적기 때문에 코드가 짧고 배우기가 쉽다. 하지만 실행 중 타입에러가 발생할 수 있다.
JS, Ruby, Python 등
컴파일러와 인터프리터
두 가지 모두 사람이 이해할 수 있는 언어(고급언어)를 기계가 이해할 수 있는 언어(기계어)로 번역해서 실행할 수 있게하는 것이다.
-
컴파일러
작성된 고급 언어를 한 번에 기계어로 번역을 하기 때문에 번역시간(컴파일)은 상대적으로 오래 걸리지만 한 번 번역을 하면 실행 파일이 생성되기 때문에 실행 시간이 빠른 편이다. -
인터프리터
한 줄씩 번역을 진행하기 때문에 번역 시간은 빠르지만 매번 실행시 같은 번역을 진행해서 상대적으로 실행 속도는 느린 편이다. 하지만 플랫폼에 종속되지 않는 다는 큰 장점이 있다.
멀티 패러다임 언어
자바스크립트는 사용자가 원하는대로 함수형 프로그래밍을 할 수 도 있고 객체지향 프로그래밍도 가능하다.
-
함수형 프로그래밍
입출력이 순수하다. 즉 하나 이상의 인자를 받고 반드시 받은 인자를 처리하여 결과물로 돌려주어야한다. 그리고 인자를 제외한 다른 변수는 사용하지 않는 것을 말하며 이를 순수 함수라고 한다. 자바스크립트는 this 개념 때문에 순수함수를 사용하기는 힘들다. -
객체지향 프로그래밍
자바스크립트는 진정한 클래스는 아니지만 객체를 생성하는 생성자 함수를 제공하기 때문에 객체지향 프로그래밍도 가능하게 된다.