컴파일러와 통역사 – 차이점
컴파일러와 인터프리터의 주요 차이점
- 컴파일러는 고급 프로그래밍 언어로 작성된 코드를 프로그램이 실행되기 전에 한꺼번에 기계어로 변환하는 반면, 인터프리터는 프로그램이 실행되는 동안 각 고급 프로그램 명령문을 하나씩 기계어로 변환합니다.
- 컴파일된 코드는 더 빠르게 실행되는 반면, 해석된 코드는 더 느리게 실행됩니다.
- 컴파일러는 컴파일 후 모든 오류를 표시하는 반면, 인터프리터는 각 줄의 오류를 하나씩 표시합니다.
- 컴파일러는 번역 링크-로딩 모델을 기반으로 하고, 인터프리터는 해석 방법을 기반으로 합니다.
- 컴파일러는 전체 프로그램을 사용하는 반면, 인터프리터는 한 줄의 코드를 사용합니다.
컴파일러란 무엇입니까?
컴파일러는 고급 프로그래밍 언어로 작성된 코드를 기계 코드로 변환하는 컴퓨터 프로그램입니다. 인간이 읽을 수 있는 코드를 컴퓨터 프로세서가 이해하는 언어(바이너리 1과 0 비트)로 번역하는 프로그램입니다. 컴퓨터는 기계 코드를 처리하여 해당 작업을 수행합니다.
A 컴파일러 작성된 프로그래밍 언어의 구문 규칙을 준수해야 합니다. 그러나 컴파일러는 프로그램일 뿐이며 해당 프로그램에서 발견된 오류를 수정할 수 없습니다. 따라서 실수를 하면 프로그램 구문을 변경해야 합니다. 그렇지 않으면 컴파일되지 않습니다.
통역사란 무엇입니까?
인터프리터는 각 고급 프로그램 명령문을 기계어 코드로 변환하는 컴퓨터 프로그램입니다. 여기에는 소스 코드, 미리 컴파일된 코드 및 스크립트가 포함됩니다. 컴파일러와 인터프리터 모두 고급 프로그래밍 언어를 기계어 코드로 변환하는 동일한 작업을 수행합니다. 그러나 컴파일러는 프로그램이 실행되기 전에 코드를 기계어 코드로 변환(exe 생성)합니다. 통역사는 프로그램이 실행될 때 코드를 기계어 코드로 변환합니다.
컴파일러와 인터프리터의 차이점
컴파일러와 인터프리터의 중요한 차이점은 다음과 같습니다.
차이의 근거 | 컴파일러 | 통역사 |
---|---|---|
프로그래밍 단계 |
|
|
장점 | 프로그램 코드는 이미 기계어로 번역되어 있습니다. 따라서 코드 실행 시간이 단축됩니다. | 특히 초보자의 경우 통역사를 사용하기가 더 쉽습니다. |
불리 | 소스 코드로 돌아가지 않고는 프로그램을 변경할 수 없습니다. | 해석된 프로그램은 해당 해석기가 있는 컴퓨터에서 실행될 수 있습니다. |
기계 코드 | 기계어를 기계어 코드로 디스크에 저장 | 기계어 코드를 전혀 저장하지 않습니다. |
시간을 실행 | 컴파일된 코드가 더 빠르게 실행됩니다. | 해석된 코드가 느리게 실행됨 |
모델 | 언어 번역 링크-로딩 모델을 기반으로 합니다. | 해석 방법을 기반으로 합니다. |
프로그램 생성 | 원본 프로그램과 독립적으로 실행할 수 있는 출력 프로그램(exe 형식)을 생성합니다. | 출력 프로그램을 생성하지 않습니다. 따라서 그들은 실행 중에 매번 소스 프로그램을 평가합니다. |
실행 | 프로그램 실행은 컴파일과 별개입니다. 전체 출력 프로그램이 컴파일된 후에만 수행됩니다. | 프로그램 실행은 해석 과정의 일부이므로 한 줄씩 수행됩니다. |
메모리 요구 사항 | Target 프로그램은 독립적으로 실행되며 메모리에 컴파일러가 필요하지 않습니다. | 통역사는 통역하는 동안 기억 속에 존재합니다. |
적합한 | 특정 대상 머신에 제한되어 있으며 이식할 수 없습니다. C 및 C++ 컴파일 모델을 사용하는 가장 널리 사용되는 프로그래밍 언어입니다. | 로드 시간이 중요한 웹 환경의 경우. 철저한 분석이 모두 이루어지기 때문에 여러 번 실행되지 않는 작은 코드라도 컴파일하는 데 상대적으로 더 많은 시간이 걸립니다. 그러한 경우에는 통역사가 더 좋습니다. |
코드 최적화 | 컴파일러는 전체 코드를 미리 봅니다. 따라서 코드 실행 속도를 높이는 많은 최적화를 수행합니다. | 통역사는 코드를 한 줄씩 보기 때문에 최적화가 컴파일러만큼 강력하지 않습니다. |
동적 타이핑 | 컴파일러는 턴 타임에 무슨 일이 일어날지 예측할 수 없기 때문에 구현하기가 어렵습니다. | 해석된 언어는 동적 타이핑을 지원합니다. |
용법 | 생산 환경에 가장 적합합니다. | 프로그램 및 개발 환경에 가장 적합합니다. |
오류 실행 | 컴파일러는 컴파일 시간에 모든 오류와 경고를 표시합니다. 따라서 오류를 수정하지 않고는 프로그램을 실행할 수 없습니다. | 인터프리터는 단일 명령문을 읽고 오류가 있는 경우 이를 표시합니다. 다음 줄을 해석하려면 오류를 수정해야 합니다. |
입력 | 전체 프로그램이 필요합니다 | 한 줄의 코드가 필요합니다. |
산출 | 컴파일러는 중간 기계어 코드를 생성합니다. | 통역사는 중간 기계어 코드를 생성하지 않습니다. |
오류 | 컴파일 이후의 모든 오류를 동시에 표시합니다. | 각 라인의 모든 오류를 하나씩 표시합니다. |
관련 프로그래밍 언어 | C, C++, C#, 스칼라, Java 모두 컴파일러를 사용합니다. | PHP, 펄, 루비 통역사를 사용합니다. |
컴파일러의 역할
- 컴파일러는 소스 코드를 읽고 실행 가능한 코드를 출력합니다.
- 고급 언어로 작성된 소프트웨어를 컴퓨터가 이해할 수 있는 명령으로 변환합니다. 프로그래머가 작성한 텍스트를 CPU가 이해할 수 있는 형식으로 변환합니다.
- 컴파일 과정은 상대적으로 복잡합니다. 프로그램을 분석하고 처리하는 데 많은 시간이 소요됩니다.
- 실행 가능한 결과는 일종의 기계별 바이너리 코드 형태입니다.
또한 확인:- 초보자를 위한 컴파일러 디자인 튜토리얼
통역사의 역할
- 인터프리터는 RUN Time 동안 소스 코드를 한 줄씩 변환합니다.
- Interpret은 고급 언어로 작성된 프로그램을 기계 수준 언어로 완전히 번역하는 것입니다.
- 인터프리터를 사용하면 프로그램이 실행되는 동안 프로그램을 평가하고 수정할 수 있습니다.
- 프로그램 분석 및 처리에 소요되는 시간이 상대적으로 적습니다.
- 프로그램 실행이 컴파일러에 비해 상대적으로 느립니다.
고급 언어
다음과 같은 고급 언어 C, C++, JAVA 등은 영어와 매우 가깝습니다. 프로그래밍 과정을 쉽게 만듭니다. 그러나 실행하기 전에 기계어로 번역해야 합니다. 이 번역 과정은 컴파일러나 인터프리터에 의해 수행됩니다. 소스 코드라고도 합니다.
기계 코드
기계어는 하드웨어와 매우 가깝습니다. 모든 컴퓨터에는 기계어가 있습니다. 기계어 프로그램은 일련의 이진 패턴으로 구성됩니다. (예: 110110) 이는 컴퓨터가 수행해야 하는 간단한 작업을 나타냅니다. 기계어 프로그램은 실행 가능하므로 직접 실행할 수 있습니다.
개체 코드
소스 코드를 컴파일할 때 Intel, AMD, ARM과 같은 다양한 프로세서에 대해 생성된 기계어 코드가 다릅니다. 코드를 이식 가능하게 만들기 위해 소스 코드는 먼저 개체 코드로 변환됩니다. 어떤 프로세서도 이해할 수 없는 중개 코드(기계어 코드와 유사)입니다. 런타임 시 개체 코드는 기본 플랫폼의 기계어 코드로 변환됩니다.
Java 컴파일되고 해석됩니다.
컴파일러의 상대적 이점을 활용하려면 다음과 같은 프로그래밍 언어의 인터프리터가 필요합니다. Java 컴파일되고 해석됩니다. 그만큼 Java 코드 자체는 개체 코드로 컴파일됩니다. 런타임 시, JVM 개체 코드를 대상 컴퓨터의 기계어 코드로 해석합니다.
또한 확인:- Java 초보자를 위한 튜토리얼: 핵심 학습 Java 프로그램 작성