mir.pe (일반/어두운 화면)
최근 수정 시각 : 2024-11-23 12:02:15

인터프리터

Interpreter

1. 일반적인 의미2. 해석 프로그램3. 영화
3.1. 소개3.2. 시놉시스3.3. 내용 및 결말3.4. 여담

1. 일반적인 의미

인터프리터는 일반적으로 아래와 같은 것을 의미한다.

2. 해석 프로그램


[[컴퓨터공학|컴퓨터 과학 & 공학
Computer Science & Engineering
]]
[ 펼치기 · 접기 ]
||<tablebgcolor=#fff,#1c1d1f><tablecolor=#373a3c,#ddd><colbgcolor=#0066DC><colcolor=white> 기반 학문 || 수학( 해석학 · 이산수학 · 수리논리학 · 선형대수학 · 미적분학 · 미분방정식 · 대수학( 환론 · 범주론) · 정수론) · 이론 컴퓨터 과학 · 암호학 · 전자공학 · 언어학( 형태론 · 통사론 · 의미론 · 화용론 · 음운론) · 인지과학 ||
하드웨어 구성 SoC · CPU · GPU( 그래픽 카드 · GPGPU) · ROM · RAM · SSD · HDD · 참조: 틀:컴퓨터 부품
기술 기계어 · 어셈블리어 · C/ C++ · C# · Java · Python · BIOS · 절차적 프로그래밍 · 객체 지향 프로그래밍 · 해킹 · ROT13 · 일회용 비밀번호 · 사물인터넷 · 와이파이 · GPS · 임베디드 · 인공신경망 · OpenGL · EXIF · 마이크로아키텍처 · ACPI · UEFI · NERF · gRPC · 리버스 엔지니어링 · HCI · UI · UX · 대역폭 · DBMS · NoSQL · 해시( SHA · 브루트 포스 · 레인보우 테이블 · salt · 암호화폐) · RSA 암호화 · 하드웨어 가속
연구

기타
논리 회로( 보수기 · 가산기 · 논리 연산 · 불 대수 · 플립플롭) · 정보이론 · 임베디드 시스템 · 운영 체제 · 데이터베이스 · 프로그래밍 언어{ 컴파일러( 어셈블러 · JIT) · 인터프리터 · 유형 이론 · 파싱 · 링커 · 난해한 프로그래밍 언어} · 메타데이터 · 기계학습 · 빅데이터 · 폰노이만 구조 · 양자컴퓨터 · 행위자 모델 · 인코딩( 유니코드 · MBCS) · 네트워크 · 컴퓨터 보안 · OCR · 슈퍼컴퓨터 · 튜링 머신 · FPGA · 딥러닝 · 컴퓨터 구조론 · 컴퓨터 비전 · 컴퓨터 그래픽스 · 인공지능 · 시간 복잡도( 최적화) · 소프트웨어 개발 방법론 · 디자인 패턴 · 정보처리이론 · 재귀 이론 · 자연어 처리( 기계 번역 · 음성인식) · 버전 ( 버전 관리 시스템 · Git · GitHub)
컴퓨터 언어 인터프리터는 또 하나의 프로그램일 뿐이다.
The interpreter for a computer language is just another program.
Essentials of Programming Languages
인터프리터는 코드를 한 줄씩 읽어 내려가며 실행하는 프로그램을 말한다. 코드 전체를 읽어서 기계어로 번역하는 컴파일러와는 대조적이다.

인터프리터는 실행 시마다 소스 코드를 한 줄씩 기계어로 번역하는 방식이기 때문에 실행 속도는 컴파일 언어보다 느리다. 이를 해결하기 위하여 바이트코드 컴파일러를 이용해 소스 코드를 가상머신 타겟의 바이트코드로 변환하거나,[1] 반복적으로 쓰이는 함수와 클래스 등의 기계어 코드를 캐싱하는 JIT 컴파일러를 인터프리터에 내장하는 방식[2]이 도입되었다.

