본문 바로가기
🐎Language

[Language] Compile과 Interprete의 개념과 차이

by inbeom 2023. 9. 17.
728x90
컴퓨터는 0 / 1(전류가 입력되면 1, 없으면 0)로 밖에 판단할 수 없다.

그렇기 때문에 개발자가 작성한 소스코드를 0과 1로 구성된 기계어(binary code)로 변환해 줘야 컴퓨터가 코드를 이해하고 실행할 수 있는데 코드를 기계어로 변환하는 방법에는 compile, interpret 두 가지가 있다.

 

 

컴파일러 (Compiler)

Compile은 번역하면 '집대성'이라고 한다. 즉, 여럿을 모아 하나로 크게 완성하는 것이라는 뜻이다.

컴파일러는 소스코드를 모아서(묶어서) 미리 컴파일(번역)해 두었다가 한번에 실행한다.

C, C++, C#, JAVA 등

장점:

  • 한번 스캔을 마치면 실행파일을 만들어 놓고 계속 사용하기 때문에 인터프리터보다 실행속도가 빠르다.
  • 컴파일 과정에서 오류를 검출할 수 있기 때문에 비교적 안정성이 높다.

단점:

  • 빌드 시 한번에 다 번역하기 때문에 초기에 시간이 오래걸린다.
  • 컴파일러는 기계어로 번역시 오브젝트 코드(Object Code)라는 파일을 만드는데 이 오브젝트 코드를 서로 연결하여 하나의 실행 파일로 만드는 링킹(Linking) 작업을 하기 때문에 메모리가 추가적으로 사용된다.

 


인터프리터 (Interpreter)

Interpret는 '해석하다'라는 뜻이다.

인터프리터는 프로그램을 실행하면 한 문장씩 번역해서 알려준다.

Python, Javascript, Ruby 등

장점:

  • 컴파일러처럼 목적코드를 만들지도 않고, 링킹 과정도 거치지 않기 때문에 메모리 효율이 좋다.
  • 코드 변경시 빌드 과정없이 바로 실행이 가능하기 때문에 개발하며 바로 테스트하기에 유리하다.

단점:

  • 한번에 한 문장씩 읽고 번역하여 실행시키는 과정을 반복하다보니 실행시간이 느리다.
  • 실행 시 한 문장씩 돌리기 때문에 프로그램을 실행해봐야 에러 검출이 가능하다.

 

 

 

 

 

 

reference.

https://www.youtube.com/watch?v=OxvtGYvVkRU

 

728x90