컴파일러와 인터프리터

박효상·2022년 4월 28일
0

BACKEND-TIL

목록 보기
13/21
post-thumbnail

컴파일러

  • C, C++에서 사용
  • 소스코드 전체의 명령어를 수집하고 재구성하여 하드웨어 플랫폼의 프로세서가 이해할 수 있는 기계어로 바로 변환

장점

  • 한번 실행파일을 만들고나면 실행속도가 훨씬 빠르다
  • 전체코드를 컴파일하기에 보안적으로 노출 위험 x

단점

  • 인터프리터보다 코드를 변환하는 시간이 오래걸린다
  • 컴파일된 실행파일, 즉 어셈블리어는 하드웨어 플랫폼에 종속적이여서 호환이 안되는 하드웨어 위에선 작동되지 않는다
  • 실행파일로 컴파일시, 코드 내부에 에러가 있으면 컴파일도 되지 않고 전체가 실행이 되지 않는다

 

인터프리터

  • Javascript, Python에 사용
  • 소스코드르 한줄한줄씩 중간 형태로 해석한 뒤 실행

장점

  • 한 줄 단위로 해석하여 컴파일러보다 해석 속도가 빠르다
  • 하드웨어 플랫폼에 종속적이지않아 어떤 하드웨어 위에서도 작동 가능
  • 실행파일을 생성할 필요가 없다

단점

  • 컴파일러보다 실행속도가 느리다
  • 특정 부분의 코드에서 에러가 발생해도 그전 코드까지는 실행에 문제가 없다
    • 인터프리터가 웹에서 사용되는 배경

 

예외

  • Java는 컴파일러와 인터프리터 둘 다 적용된 특이한 구조
  • .java 파일을 자바 컴파일러(javac)를 통해 .class라는 바이트 코드 파일로 변환하면 이를 인터프리터를 통해 한줄 단위로 해석하여 기계어로 변환하여 실행
profile
집념의 백엔드 개발자

0개의 댓글