디버그를 하는 방식이 컴파일러와 다른 편이다. 코드를 한줄씩 실행시킬 수도 있기에 어떤 코드를 작성하고 바로 실행해보고 문제가 있으면 바로바로 수정하는 방식이 가능하다. 구문 오류의 경우 예전 인터프리터의 경우에는 정말로 한 줄 씩 읽어서 실행했기에 구문 오류가 나오는 부분 전까지는 멀쩡하게 실행되는 경우가 많았다. 그러다보니 실행되지 않는 부분에는 오류가 있어도 오류로 처리되지 않는 경우도 존재하였다. 하지만 최근에는 성능 등의 이유로 파일을 실행하면 파일 전체를 컴파일하는 방식을 사용하기 때문에 처음부터 구문 오류를 전부 잡아주는 인터프리터도 많아지고 있다.

인터프리터를 쓰는 대표적인 언어는 MATLAB Python이다.

고급 프로그래밍 언어 중 대부분이 인터프리터 언어다. 줄잡아 70% 이상이 인터프리터 언어라 경쟁도 치열하다. 인터프리터는 자체적으로 실행 기능이 없기 때문에, 목적 프로그램(.exe)을 만드는 곳만 컴파일 언어를 사용하고 대부분 코드를 인터프리터 언어로 짜는 식으로 결합하는 경우가 많다. 컴파일 언어는 C언어 계열 정도이지만 인터프리터 언어는 인터넷 웹브라우저에서 동작하는 JavaScript, DataBase 언어인 SQL, 그리고 Python, Ruby, 스크래치 등 다양한 종류가 있다.

인터프리터 언어가 많아지는 이유는 프로그래밍 언어의 설계가 쉽기 때문이다. 컴파일 언어는 컴파일러도 컴파일 언어로 만들어야 하기 때문에 세밀한 설계가 필요하다. 반면, 인터프리터 언어들은 인터프리터를 굳이 인터프리터 언어로 구현할 필요없이 다른 컴파일 언어로 구현해도 된다. 이 덕분에 프로그래밍 언어를 설계할 때 언어 설계자가 자신이 원하는 부분을 구현하는 데에 도움을 준다. 그래서 언어 설계 기간이 엄청나게 단축된다.

실행 속도가 느리긴 해도 인터프리터 언어는 프로그램 수정이 간단하다는 장점이 있다. 컴파일러는 소스 코드를 번역해서 실행 파일을 만들기 때문에 프로그램에 수정 사항이 발생하면 소스 코드를 다시 컴파일해야 한다. 프로그램이 작고 간단하면 문제가 없지만 프로그램 덩치가 커지면 컴파일이 시간 단위가 되는 일이 많아진다. 하지만 인터프리터는 소스 코드를 수정해서 바로 실행시키면 된다. 이 장점 때문에 인터프리터 언어는 수정이 빈번히 발생하는 용도의 프로그래밍에서 많이 사용된다. 이 장점을 최대한 살려서 인터프리터를 적극적으로 채용한 것이 스크립트 언어다.

또한 프로그래밍 언어 차원에서 동적인 기능을 지원하기 유리하다. 물론 컴파일러도 어느 정도의 동적인 기능은 지원 가능하지만, 실행 시간에만 어떤 모듈을 사용할지 결정하는 것이나 사용자가 입력한 임의의 프로그램을 평가하는 것이라던가 심지어 이미 실행되고 있는 코드 자체를 수정하며 실행하는 등의 기능을 컴파일러로는 구현할 수가 없다. 만약 컴파일된 프로그램인데 이러한 기능을 전부 사용할 수 있다면 인터프리터가 해당 프로그램에 내장되어 있을 것이다.

