인터프리터 (r20200302판)

문서 조회수 확인중...

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


1. 일반적인 의미


1. 통역사
2. 연주자

2. 해석 프로그램


코드를 한 줄씩 읽어 내려가며 실행하는 프로그램. 컴파일러와는 대조적이며, 이 방식을 쓰는 프로그래밍 언어는 정말 많다. 대표적인 것이 Python이다.
고급 프로그래밍 언어 중에 대부분이 인터프리터 언어다. 줄잡아 70%이상이 인터프리터 언어라 경쟁도 치열하다. 인터프리터는 자체적으로 실행기능이 없기 때문에, 목적 프로그램(.exe)을 만드는 곳만 컴파일러 언어를 사용하고 대부분 코드를 인터프리터 언어로 짜는 식으로 결합하는 경우가 많다. 컴파일러 언어는 C언어 계열 언어 정도이지만 인터프리터 언어는 인터넷 웹브라우저에서 동작하는 CSS, 자바스크립트, HTML, 데이터베이스 언어인 SQL, 그리고 자체 프로그래밍 언어 중 Python, Java, Ruby, 스크래치 등등 넘쳐난다.
인터프리터 언어가 많아지는 이유는 프로그래밍 언어의 설계가 쉽기 때문이다. 프로그래밍 언어도 “또다른 프로그램”이라는 점을 생각하자. 컴파일러 언어는 컴파일러도 컴파일러로 만들어야 하기때문에 세밀한 설계가 필요하다. 반면, 인터프리터 언어들은 실행부분을 컴파일 언어로 실행한다는 전제조건이 붙는다. 이 덕분에 프로그래밍 언어 설계할 때 언어 설계자가 자신이 원하는 부분을 구현하는 데에 도움을 준다. 그래서 언어 설계 기간이 엄청나게 단축된다.
인터프리터는 실행 시마다 소스 코드를 한 줄씩 기계어로 번역하는 방식이기 때문에 실행 속도는 정적 컴파일 언어(이하 '컴파일 언어')보다 느리다. 이를 해결하기 위하여 바이트코드 컴파일러를 이용해 소스 코드를 가상머신 타겟의 바이트코드로 변환하거나[1], 반복적으로 쓰이는 함수와 클래스 등의 기계어 코드를 캐싱하는 JIT 컴파일러를 인터프리터에 내장하는 방식[2]이 도입되었다.
여기까지 읽었다면 그 느린 것을 왜 쓰느냐는 의문에 도달하겠지만, 인터프리터 언어는 프로그램 수정이 간단하다는 장점이 있다. 컴파일러는 소스 코드를 번역해서 실행 파일을 만들기 때문에 프로그램에 수정 사항이 발생하면 소스 코드를 다시 컴파일해야 한다. 프로그램이 작고 간단하면 문제가 없지만 프로그램 덩치가 커지면 컴파일이 시간 단위가 되는 일이 많아진다. 하지만 인터프리터는 소스 코드를 수정해서 실행시키면 끝. 이 장점 때문에 인터프리터 언어는 수정이 빈번히 발생하는 용도의 프로그래밍에서 많이 사용된다. 이 장점을 최대한 살려서 인터프리터를 적극적으로 채용한 것이 스크립트 언어다.
또한 프로그래밍 언어 차원에서 동적인 기능을 지원하기 유리하다. 물론 컴파일러도 어느 정도의 동적인 기능은 지원 가능하지만, 실행 시간에만 어떤 모듈을 사용할지 결정하는 것이나 사용자가 입력한 임의의 프로그램을 평가하는 것이라던가 심지어 이미 실행되고 있는 코드 자체를 수정하며 실행하는 등의 기능을 컴파일러로는 구현할 수가 없다. (만약 컴파일된 프로그램인데 이러한 기능을 전부 사용할 수 있다면 인터프리터가 해당 프로그램에 내장되어 있을 것이다.)
디버그를 하는 방식이 컴파일러로 컴파일하여 실행하는 경우와 다른 편이다. 컴파일러와 달리 인터프리터의 경우 코드를 한줄씩 실행시킬 수도 있기에 어떤 코드를 작성하고 바로 실행해보고 문제가 있으면 바로바로 수정하는 방식이 가능하다. 구문 오류의 경우 예전 인터프리터의 경우에는 정말로 한줄씩 읽어서 실행했기에 구문 오류가 나오는 부분 전까지는 멀쩡하게 실행되는 경우가 많았다. 그러다보니 실행되지 않는 부분에는 오류가 있어도 오류로 처리되지 않는 경우도 존재하였다. 하지만 최근에는 성능 등의 이유로 파일을 실행하면 파일 전체를 컴파일 하는 방식을 사용하기 때문에 처음부터 구문 오류를 전부 잡아주는 인터프리터도 많아지고 있다.
소스 코드가 쉽게 공개된다는 단점이 있다. 컴파일되는 언어도 기계어를 읽으면 프로그램이 어떻게 동작하는지 알 수 있으며, 디컴파일러를 이용하여 원본 언어로 변환하는 것도 불가능은 아니다. 하지만 인터프리터를 주로 사용하는 언어의 경우 바이트코드 등으로 컴파일해서 배포하는 경우도 잘 없을 뿐더러, 지원한다고 해도 컴파일 전/후 언어가 비교적 단순한 편이라서 쉽게 디컴파일이 가능하다. 암호화를 해도 어차피 실행될 때는 복호화되니 무용지물. 그나마 식별자들을 전부 이상하게 바꾸고 해석하기 힘들게 난독화하는 정도 외에 할 수 있는 방법이 없다.
추가로 문자를 읽는 특성상 문자를 입력하는 함수에서 취약점이 발견될 가능성이 높다. 대표적인 예시가 SQL injection이다. 반면 컴파일 언어는 바이너리이기 때문에 이런 문제가 일어날 일이 없다.
그런데 이런 소스코드의 쉬운 유출 가능성이 오히려 인터프리터 계열 언어들의 강점이 되기도 한다. 온갖 불법 복제해킹의 표적이 되기 쉽다보니 전 세계적인 연구개발 성과 공유가 의도치 않게 가능하다. 그래서 피드백이 정말정말 빠르다. Python, 자바스크립트, PHP 등 인터프리터 계열 언어들에 이른바 Nerd들(...)이 많이 몰린 것이 그 증거. 관련 카피레프트 분야 커뮤니티도 활성화되어 있다.

3. 영화


#
장르
드라마, 스릴러
제작사
제작사
러닝 타임
128분
개봉일시
2005년
감독
시드니 폴락
출연
니콜 키드먼, 숀 펜
국내등급
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라는 형태로 중간언어로 컴파일을 한다