MDN Web Docs 읽기 - JavaScript 1

황은하·2022년 6월 14일
0

JS

목록 보기
19/19
post-thumbnail

JavaScript

가벼운, 인터프리터 혹은 just-in-time 컴파일 프로그래밍 언어. 일급 함수를 지원한다.
웹 페이지를 위한 스크립트 언어로 잘 알려져 있지만, 비 브라우저 환경에서도 사용하고 있다.
JS는 프로토타입 기반, 다중 패러다임, 단일 스레드, 동적언어로, 객체지향형, 명령형, 선언형(함수형 프로그래밍 등) 스타일을 지원한다.

인터프리터(interpreter)

프로그래밍 언어의 소스 코드를 바로 실행하는 컴퓨터 프로그램 또는 환경.
원시 코드를 기계어로 번역하는 컴파일러와 대비된다. 인터프리터는 다음의 과정 가운데 적어도 한 가지 기능을 가진 프로그램이다.
1. 소스 코드를 직접 실행한다.
2. 소스 코드를 효율적인 다른 중간 코드로 변환하고, 변환한 것을 바로 실행한다.
3. 인터프리터 시스템의 일부인 컴파일러가 만든, 미리 컴파일된 저장 코드의 실행을 호출한다.

just-in-time 컴파일

JIT 컴파일(just-in-time compilation) 또는 동적 번역(dynamic translation)
프로그램을 실제 실행하는 시점에 기계어로 번역하는 컴파일 기법.

전통적인 입장에서 컴퓨터 프로그램을 만드는 두 가지 방법
1. 인터프리트 방식
2. 정적 컴파일 방식
인터프리트 방식 -> 실행 중 프로그래밍 언어를 읽어가면서 해당 기능에 대응하는 기계어 코드를 실행한다.
정적 컴파일 방식 -> 실행하기 전에 프로그램 코드를 기계어로 번역한다.

JIT 컴파일러는 두 가지의 방식을 혼합한 방식.
실행 시점에서 인터프리트 방식으로 기계어 코드를 생성하면서 그 코드를 캐싱하여, 같은 함수가 여러 번 불릴 때 매번 기계어 코드를 생성하는 것을 방지한다.

일급 함수

함수를 다른 변수와 동일하게 다루는 언어는 일급 함수를 가졌다고 표현한다.
예로 일급 함수를 가진 언어에서는 함수를 다른 함수에 인수로 제공하거나, 함수가 함수를 반환할 수 있으며, 변수에도 할당할 수 있다.

프로토타입 기반 프로그래밍

객체지향 프로그래밍과 달리 클래스를 명확히 정의하지 않아도 되며, 속성과 메서드를 다른 클래스의 인스턴스나 빈 객체에 추가하는 작업을 덜 수 있는 프로그래밍 스타일

다중 패러다임 프로그래밍

하나 이상의 프로그래밍 패러다임을 지원하는 프로그래밍 언어.
하나 이상의 프로그래밍 스타일을 따르는 프로그램.

단일 스레드

하나의 프로세스에서 하나의 스레드를 실행한다.

동적언어

컴파일 시 자료형을 정하는 것이 아니라 런타임 시 자료형이 결정된다.
타입 없이 변수만 선언하여 값을 지정할 수 있다.

객체지향형

명령형

선언형(함수형 프로그래밍 등) 스타일

=> JS는 프로그램을 실제 실행하는 시점에 기계어로 번역하며, 함수를 다른 변수와 동일하게 다루는 언어이다.
클래스를 명확히 정의하지 않아도 되며, 여러 프로그래밍 패러다임을 지원하고, 하나의 프로세스에서 하나의 스레드를 실행한다. 또, 컴파일 시가 아닌 런타임 시 자료형이 결정되며 여러 프로그래밍 스타일을 지원한다.

profile
차근차근 하나씩

0개의 댓글