소스 코드가 쉽게 공개된다는 단점이 있다. 사실 컴파일 언어의 경우도 컴파일러의 출력물인 기계어를 읽으면 리버스 엔지니어링이 가능하며, 디컴파일러를 이용하여 원본 언어로 변환하는 것도 불가능은 아니다. 하지만 인터프리터를 주로 사용하는 언어의 경우 바이트코드 등으로 컴파일해서 배포하는 경우도 잘 없을 뿐더러, 지원한다고 해도 컴파일 전/후 언어가 비교적 단순한 편이라서 쉽게 디컴파일이 가능하다. 암호화를 해도 어차피 실행될 때는 복호화된다. 그나마 식별자들을 전부 이상하게 바꾸고 해석하기 힘들게 난독화하는 정도 외에 할 수 있는 방법이 없다.

추가로 문자를 읽는 특성상 문자를 입력하는 함수에서 취약점이 발견될 가능성이 높다. 대표적인 예시가 SQL injection이다. 반면 컴파일 언어는 바이너리이기 때문에 이런 문제가 일어날 일이 없다.

그런데 이런 소스 코드의 쉬운 유출 가능성이 오히려 인터프리터 계열 언어들의 강점이 되기도 한다. 온갖 불법 복제 해킹의 표적이 되기 쉽다보니 전 세계적인 연구개발 성과 공유가 의도치 않게 가능하다. 그래서 피드백이 빠르다. Python, 자바스크립트, PHP 등 인터프리터 계열 언어들에 이른바 Nerd들이 많이 몰린 것이 그 증거. 관련 카피레프트 분야 커뮤니티도 활성화되어 있다.

3. 영화

#
장르 드라마, 스릴러
제작사 제작사
상영 시간 128분
개봉일 2005년
감독 시드니 폴락
출연 니콜 키드먼, 숀 펜
국내 관객수 22만
국내 등급 12세 이상 관람가


3.1. 소개

UN의 통역사가 우연히 정치적 음모에 휘말리면서 벌어지는 정치 스릴러 영화이다.

3.2. 시놉시스

아프리카 마토보 태생인 UN 통역사 실비아 브룸( 니콜 키드먼)이 그녀 외에 극소수만이 알고 있는 언어로 아프리카 정치 지도자의 목숨을 위협하는 것을 엿들었다고 강력히 주장하면서 사건은 시작된다.

눈 깜짝할 사이에 그녀는 살인자들의 살해 대상이 되어 목숨이 위태로워진다. 연방요원 토빈 켈러( 숀 펜)의 보호를 받게 되면서 그녀의 상황은 더욱 더 끔찍해진다. 그녀의 미심쩍은 과거와 함께 그녀가 비밀스럽게 국제적으로 연결되어 있다는 사실을 파헤치게 되면서 토빈은 그녀가 음모 속으로 직접 뛰어들지 않았나 하고 더욱 의심하게 되고, 매 순간마다 그는 그녀를 더욱더 의심스럽게 만드는 증거들을 찾아내게 된다.

실비아는 희생자일까? 용의자일까? 아니면 전혀 다른 무언가가 있는 것일까? 그리고 개인적인 마음의 상처를 가진 토빈이 과연 그녀를 안전하게 지킬 수 있을 것인가?

실비아와 토빈은 서로 의지 하여야 하는 상황에서 너무 늦기 전에 엄청난 국제 위기를 막기 위해 끝까지 진실을 밝혀내야 하는데...

3.3. 내용 및 결말

이 문서에 스포일러가 포함되어 있습니다.

이 문서가 설명하는 작품이나 인물 등에 대한 줄거리, 결말, 반전 요소 등을 직·간접적으로 포함하고 있습니다.



