쌓고 쌓다
컴파일러 & 인터프리터 본문
주요 번역 방식 : 컴파일러, 인터프리터, 어셈블러(어셈블리어를 번역)
컴파일러와 인터프리터는 고급언어에서 기계어로 바꿈.
컴파일러(C, C++, JAVA)
- 프로그램 전체 코드를 스캔하여 모두 기계어로 번역
- 매번 번역할 필요는 없다. (실행 파일을 만들기 때문에) -> 인터프리터보다 실행시간이 빠름.
- 하지만, 전체를 스캔하기에 초기 스캔은 시간이 걸린다.
- 코드를 수정하면 컴파일을 다시 해야 함.
- 고급 언어를 기계어로 번역하는 과정에서 오브젝트 파일을 만드는데 이 파일들을 묶어 하나의 실행파일로 만드는 링킹 작업이 필요. -> 많은 메모리가 필요하다.
- 운영체제(OS) 이식성이 낮다. (OS마다 실행할 수 있는 기계어가 다름-> 다시 컴파일해줘야 함)
- 0과 1로된 기계어로 번역되기 때문에 프로그램의 코드 유출 X -> 보안성이 좋음.
인터프리터(Python, Ruby, JavaScript)
- 프로그램 실행 시 한번에 한줄씩 번역
- 번역 시간은 빠르나 실행 속도는 느림( 실행 파일 없이 매번 번역을 하기에 )
- 컴파일러처럼 목적 코드를 만들지 않고 링킹 과정도 없기에 메모리 효율적.
- 컴파일러와 달리 코드 유출 위험이 큼.
- 인터프리터를 이용해 바로 읽기에 플랫폼에 독립적이고 이식성에 좋다. <-> 컴파일러는 플랫폼(하드웨어)에 종속적
- 코드 수정 용이(전체 코드 다시 컴파일할 필요 X)
- 별도의 실행 파일이 없이 바로 실행
'Git & CS' 카테고리의 다른 글
그레이 코드(Gray Code) (0) | 2022.09.21 |
---|---|
BCD 코드와 3초과 코드 (0) | 2022.09.21 |
메모리 구조(Code, Data, Heap, Stack) (2) | 2022.09.19 |
진법 변환 방법 + 소수점 포함 (2진수<->8진수<->10진수<->16진수) (0) | 2022.09.18 |
저급언어 & 고급언어 (0) | 2022.09.07 |
Comments