컴퓨터는 0과1로 이루어진 이진수만 이해할 수 있다. 따라서 우리가 작성하는 프로그래밍 언어를 컴퓨터(CPU)가 이해할 수 있는 기계어(비트 단위의 저급 언어)로 번역해야 한다.
이 때 번역을 해줄 번역기가 컴파일러와 인터프리터이며 둘은 차이점이 존재한다.
컴파일러는 코드 전체를 읽고 한번에 번역을 하며 번역 시 실행파일이 생성된다.
따라서 다음에 실행할 때 실행시간이 빠르고 번역시간이 인터프리터 대비 길다.
컴파일러는 전체 코드를 번역하는 과정에서 에러가 발생해 코드가 실행되지 않는다.
인터프리터는 한줄씩 번역하며 번역 시 실행파일을 생성하지 않아 다음에 실행 시 다시 번역을 해야한다.
따라서 번역시간이 컴파일러 대비 짧지만 실행 시간이 더 길다.
인터프리터는 한줄씩 실행하다 에러가 발생하면 프로그램이 종료되며 에러 발생 전 코드들은 실행된다.
컴파일러 | 인터프리터 | |
---|---|---|
번역 방식 | 한번에 번역 | 한줄씩 번역 |
번역 속도 | 느림 | 빠름 |
실행파일 생성 | O | X |
실행 속도 | 빠름 | 느림 |
에러 발생 시 | 전체 코드 변환 후 보고 | 에러 발생 시 이후 코드 실행X |
대표 언어 | C, C++, Java | JS, Python, Ruby |
[GURU99] Compiler vs Interpreter – Difference Between Them
[은연일체] 컴파일러와 인터프리터에 대해 알아보자
[jhur98] 컴파일러(compiler)와 인터프리터(interpreter)의 차이