[ComputerScience] 컴파일 언어와 인터프리터 언어
컴파일 언어와 인터프리터 언어
컴파일 방식과 인터프리터 방식은 소스 코드가 실행되는 방식에 따른 구분입니다.
컴파일러와 인터프리터에 대해 본격적으로 알아보기 전에 대략적인 차이는 다음과 같습니다.
| 항목 | 컴파일 언어 | 인터프리터 언어 |
| 실행 방식 | 전체 코드를 미리 변환 후 실행 | 실행 시점에 해석 및 실행 |
| 결과물 | 기계어 또는 바이트코드 생성 | 일반적으로 별도 실행 파일이 없음 |
| 오류 처리 | 실행 전 발견 | 실행 중 발견 |
| 실행 속도 | 빠름 | 상대적으로 느림 |
현대 프로그래밍 언어는 컴파일과 인터프리터 방식을 혼합하여 사용하는 경우가 많습니다.
예를 들어, Java는 소스 코드를 바이트코드로 컴파일한 후 JVM에서 인터프리트 또는 JIT 컴파일을 통해 실행합니다.
JavaScript는 실행 중 자주 사용되는 코드를 JIT(Just-In-Time) 컴파일하여 성능을 최적화합니다.
다음 사이트에서 컴파일과 인터프리터 과정을 좀 더 자세하게 알아볼 수 있습니다.
godbolt
컴파일
컴파일은 컴파일 언어로 작성된 소스 코드를 컴파일러가 기계어 또는 목적 코드(Object Code)로 한 번에 변환하는 과정입니다.
컴파일 과정은 일반적으로 다음과 같이 이루어집니다.
- 전처리 (Preprocessing)
- 컴파일 (Compilation)
- 어셈블 (Assembly)
- 링크 (Linking)
컴파일에 대한 자세한 설명은 [ComputerScience] 빌드에서 볼 수 있습니다.
컴파일 과정 중 오류가 발생하면 실행 파일이 생성되지 않으며, 프로그램은 실행되지 않습니다.
컴파일이 완료되면 실행 파일이 생성되므로, 실행 속도가 빠른 특징이 있습니다.
인터프리터
인터프리터는 소스 코드를 한 줄씩 해석하면서 즉시 실행하는 방식입니다.
즉, 전체 코드를 미리 변환하지 않고, 실행 시점에 코드를 읽고 처리합니다.
이 방식은 다음과 같은 특징을 가집니다.
- 소스 코드를 한 줄씩 해석하며 실행합니다.
- 오류가 발생하면 해당 시점에서 실행이 중단되지만, 이전 코드는 정상적으로 실행됩니다.
- 별도의 실행 파일을 생성하지 않습니다.
- 컴파일 방식에 비해 실행 속도가 상대적으로 느립니다.
댓글남기기