컴파일러와 인터프리터
프로그래밍 언어로 작성된 코드를 컴퓨터가 이해할 수 있는 기계어로 변환하는 과정에 관여하는 프로그램
기계어
: 컴퓨터(CPU)가 별다른 해석(컴파일) 없이 읽을 수 있는 프로그래밍 언어
0과 1 (이진수)로 표현된다.
컴파일러
- 전체 변환 : 소스 코드의 전체를 읽어서 한번에 기계어로 변환
변환 과정을 거친 후, 생성된 기계어 코드를 실행
- 속도 : 컴파일 과정은 시간이 걸리지만, 변환된 코드는 직접 실행되기 때문에 시간은 빠르다.
- Ex) C, C++, Go, Rust 등
- 단점 : 수정이 용이하지 않다.
수정 사항이 발생하면 다시 컴파일을 해야 되는데, 작은 프로그램일 경우에는 문제가 되지 않지만 컴파일이 몇 시간씩 걸리는 덩치 큰 프로그램에서는 문제가 된다.
특히 수정 사항이 빈번하게 발생할 경우에는 큰 문제가 된다.
이 때문에 수정 사항이 빈번하게 발생할 것 같은 부분은 인터프리터를 쓰는 방법으로 따로 빼 두는 기법을 많이 사용한다.
인터프리터
- 한 줄씩 변환 : 소스 코드를 한 줄 씩 읽어가며 바로 기계어로 변환하고 실행
- 속도 : 컴파일 단계가 없어 초기 시작은 빠르지만, 전체 코드 실행 시간은 컴파일러를 사용할 때보다 느릴 수 있다.
왜냐하면 코드를 실행할 때마다 변환 과정을 거치기 때문
- Ex) Python
공통점
고수준의 언어를 기계어로 변환한다.
참고자료 : https://namu.wiki/w/%EC%9D%B8%ED%84%B0%ED%94%84%EB%A6%AC%ED%84%B0
https://namu.wiki/w/%EC%BB%B4%ED%8C%8C%EC%9D%BC%EB%9F%AC
https://jhyonhyon.tistory.com/18