인터프리터

인터프리터(Interpreter)는 프로그램의 명령을 실행 시점에 해석하면서 동작을 수행하는 언어 실행기다. 입력으로 소스 코드를 직접 받을 수도 있지만 AST나 사전에 만든 바이트코드를 실행하는 인터프리터도 많다. 따라서 '컴파일된 언어'와 '인터프리트 언어'를 프로그래밍 언어의 영구...

영어 명칭Interpreter
분류프로그래밍 언어·명령 실행기
입력소스 코드, AST 또는 바이트코드
실행 방식명령 해석·계산과 환경 상태 갱신
사용 예Python·Ruby 실행 환경, 셸, VM의 바이트코드 실행기
관련 기술컴파일러, 가상 머신, JIT
구조파서·바인딩·실행 루프·런타임 상태
성능해석 오버헤드, 캐시 및 JIT와 병행 가능
공식 언어 자료Python Execution Model
참조JVM Specification

인터프리터(Interpreter)는 프로그램의 명령을 실행 시점에 해석하면서 동작을 수행하는 언어 실행기다. 입력으로 소스 코드를 직접 받을 수도 있지만 AST나 사전에 만든 바이트코드를 실행하는 인터프리터도 많다. 따라서 '컴파일된 언어'와 '인터프리트 언어'를 프로그래밍 언어의 영구적인 속성으로 나누는 것은 부정확하며 같은 언어에 서로 다른 구현 방식이 존재할 수 있다.

인터프리터는 실행할 명령어를 읽고 변수·함수와 상태를 관리하며 분기·호출·자료 연산을 수행한다. Python 실행기는 소스의 구문 분석과 바이트코드 생성 단계를 거친 뒤 해당 표현을 실행하며, 셸 인터프리터는 명령과 파이프라인·변수 치환을 평가한다. 파일을 실행하기 전에 내부 표현으로 변환하는 단계가 존재해도 사용자가 전체 네이티브 실행 파일을 미리 만들 필요는 없을 수 있다.[1]

반복해서 실행되는 코드를 더 빠르게 실행하기 위해 JIT 컴파일을 인터프리터와 결합할 수 있다. 일부 가상 머신은 먼저 바이트코드를 해석하다가 자주 사용하는 함수를 네이티브 코드로 바꾸며 최적화의 전제가 무효가 되면 다시 해석 경로로 돌아갈 수 있다. 이처럼 해석·AOT·JIT의 조합은 도구별로 달라진다.

인터프리터의 효율은 명령어 디스패치·객체 표현과 메모리 관리에 영향을 받는다. 동적 타입 검사·가비지 컬렉션, 외부 함수 인터페이스와 오류 추적을 제공할 수 있지만 모든 언어가 같은 런타임 비용과 메모리 모델을 사용하는 것은 아니다. 보안상 신뢰할 수 없는 스크립트를 실행할 때에는 파일·네트워크 접근·프로세스 권한과 격리 정책을 별도로 관리해야 한다.

역사

정의와 실행 구조

입력 자료 및 내부 처리

응용 프로그램과 도구 체인

플랫폼·호환성·보안

활용 분야

관련 문서

  1. Python Language Reference: Execution Model ↩