Web

compiler VS interpreter

Bonita SY 2020. 9. 28. 23:44
728x90
반응형

Compiler

- 고급 프로그래밍 언어로 작성된 코드를 machine code로 변환하는 컴퓨터 프로그램

- 사람이 읽을 수 있는 코드를 컴퓨터 프로세서가 이해하는 언어(바이너리 1 또는 0비트)로 변환하는 프로그램

- 컴퓨터는 machine code를 처리하여 해당 작업을 수행

- compiler는 작성된 프로그래밍 언어의 구문 규칙을 준수해야 함

- compiler는 해당 프로그램에서 발견된 error는 수정할 수 없음 => 컴파일 불가

- 프로그램이 실행되기 전, 한번에 모든 코드를 machine code로 변환

- interpreted 코드 보다 빠르게 실행됨

- compile을 수행한 후 모든 오류를 한꺼번에 표시

- translation linking-loading model 기반

 

 

Interpreter

- 고급 프로그램 statement(source code, pre-compiled code, scripts)를 machine code로 변환하는 컴퓨터 프로그램

- 프로그램이 실행 중에 각 코드를 하나씩 machine code로 변환

- compiled 코드 보다 느리게 실행됨

- 각 행의 오류를 하나씩 표시

- Interpretation method를 기반

 

Compiler VS Interpreter

 

Compiler

Interpreter

프로그래밍 순서

1. 프로그램 생성

2. parse 후 정확성을 위해 모든 statement문을 분석 (잘못된 경우, 에러 발생)

3. 에러가 없으면 소스 코드를 machine code로 변환

4. code 파일을 실행 가능한 프로그램으로 link

5. 프로그램 실행

1. 프로그램 생성

2. 파일 link 또는 machine code 생성하지 않음

3. 프로그램 실행 동안 한줄 씩 실행된 source statment

장점

이미 machine code로 번역되었기 때문에 코드 실행 시간이 짧다

초보 개발자가 사용하기 쉽다

단점

source code로 돌아가지 않고서는 프로그램을 변경할 수 없다

Interpreted 프로그램은 그에 맞는 interpreter가 존재해야 컴퓨터에서 실행 가능

machine code

disk에 저장

disk에 저장하지 않음

running time

보다 빠름

보다 느림

model

language translationlinking-loading model 기반

Interpretation Method 기반

프로그램 생성

source code와 독립적으로 실행할 수 있는 출력 프로그램을 생성

실행 중에 매번 소스 프로그램을 평가

실행

- 실행은 컴파일과 별개

- 컴파일이 완료되어 출력 프로그램이 나온 후에만 실행 가능

프로그램 실행은 interperte 과정의 일부이므로 한줄씩 수행

Memory requirement

필요 없음

interpretation 중에 필요

가장 적합한 프로그램

C나 C++  모델

Web

Code Optimization

코드의 실행속도를 높이기 위해 많은 최적화를 수행

코드를 한줄씩 인식하므로 최적화는 컴파일러에 비해 강력하지 않음

Dynamic Typing

turn time에 어떤 일이 일어날지 예측할 수 없기에 구현이 어려움

동적 타이핑 지원

사용법

production 환경에 적절

development 환경에 적절

Error execution

- 컴파일 시간에 모든 오류와 경고를 표시

- 오류를 수정하지 않고 프로그램을 실행할 수 없음

- 단일 문을 읽고 오류가 있으면 표시

- 다음 줄을 해석하려면 오류를 수정해야함

Input

전체 source code

code의 1줄

Output

intermediate machnie code 생성

intermediate machnie code 생성하지 않음

Errors

컴파일 이후 모든 오류 동시 표시

각줄의 모든 오류 하나씩 표시

관련 프로그래밍 언어

C,C++,C#, Scala, Java

PHP, Perl, Ruby

 

High-level Language (고급 언어)

- source code라고도 함

- C, C++, Java 등

- 프로그래밍 프로세스를 쉽게 만듦

- 실행하기 전 기계어로 번역 필요

- 번역 프로세스는 컴파일러나 인터프리터가 수행

 

Machine Code

- 하드웨어에 매우 가까움

- 일련의 binary pattern으로 구성

- 컴퓨터에서 수행해야하는 간단한 작업을 나타냄

- machine code는 실행 가능하므로 직접 실행 가능

 

Object Code

- source code를 컴파일할 때, Interl, AMD, ARM과 같은 다른 프로세서에 대해 생성된 machine code는 직접 실행이 불가

- 실행할 수 있게 하기 위해 source code를 먼저 object code로 변환이 필요

- 프로세서가 이해할 수 없는 machine code와 유사한 중간 코드(intermediary code)

- run time에 object code는 기본 플랫폼의 machine code로 변환

 

출처

https://www.guru99.com/difference-compiler-vs-interpreter.html

728x90
반응형