컴파일 vs 인터프리터

Beom·2022년 3월 7일
0

Computer Science

목록 보기
1/4

컴파일 언어와 인터프리터 언어에 대해 소개하기 전 프로그래밍 언어에 대해서 먼저 알아보겠다
우선 프로그래밍 언어에는 고급언어(High level language) 와 저급언어(Low level language) 가 있다
두 언어의 주된 차이점으로는 고급언어는 사람이 쉽게 이해할 수 있고 저급언어는 컴퓨터가 쉽게 이해할 수 있다는 것에서 출발한다

고급언어는 개발자 입장에서 이해하고 쉽고 가까운 관계이다
하지만 머신코드로 해석하고 난 뒤에서야 실행시킬 수 있다


고급언어로 작성된 프로그램 코드는 컴퓨터가 해석하지 못한다
이에 고급언어로 작성된 프로그램은 저급언어로 작성된 것보다 컴퓨터가 이해하고 실행하는 데 속도가 느리다

고급언어는 컴퓨터가 이해할 수 있는 머신코드로 변경을 하여 저급언어로 바꾼 후 링커를 통해서 컴퓨터가 처리 가능한 파일로 변형시켜야 한다
(Assembly Language = 기계어와 일대일 대응이 되는 언어, 고급언어를 기계어로 바꿔주는 프로그램밍 언어
Linker = 하나 또는 그 이상의 어셈블한 파일을 가져와 단일 실행 프로그램으로 병합시켜준다)

저급언어 : 기계어/어셈블리 언어 , 보다 메모리 효율적
고급언어 : 보다 쉽게 프로그램 작성 가능, 인터프리터/컴파일러 필수, 이해하기 쉬움, 디버깅 쉬움


Compiler (번역)

  • 고레벨 언어의 코드들을 한번에 번역한다
    때문에 과정이 복잡하여 비교적 시간이 오래 걸리지만 한번에 번역하고 최적화에 용이하다는 장점이 있다
  • 작성한 코드를 기계어로 변역/변환한 후 실행이 된다
  • 한꺼번에 모아서 번역하기에 처음에는 시간이 오래걸리나 컴파일 이후 실행이 빠르게 이루어진다. 이후 과정에서는 변환이 필요 없다
  • 번역을 한번에 하기에 용이할 수도 있지만 규모가 크다면 시간이 오래 걸릴수도 있다는 단점이 있다
  • Compile을 실행할 때 목적 프로그램 생성한다
  • 일부 코드를 수정할 시 전체 컴파일 다시 해야 한다

EX) C C++

Interpreter (해석 / 통역 )

  • 번역할 양이 적어 번역 속도는 빠르지만 실행은 느리다
  • 코드의 빌드 과정 없이 한줄씩 번역하여 실행한다
    이에 최적화가 어렵고 한줄이 바뀔 때마다 검사하기에 실행속도가 느리다
  • 인터프리터 언어는 초기 개발에 유리하다 ( 바로바로 실행가능, 디버깅 가능)
  • 코드 번역이 쌓이면서 양이 많아지면 CPU 의 사용 시간 낭비 증가

EX) Python, Javascript, Ruby

Compiler 와 Interpreter 의 차이점 쉽게 이해하기

외국어로 된 요리책을 보고 따라한다고 생각해보자
compiler 는 이미 모국어로 번역이 된 책을 보면서 따라하는 것이라고 생각하면 된다
반면 Interpreter 는 외국인 친구가 한 줄씩 해석하여 알려주는 것이라고 생각할 수 있다

출처 : Investopedia (Assembly Language)

0개의 댓글