위키득계정 ↗
기술

인터프리터

인터프리터기술
영문명
Interpreter
역할
프로그램 표현의 해석과 실행
처리 대상
소스 코드, 구문 구조, 바이트코드 등
관련 방식
컴파일 및 JIT와 함께 사용 가능
인터프리터는 프로그램의 소스나 중간 표현을 해석하여 실행하는 소프트웨어다. 구현에 따라 먼저 구조를 분석하거나 바이트코드를 만든 뒤 그 결과를 실행할 수 있다.

한 줄씩 읽는다는 설명의 한계

인터프리터를 소스 파일을 한 줄씩 읽는 프로그램으로만 설명하면 실제 구현의 많은 부분을 놓친다. 문장 여러 줄이 하나의 구조를 이루기도 하고, 실행 전에 프로그램 전체를 분석해 중간 표현으로 바꾸기도 한다.

핵심은 프로그램의 표현을 받아 그 의미에 맞는 동작을 수행한다는 점이다. 원래 텍스트를 직접 다루는지, 트리나 바이트코드를 다루는지는 구현의 선택이다.

실행 환경이 제공하는 기능

인터프리터는 값과 변수, 함수 호출, 예외 처리 등 언어의 동작을 구현한다. 파일 접근이나 네트워크 같은 외부 기능은 런타임과 라이브러리를 통해 제공할 수 있다.

같은 프로그램을 다른 장치에서 실행하려면 그 장치에 맞는 인터프리터와 필요한 기능이 있어야 한다. 인터프리터가 존재한다는 사실만으로 운영체제 의존 코드나 외부 라이브러리의 차이가 모두 사라지지는 않는다.

컴파일과 섞이는 경우

일부 환경은 먼저 바이트코드로 번역한 다음 이를 해석한다. 자주 실행하는 부분을 기계어로 바꾸는 JIT 컴파일을 추가하기도 한다. 따라서 한 실행 환경에 해석과 컴파일이 모두 포함될 수 있다.

실행 속도는 언어 이름만으로 결정되지 않는다. 구현체와 최적화, 작업의 종류, 외부 라이브러리의 처리 비중에 따라 달라진다.

대화형 실행

코드를 조금 입력하고 바로 결과를 확인하는 환경은 실험과 디버깅에 유용하다. 다만 대화형으로 실행할 수 있다는 성질과 내부 구현이 순수한 해석 방식이라는 성질은 같지 않다. 사용자에게 보이는 사용 방식과 실행 기술을 구분해야 한다.

관련 문서

컴파일러 / 프로그래밍 언어 / 소프트웨어