컴파일러는 뭐고 인터프리터는 뭔가요?
컴파일러와 인터프리터는 고급언어로 작성된 소스코드를 기계어로 번역한 후에 프로그램을 실행하는 것입니다.
이 둘은 아래와 같은 차이점을 가지고 있습니다.
컴파일러
파일을 한 번에 번역합니다. 번역후에는 실행파일이 생성됩니다.
이후의 실행에는 생성된 실행파일을 가지고 실행하게 됩니다.
모든 파일을 한 번에 번역하여야 하므로 번역 과정은 인터프리터에 비해 상대적으로 느리지만 이미 번역된 실행파일을 가지게 되므로 이후의 실행에는 빠릅니다.
인터프리터
파일을 한 줄씩 번역을 합니다. 번역하는 시간은 한 줄만 번역을 하므로 짧지만 실행 할때마다 번역을 하여야 하므로 실행 시간이 컴파일러에 비해 느립니다.
실행파일이 생성되지 않으므로 같은 파일을 실행하게 되면 매번 같은 번역 과정을 가져야 합니다.
이러한 인터프리터를 사용하는 이유는 하드웨어에 종속되지 않은 환경에서 실행하기 위함입니다.
a cpu에서 컴파일러를 통해 생성된 실행 파일은 b cpu에서는 실행되지 않습니다.
이는 실행 파일이 하드웨어의 환경에 맞게 생성되기 때문입니다.
그래서 jvm을 설치하여 a cpu에서 컴파일된 실행파일을 b cpu에서 돌리기 위해 jvm 내부에서 실행하는 과정이 있습니다.
위의 컴파일러 동작과 다르게 인터프리터는 해당 프로그램을 하드웨어의 환경에 맞게 변환을 합니다.
그래서 a cpu에서 돌아가는 프로그램이 b cpu에서도 문제없이 돌아갈 수 있습니다.
이러한 이유로 인터프리터를 사용하곤 합니다.
컴파일러 | 인터프리터 | |
개발 편의성 | 코드를 수정하고 컴파일을 매번 다시 해야 한다. | 수정후에 즉시 실행 가능 |
실행 속도 | 빠르다 | ㄴ리다. |
보안 | 코드가 유출되지 않는다. | 코드가 유출될 수 있다. |
파일 용량 | 실행 파일 전체를 전송해야 하므로, 용량이 크다. | 코드만 전송하면 되므로 용량이 작다. |
프로그래밍 언어 | c, c++ | python, ruby |
출처 : https://cbw1030.tistory.com/276
https://velog.io/@jaeyunn_15/OS-Compiler-vs-Interpreter
'Frontend > Javascript' 카테고리의 다른 글
Javascript createObjectURL, revokeObjectURL 🤥 (0) | 2022.04.01 |
---|---|
Javascript custom event 🐕 (0) | 2022.04.01 |
Javascript 함수 => 1급 객체 ❓ (0) | 2022.04.01 |
Javascript event loop (0) | 2022.03.31 |
Javascript 얕은 복사, 깊은 복사 (0) | 2022.03.27 |