쌓고 쌓다

컴파일러 & 인터프리터 본문

Git & CS

컴파일러 & 인터프리터

승민아 2022. 9. 7. 17:07

주요 번역 방식 :  컴파일러, 인터프리터, 어셈블러(어셈블리어를 번역)

 

컴파일러와 인터프리터는 고급언어에서 기계어로 바꿈.

 

컴파일러(C, C++, JAVA)

  • 프로그램 전체 코드를 스캔하여 모두 기계어로 번역
  • 매번 번역할 필요는 없다. (실행 파일을 만들기 때문에) -> 인터프리터보다 실행시간이 빠름.
  • 하지만, 전체를 스캔하기에 초기 스캔은 시간이 걸린다.
  • 코드를 수정하면 컴파일을 다시 해야 함.
  • 고급 언어를 기계어로 번역하는 과정에서 오브젝트 파일을 만드는데 이 파일들을 묶어 하나의 실행파일로 만드는      링킹 작업이 필요. -> 많은 메모리가 필요하다.
  • 운영체제(OS) 이식성이 낮다. (OS마다 실행할 수 있는 기계어가 다름-> 다시 컴파일해줘야 함)
  • 0과 1로된 기계어로 번역되기 때문에 프로그램의 코드 유출 X -> 보안성이 좋음.

인터프리터(Python, Ruby, JavaScript)

  • 프로그램 실행 시 한번에 한줄씩 번역
  • 번역 시간은 빠르나 실행 속도는 느림( 실행 파일 없이 매번 번역을 하기에 )
  • 컴파일러처럼 목적 코드를 만들지 않고 링킹 과정도 없기에 메모리 효율적.
  • 컴파일러와 달리 코드 유출 위험이 큼.
  • 인터프리터를 이용해 바로 읽기에 플랫폼에 독립적이고 이식성에 좋다. <-> 컴파일러는 플랫폼(하드웨어)에 종속적
  • 코드 수정 용이(전체 코드 다시 컴파일할 필요 X)
  • 별도의 실행 파일이 없이 바로 실행
Comments