인터프리트: 두 판 사이의 차이

내위키
편집 요약 없음
편집 요약 없음
5번째 줄: 5번째 줄:
인터프리트의 장점은 바로 실행할 수 있다는 데에 있다. [[컴파일]]은 프로그램 전체를 [[기계어]]로 번역하는 과정에서 시간이 걸리지만 인터프리트는 바로 실행에 들어갈 수 있다. 또한 [[컴파일]] 방식은 프로그램의 어느 부분이 바뀌었을 때 다시 [[컴파일]]을 해야 하지만 인터프리트는 그냥 다시 실행하거나, 만약 실행 지점이 바뀐 부분까지 다다르지 않았다면 다시 실행할 필요도 없다. 유연성이라는 면에서는 인터프리터가 유리하다.
인터프리트의 장점은 바로 실행할 수 있다는 데에 있다. [[컴파일]]은 프로그램 전체를 [[기계어]]로 번역하는 과정에서 시간이 걸리지만 인터프리트는 바로 실행에 들어갈 수 있다. 또한 [[컴파일]] 방식은 프로그램의 어느 부분이 바뀌었을 때 다시 [[컴파일]]을 해야 하지만 인터프리트는 그냥 다시 실행하거나, 만약 실행 지점이 바뀐 부분까지 다다르지 않았다면 다시 실행할 필요도 없다. 유연성이라는 면에서는 인터프리터가 유리하다.


단점은 속도. 연설문을 미리 번역해 놨다가 줄줄이 읽는 것과, 연설을 할 때 옆에서 동시통역을 할 때를 비교하면 쉽게 이해할 수 있다. 또한 [[컴파일]]은 실행하기 전에 컴파일 과정에서 어느 정도 오류를 잡아낼 수 있지만<ref>모든 오류를 잡아낼 수는 없다. 프로그램 언어의 규칙에 어긋나는 것은 잡아내지만 논리적인 문제는 [[컴파일]] 과정에서 잡기 힘들다.</ref> 인터프리트 방식은 일단 실행해 봐야 알 수 있다.
단점은 속도. 연설문을 미리 번역해 놨다가 줄줄이 읽는 것과, 연설을 할 때 옆에서 동시통역을 할 때를 비교하면 속도 차이를 쉽게 이해할 수 있다. 컴파일은 그 과정에서 코드를 최적화 하기 위한 다양한 시도를 하지만 인터프리트는 한 줄 한 줄씩 바로바로 실행시켜야 하므로 최적화가 어렵다. 연설문을 미리 번역할 때에는 문장을 다듬고 고치면서 간결하게 만들 수 있지만 동시통역은 바로바로 통역을 해 줘야 하므로 간결성이 떨어지는 것과 비슷하다. 또한 [[컴파일]]은 실행하기 전에 컴파일 과정에서 어느 정도 오류를 잡아낼 수 있지만<ref>모든 오류를 잡아낼 수는 없다. 프로그램 언어의 규칙에 어긋나는 것은 잡아내지만 논리적인 문제는 [[컴파일]] 과정에서 잡기 힘들다.</ref> 인터프리트 방식은 일단 실행해 봐야 알 수 있다.


인터프리트와 [[컴파일]]을 절충하는 방식도 있는데, 예를 들어 [[컴파일]] 방식의 언어를 [[디버그]]할 때에는 한 줄 한 줄 실행해가면서 결과를 추적하는 기능이 있다. 이는 컴파일을 하면서 기계어 파일 안에 디버그 정보를 심어 놓는 방식으로 역추적이 가능하도록 한 것이다. 다만 이렇게 컴파일을 하면 실행 파일에 디버그 정보가 들어가므로 파일 크기가 커지고 실행 속도도 느려진다.
인터프리트와 [[컴파일]]을 절충하는 방식도 있는데, 예를 들어 [[컴파일]] 방식의 언어를 [[디버그]]할 때에는 한 줄 한 줄 실행해가면서 결과를 추적하는 기능이 있다. 이는 컴파일을 하면서 기계어 파일 안에 디버그 정보를 심어 놓는 방식으로 역추적이 가능하도록 한 것이다. 다만 이렇게 컴파일을 하면 실행 파일에 디버그 정보가 들어가므로 파일 크기가 커지고 실행 속도도 느려진다.


{{각주}}
{{각주}}

2021년 1월 22일 (금) 14:05 판

Interpret.

고급언어로 만든 컴퓨터 프로그램을 실행시킬 때, 실행할 때마다 한 줄 한 줄 기계어로 번역해가면서 실행시키는 방식을 뜻하며, 한번에 전체 프로그램을 기계어로 번역한 다음 실행하는 컴파일과 대조되는 개념이다. 인터프리트 방식으로 프로그램을 실행할 수 있도록 해 주는 프로그램을 인터프리터(interpreter)라고 부른다. 인터프리트는 원래 '통역'을 뜻한다. 사람이 대화를 할 때 옆에 있다가 한 문장씩 통역해 주는 것과 비슷한 개념이라 할 수 있다. 컴파일은 연설문 전체를 미리 번역했다가 줄줄이 읽어주는 것에 비교할 수 있다.

인터프리트의 장점은 바로 실행할 수 있다는 데에 있다. 컴파일은 프로그램 전체를 기계어로 번역하는 과정에서 시간이 걸리지만 인터프리트는 바로 실행에 들어갈 수 있다. 또한 컴파일 방식은 프로그램의 어느 부분이 바뀌었을 때 다시 컴파일을 해야 하지만 인터프리트는 그냥 다시 실행하거나, 만약 실행 지점이 바뀐 부분까지 다다르지 않았다면 다시 실행할 필요도 없다. 유연성이라는 면에서는 인터프리터가 유리하다.

단점은 속도. 연설문을 미리 번역해 놨다가 줄줄이 읽는 것과, 연설을 할 때 옆에서 동시통역을 할 때를 비교하면 속도 차이를 쉽게 이해할 수 있다. 컴파일은 그 과정에서 코드를 최적화 하기 위한 다양한 시도를 하지만 인터프리트는 한 줄 한 줄씩 바로바로 실행시켜야 하므로 최적화가 어렵다. 연설문을 미리 번역할 때에는 문장을 다듬고 고치면서 간결하게 만들 수 있지만 동시통역은 바로바로 통역을 해 줘야 하므로 간결성이 떨어지는 것과 비슷하다. 또한 컴파일은 실행하기 전에 컴파일 과정에서 어느 정도 오류를 잡아낼 수 있지만[1] 인터프리트 방식은 일단 실행해 봐야 알 수 있다.

인터프리트와 컴파일을 절충하는 방식도 있는데, 예를 들어 컴파일 방식의 언어를 디버그할 때에는 한 줄 한 줄 실행해가면서 결과를 추적하는 기능이 있다. 이는 컴파일을 하면서 기계어 파일 안에 디버그 정보를 심어 놓는 방식으로 역추적이 가능하도록 한 것이다. 다만 이렇게 컴파일을 하면 실행 파일에 디버그 정보가 들어가므로 파일 크기가 커지고 실행 속도도 느려진다.

각주

  1. 모든 오류를 잡아낼 수는 없다. 프로그램 언어의 규칙에 어긋나는 것은 잡아내지만 논리적인 문제는 컴파일 과정에서 잡기 힘들다.