마이 플밍 블로그

[컴퓨터]컴파일러(compiler)와 인터프리터(interpreter) 본문

컴퓨터

[컴퓨터]컴파일러(compiler)와 인터프리터(interpreter)

레옹 2023. 10. 4. 22:43

 

컴파일

어셈블리어는 기계어와 일대일 대응이되는 저급 프로그래밍 언어이다.

초창기 컴퓨터는 모두 어셈블리어로 프로그래밍 되어있었다. 컴퓨터 구조에따라 사용되는 기계어가 달라서 어셈블리어를 컴퓨터 구조에 맞춰 작성해야했었다. 그래서 통일된 구조의 언어의 필요성이 생겼고 그렇게 나온게 고급 언어이다. 허나 고급언어를 작성하면 어셈블리어로 번역시켜주는 과정이 필요했는데 그것을 컴파일이라고 한다.

 

컴파일 시켜주는 방식에는 두가지가 있는데 그것이 컴파일러인터프리터이다.


 

컴파일러

컴파일러는 코드 전체를 기계어로 번역한다. 한번에 모든 코드를 번역하기 때문에 시간이 많이 걸린다. 하지만 프로그램 실행시 인터프리터보다 빠르다. 그 이유는 초기 스캔을 마치면 실행파일을 만들어서 다음에 실행하면 실행파일을 이용하기 때문이다. 또한 실행전에 모든 코드를 검사하기 때문에 오류를 확인할 수도 있다. 그러나 고급 언어를 기계어로 번역하는 과정에서 오브젝트 코드(Object code)를 생성하고 이 오브젝트 코드를 하나로 묶는 링킹(Linking)이라는 작업을 거쳐서 메모리를 더 쓴다는 단점이 있다. 컴파일러 방식을 쓰는 언어로는 C계열 언어와 JAVA등이 있다.

 

인터프리터

컴파일러와 다르게 한문장씩 번역한다. 그래서 프로그램 실행시마다 시간이 오래 걸린다. 또한 별도의 오브젝트 코드를 만들거나 링킹을 하지 않아서 매 실행시마다 시간이 오래 걸린다. 그러나 메모리 효율이 컴파일러에 비해 좋다. 번역중 오류 발생시 오류가 발생한 지점부터 멈춘다. 대표적인 언어로 Python, Ruby등 타입스크립트들이 많다.

 

 

Reference

  i https://velog.io/@jhur98/
  i https://wikidocs.net/132948
  i https://losskatsu.github.io/
 

 

 

 

 

'컴퓨터' 카테고리의 다른 글

컴파일러 - 어휘 분석 (Lexical analysis)  (0) 2021.11.17