아프리카의 마토보라는 국가에서는 잔혹한 인종학살이 벌어지고 유엔 회원국들이 마토보의 대통령 주와니를 국제사법재판소에 회부해야 한다고 목청을 드높이고 있는 와중, 주와니는 국제사회를 상대로 설득을 벌이겠다며 유엔 방문 계획을 발표한다. 바로 이때 유엔 통역사인 실비아 브룸( 니콜 키드먼)은 유엔 회의장에서 은밀한 목소리를 듣게 된다. 마토보의 소수 언어인 '쿠' 언어로 속삭인 그 소리는 주와니를 유엔에서 암살하겠다는 거였다. 마토보 사태에 개입할 의사가 별로 없다는 이유로 국제적 비난을 받고 있는 미국으로서는 주와니가 자국에서 암살당하게 되면 곤란한 입장에 처하게 될 터. 정부는 외국 요인 경호를 전담하는 연방요원 토빈 켈러( 숀 펜)를 팀장으로 내세워 주와니 경호 프로젝트를 실행에 옮긴다. 수사와 비밀작전을 벌이던 토빈은 실비아가 마토보의 국적을 갖고 있으며 주와니가 묻어놓은 지뢰에 가족을 잃었다는 사실을 알게 된다.

누가, 왜, 어떻게 주와니를 암살하려 하는가를 밝혀야 하는 토빈에게 의심해야 할 상대는 너무나 많다. 수상쩍은 과거를 지닌 실비아를 비롯해 미국 내 마토보 대사관, 미국에 망명 중인 반정부세력, 그리고 실비아 주변을 맴돌고 있는 음험한 분위기의 남자 등등.

급기야 뉴욕 시내에서 폭탄 테러가 발생하고, 유엔 총회에 출석한 주와니 대통령에 대한 저격 미수 사건이 벌어진다. 하지만 그 사건의 본질은 바로 주와니의 자작극. 자신이 테러의 피해자이자 테러에 저항하기 위해 학살을 하였을 뿐이라는 이미지를 얻어 자신에 대한 비난 여론을 무마하도록 벌인 일이었다. 한편 가족의 복수를 위해 주와니에게 다가간 실비아는 그에게 총을 겨누며, 그가 집필한 책의 dedication(전념, 헌신)부분을 가리키며 읽을 것을 강요한다. 본래 주와니는 마토보의 민주화를 위해 싸우던 운동가였으나 대통령에 오른 뒤에는 그 역시 대량 학살을 자행하는 독재자가 된 것. 주와니가 살해당하기 직전 토빈이 달려와 진정시키고 복수를 미루도록 설득한다. 결국 주와니는 진짜 위험인물로 분류되어 국제사법재판소에 회부되고, 실비아는 진짜 이제야 위험인물로 벗어났음에도 불구하고 마토보로 추방당한다.
(출처: 씨네21)

3.4. 여담

이 영화는 뉴욕 UN 본부 건물에서 최초로 촬영한 영화이다. 이전에도 UN을 배경으로 한 영화는 있었으나 모두 따로 제작한 세트에서 촬영했었다. 제작진들은 당시 코피 아난 UN 사무총장에게 촬영 허가를 요청하였고 안전보장이사회 15개 이사국들의 동의를 얻어 촬영을 허가받을 수 있었다. 또한 UN 총회의장 및 안전보장이사회 회의장 장면에 등장하는 엑스트라들은 모두 실제 UN 직원들로 사전에 동의를 얻어 촬영하였다고 한다.

영화가 개봉했을 당시 정치적 음모론이 등장하기도 했다. 영화에 등장하는 주와니 대통령의 모델이 로버트 무가베이며 이는 짐바브웨에 대한 여론 공격과 같다는 것. # 주장 자체는 음모론에 불과하지만 제작진들이 처음부터 주와니의 모델로 무가베를 골랐다고 생각할 정도로 매우 흡사하다. 무가베 또한 처음엔 짐바브웨의 독립을 위해 힘쓴 위인이었지만 집권한 뒤에는 철저히 타락한 독재자가 되었기 때문이다.

시드니 폴락의 유작이기도 하다.


[1] 바이트코드로 변환하는 것은 기계어로 변환하는 것에 비하면 비교적 간단하다. [2] Visual Basic for Application의 경우도 P-code라는 형태로 중간언어로 컴파일을 한다.