Git & CS
컴파일러 & 인터프리터
승민아
2022. 9. 7. 17:07
주요 번역 방식 : 컴파일러, 인터프리터, 어셈블러(어셈블리어를 번역)
컴파일러와 인터프리터는 고급언어에서 기계어로 바꿈.
컴파일러(C, C++, JAVA)
- 프로그램 전체 코드를 스캔하여 모두 기계어로 번역
- 매번 번역할 필요는 없다. (실행 파일을 만들기 때문에) -> 인터프리터보다 실행시간이 빠름.
- 하지만, 전체를 스캔하기에 초기 스캔은 시간이 걸린다.
- 코드를 수정하면 컴파일을 다시 해야 함.
- 고급 언어를 기계어로 번역하는 과정에서 오브젝트 파일을 만드는데 이 파일들을 묶어 하나의 실행파일로 만드는 링킹 작업이 필요. -> 많은 메모리가 필요하다.
- 운영체제(OS) 이식성이 낮다. (OS마다 실행할 수 있는 기계어가 다름-> 다시 컴파일해줘야 함)
- 0과 1로된 기계어로 번역되기 때문에 프로그램의 코드 유출 X -> 보안성이 좋음.
인터프리터(Python, Ruby, JavaScript)
- 프로그램 실행 시 한번에 한줄씩 번역
- 번역 시간은 빠르나 실행 속도는 느림( 실행 파일 없이 매번 번역을 하기에 )
- 컴파일러처럼 목적 코드를 만들지 않고 링킹 과정도 없기에 메모리 효율적.
- 컴파일러와 달리 코드 유출 위험이 큼.
- 인터프리터를 이용해 바로 읽기에 플랫폼에 독립적이고 이식성에 좋다. <-> 컴파일러는 플랫폼(하드웨어)에 종속적
- 코드 수정 용이(전체 코드 다시 컴파일할 필요 X)
- 별도의 실행 파일이 없이 바로 실행