컴파일러와 인터프리터는 모두 프로그래밍 언어를 기계어로 변환해준다는 공통점을 가지고 있습니다. 그럼 이 둘의 차이는 무엇일까요?
컴파일러는 전체 코드를 한번에 변환하지만 인터프리터는 한 번에 한 행씩 분석하며 변환합니다.
더 자세히 알아보도록 하겠습니다.
컴파일러란?
- 프로그램 전체를 분석하여 기계어로 변환합니다.
- 전체를 스캔하기 때문에 컴파일러는 초기 스캔 시간이 오래 걸립니다.
- 초기 스캔을 한 번 하고 나면 실행파일을 만들어놓은 후 다음 실행을 할 때는 이전에 만들어두었던 실행파일을 실행하기 때문에 전체 수행 속도는 인터프리터보다 빠릅니다.
- 실행파일을 만드는 과정에서 오브젝트 코드(Object Code)들을 링킹(Linking)하느라 메모리를 더 많이 사용한다는 단점이 있습니다.
- 전체 코드를 검사한 후 오류 메시지를 생성하므로 컴파일 후에 오류를 발견할 수 있습니다.
- 예시 : C, C++, Java(둘 다 사용)
인터프리터란?
- 프로그램 실행 시 한 번에 한 문장만 번역합니다.
- 코드를 한 줄씩 읽은 후 다른 중간 코드나 기계어로 변환해서 임시파일로 저장하여 바로 실행합니다.
- 기계어로 변환된 코드를 실행파일로 바로 작성하지 않고, 메모리에 바로 로드시켜 실행합니다.
- 변환과 실행을 동시에 해야하므로 실행 속도가 느립니다.
- 소스 코드를 한 줄씩 실행하므로 에러를 바로 알려줘서 실시간 코드 수정이 가능합니다.
- 예시 : Python, Ruby, Javascript
컴파일러와 인터프리터의 비교
| 컴파일러 | 인터프리터 |
---|
실행 속도 | 빠름 | 느림 |
메모리 사용량 | 많음 | 적음 |
에러 알림 시기 | 실행 전 | 실행 후 |