JS는 인터프리터 언어가 맞을까?

지인·2022년 12월 22일
0

JavaScript

목록 보기
3/32
post-thumbnail

TL;DR: JS는 필요한 경우에 컴파일 과정을 거치지만 기본적인 작동 방식이 인터프리터이기 때문에 인터프리터 언어에 더 가깝다.

컴파일 언어와 인터프리터 언어의 차이점

컴파일 언어와 인터프리터 언어의 가장 큰 차이점은 전체 파일을 스캔하여 한꺼번에 번역을 하는지(컴파일), 프로그램 실행시 한 번에 한 문장씩 번역하는지(인터프리터)이다.

그래서 왜 인터프리터 언어인데?

JS가 컴파일 언어인지, 인터프리터 언어인지를 알기 위해선 먼저 JS의 엔진이 어떤 방식으로 동작하는 지를 알아야 한다. JS의 엔진이 작동하는 원리는 다음과 같다.

  1. 엔진이 실행할 JS파일을 받는다.

  2. 파싱, AST(Abstract Syntax Tree)를 구축하는 과정을 거친다.

  3. 인터프리터가 코드를 읽으며 실행한다.

  4. 코드를 수행하는 중, 프로파일러가 최적화 할 수 있는 코드를 컴파일러에게 전달해준다.
    (주로 반복해서 실행되는 코드블록들)

  5. 원래 있던 코드와 최적화된 코드를 바꿔준다.

이렇게 코드를 우선 인터프리터 방식으로 실행하고, 필요한 경우 컴파일 하는 방법을 JIT(Just-In-Time) 컴파일러라고 부른다.

결론적으로, JS는 인터프리팅과 컴파일이 혼합되어 사용되나 기본적인 작동 방식이 인터프리팅이기 때문에 인터프리터 언어에 더 가깝다. 엔진 내부에서 컴파일 과정을 거치는 이런 방식 덕분에 JS의 성능을 크게 올릴 수 있었다.

참고자료
JavaScript, 인터프리터 언어일까?
Javascript는 인터프리터 언어인가?

profile
안녕하세요

0개의 댓글

관련 채용 정보