컴파일러와 인터프리터는 프로그래밍 언어로 작성된 코드를 컴퓨터가 이해할 수 있는 기계어(0, 1)로 변환하는 과정에 관여하는 프로그램이다.
컴파일러
- 소스 코드 전체를 읽어 한 번에 기계어로 변환한다.
- 변환 과정을 거친 후, 생성된 기계어 코드를 실행한다.
- 컴파일 과정 자체에 소요되는 시간이 있지만, 변환된 코드는 직접 실행되므로 실행 시간은 빠르다.
- C, Go, Rust 등이 컴파일러 언어이다.
인터프리터
- 코드를 한 줄씩 읽어가며 바로바로 기계어로 변환하고 실행한다.
- 컴파일 단계가 없으므로 초기에는 빠르지만, 전체 코드 실행 시간은 오히려 컴파일 언어보다 느릴 수 있다. 코드를 실행할 때마다 기계어로 변환하는 과정이 필요하기 때문이다.
- Python이 인터프리터 언어이다.
JIT 컴파일러
- 컴파일러와 인터프리터의 중간 형태이다.
- 실행 시점에 코드를 분석하여 어떤 부분이 가장 자주 실행되는지 판단한다.
- 동적 컴파일: 분석 결과에 기반하여, 자주 실행되는 코드만을 선별적으로 기계어로 변환한다. 이는 프로그램 실행 중에 실시간으로 이루어진다.
- 최적화: 컴파일 과정에서 다양한 최적화 기법을 적용한다.
- 자주 사용되는 코드(hot code)의 실행 속도가 크게 향상되는 장점이 있으나 컴파일된 코드를 메모리에 저장해 캐싱하기 때문에 인터프리터 방식에 비해 더 많은 메모리를 사용한다는 단점이 있다.
- JVM, .NET, V8(node.js) 등이 있다.
출처
CS 지식의 정석 | 디자인패턴 네트워크 운영체제 데이터베이스 자료구조 - 큰돌
'CS 지식' 카테고리의 다른 글
추상화 (0) | 2024.08.07 |
---|---|
메서드 오버로딩, 오버라이딩 (0) | 2024.08.07 |
CI/CD (0) | 2024.08.06 |
클라우드 - 컨테이너와 도커 (0) | 2024.08.06 |
클라우드 - IaaS, PaaS, SaaS (0) | 2024.08.06 |