Hello Computer Vision

컴파일러(Compiler)와 인터프리터(Interpreter) 차이 본문

컴퓨터구조

컴파일러(Compiler)와 인터프리터(Interpreter) 차이

지웅쓰 2022. 11. 2. 12:08

지난번 컴퓨터구조 2주차 강의를 듣다가 컴파일러와 인터프리터의 차이를 알 수 있었는데

조금 더 정확하게 알아보기 위해 따로 찾아보고 기록해두려고한다.

 

두개 모두 우리가 작성한 코드(프로그래밍 언어)를 기계어로 번역해준다는 공통점을 가지고 있다. 

본격적으로 알아보기 위해 이미지로 한번 보면 더 이해가 빠를 거 같다.

출처 : https://postitforhooney.tistory.com/entry/InterpreterCompiler-%EC%9D%B8%ED%84%B0%ED%94%84%EB%A6%AC%ED%84%B0%EC%99%80-%EC%BB%B4%ED%8C%8C%EC%9D%BC%EB%9F%AC%EC%9D%98-%EC%B0%A8%EC%9D%B4%EC%A0%90

 

컴파일러(Compiler)

소스코드 전체를 한번에 번역한 후 실행을 한다. 따라서 코드에 잘못된 부분이 있으면 에러를 발생시키며

프로그램이 실행되지 않는다. (번역하고 실행하는 과정이 한번에 되는 것이 아니라 각각 해주어야한다.)

컴파일러가 성공적으로 코드를 번역하는데 성공하였을 때 다음 차례에 프로그램을 실행할 때는 이미 번역한 코드이므로

컴파일 과정을 다시 거치지 않는다.

하드웨어 종속성이 강하기 때문에 이전 컴퓨터에서 수행했던 실행파일을 다른컴퓨터에서는 실행되지 않을 수 있다.

또한 코드를 기계어로 번역하고 이를 Object code라는 파일로 만든 후 이러한 Object code들을 묶어서 하나의

실행파일로 만드는 Linking이라는 작업을 해야하는데 이러한 과정에서 메모리가 많이 발생한다.

사용 언어 : C, C++

 

인터프리터(Interpreter)

컴파일러와 다르게 전체를 한번에 번역하는 것이 아닌 한 문장씩 번역을 하고 바로 실행한다.

그렇기 때문에 에러가 발생되어 프로그램이 종료되기 전까지의 코드들은 수행이 된다.

번역속도는 전체를 번역하는 컴파일러보다 빠르지만, 프로그램을 실행할 때마다 번역을 수행해야 하기 때문에

실행속도는 컴파일러에 비해 느리다고 할 수 있다.

장점이라고 한다면 코드를 번역할 때 하드웨어의 환경에 맞게 변환하기 때문에 하드웨어의 종속성이 없다.

사용 언어 : Python, Ruby

  컴파일러(Compiler) 인터프리터(Interpreter)
번역 방식 코드 전체 한번에 번역 한 줄씩 번역
번역 속도 느리다 빠르다
실행 속도 빠르다 느리다
하드웨어 종속성 있다 없다

 

가볍게 컴파일러와 인터프리터에 대해서 정리해보았는데요, 틀린 점 지적해주시면 감사하겠습니다.