상세 컨텐츠

본문 제목

기계어로 번역 방식 / 컴파일(compile), 인터프리터(interpreter)

FrontEnd/JavaScript

by H_Develop 2022. 6. 28. 12:30

본문

컴파일 (Compile)

 

프로그래밍 언어를 Runtime 이전에 기계어로 해석하는 작업 방식.

 (원래 소스를 원시코드, 바뀐 코드를 목적코드(Object Code)라고 한다.)

 

 - 런타임 이전에 Assembly 언어로 변환하기에 구동 시간이 오래 걸리지만,  구동된 후 하나의 패키지로 매우 빠르게 작동.

    구동 시, 시스템으로부터 코드와 메모리를 할당 받으며 사용.

 - 런타임 이전에 해석을 마치고 컴파일 결과물이 기계어로 전환되기에 OS 및 빌드 환경에 종속적.

    그러므로, OS 환경에 맞게 호환되는 라이브러리와 빌드 환경을 구분해서 구축.

 - Compile 언어로, C / C++ 같은 언어와 Java도 Byte Code로 바꾸기 위한 과정에서 컴파일을 수행. 

 

인터프리터 (Interpreter)

 

프로그래밍 언어를 Runtime 이후에 Row 단위로 해석(Interpret)하여 프로그램을 구동시키는 방식

 

 - 프로그래밍 언어를 기계어로 바꾸지 않고 중단 단계를 거친 뒤, 런타임에 즉시 해석하기에

 바로 컴팩트한 패키지 형태로 Binary 파일을 뽑아 낼 수 있는 Compile 방식에 비해 낮은 퍼포먼스를 보임.

 - 런타임에 직접 코드를 구동시키는 특징이기에 실행시간은 느리며, 런타임에 실시간 Debugging 및 코드 수정이 가능.

 - 메모리를 필요할 때 마다 할당하여 사용. 이와 관련되어 코드의 흐름 자체도 실제 필요할 때, 실제 수행되어야 하는 시점에 수행되기에 덕타이핑(Duck Typing)이 가능한 측면이 있으나, 반대로 정적 분석이 되지않는 Trade off를 갖고 있음.

 - Interpreter 언어로, JavaScript 와 같은 스크립팅 언어들과 컴파일 이후 동작에서 Interpret을 수행하는 언어들도 존재

 - 해당 방식으로 OS 및 플랫폼에 종속되지않은 프로그램 구동이 가능.

    (이러한 특징을 지닌 Interpreter는 Java의 JVM 과 Python 의 Analzer가 있음.)

'FrontEnd > JavaScript' 카테고리의 다른 글

형변환 및 예제  (0) 2022.06.30
연산자 (Arithmetic, Assignment, String, Comparison, Logical)  (0) 2022.06.28
변수 Variable / 출력  (0) 2022.06.28
주석문, alert()  (0) 2022.06.28
JavaScript 개념 / 불켜기 불끄기  (0) 2022.06.28

관련글 더보기