목차
1. compiler란 ?
2. Interpreter 란?
3. interpreter와 compiler의 차이점
4.interpreter와 compiler의 장.단점
5. 기타. 최근의 동향
2. Interpreter 란?
3. interpreter와 compiler의 차이점
4.interpreter와 compiler의 장.단점
5. 기타. 최근의 동향
본문내용
처리하기 때문에 많은 시간이 걸리기도 한다.
●인터프리터의 시행 시간은 컴파일러 방법에 비해 비효율적이다.
● 한 줄의 입력 시 프로그램이 때로는 몇 백 개의 기계어로 번역되기 때문에 그 프로그램은 큰 기억용량을 요구한다. 특히 입출력 명령은 입출력 형식을 위한 코드 외에 기계 상태 파악코드로 인해 큰 기억 장치가 요구된다.
대표적인 언어
GW BASIC
LISP
포스트스크립
FORTRAN
COBOL
PASCAL
C
5. 기타. 최근의 동향
최근에 사용되는 프로그래밍 언어 중 비쥬얼베이직은 개발환경은 인터프리터방식이지만 실행환경은 인터프리터/컴파일방식 두 가지를 모두 지원한다. 일반적으로 컴파일방식을 쓴다.
인터프리터는 애초에는 소스를 읽어서 그것을 실행하는 구조였다. gwbasic이 대표적이다.
그러다가 줄단위로 미리 중간컴파일을 해두는 방식으로 바뀌었다가(qb) vb처럼 소스의 바뀐 부분만 재컴파일 하는 방식, 그리고 java에서 처럼 소스 전체를 중간단계로 컴파일 하는 경우가 있다. 이 모든 경우의 공통점은 소스를 기계어로 컴파일 하는 것이 아니라 인터프리터가 해석하기 좋게 컴파일 한다는 점이다.
첫째로는 속도문제이다. 소스의 일부분만 변경했을 때 소스를 인터프리터가 해석하는 방식으로 변형만 하면 되므로 그 부분만 컴파일 하기가 수월하다.
둘째로는 디버깅이 편하기 때문이다. 컴파일언어의 경우 구문상의 오류는 편집기에서 잡아줄 수 있지만 디버깅도중 소스를 수정하지 못한다. 하지만 컴파일 언어는 디버깅 중에 소스를 수정해도 수정된 소스대로 디버깅이 가능하다.
셋째로는 호환성이 좋아지기 때문이다. 이 예는 특히 자바언어를 보시면 된다. 자바를 컴파일하면 기계어코드를 만드는 것이 아니라 os와 독립적인 논리적인 코드를 생성한다. 그리고 각 OS에 맞는 자바머신(일종의 인터프리터)이 이 코드를 해석하며 실행한다. 물론 요즘은 이 자바머신이 해석한 후 그것을 기계어로 일부 바꾸어두어 실행속도를 높이기도 한다. 호환성 하나로 자바가 인터넷시대를 독점하다시피 하는 점만 보아도 얼마나 큰 장점인지 알 수 있다.
넷째로는 컴파일시간이 빠르다. 이것은 첫 번째 이유와는 조금 성격이 다른데 VB의 경우 컴파일 옵션에서 인터프리터방식을 선택해보면 그 속도가 아주 빠르다는 것을 알 수 있다. 인터프리터가 이해하기 위한 좀더 소스와 가까운(기계어와 먼) 컴파일을 하기 때문이다. 하지만 이것은 보통 개발과정에서만 하고 실제로 배포할 때는 이 옵션을 쓰지 않는다. VB의 경우 기계어로 컴파일 하더라도 런타임 라이브러리는 필수이다.
참고자료
1. 9급 문제완성 프로그래밍언어론 (기술직공무원, 2008)
김연수| 서원각| 2007.04.30 | 318p
2. 프로그래밍 언어론
원유헌| 정익사| 2003.09.10 | 534p
3. 컴파일러 입문 (an introduction compiler)
오세만| 정익사| 2006.01.15 | 614p
4. 컴파일러 제작 원리와 실제
Kenneth C. Louden| 김재훈 역| 2005.02.25
●인터프리터의 시행 시간은 컴파일러 방법에 비해 비효율적이다.
● 한 줄의 입력 시 프로그램이 때로는 몇 백 개의 기계어로 번역되기 때문에 그 프로그램은 큰 기억용량을 요구한다. 특히 입출력 명령은 입출력 형식을 위한 코드 외에 기계 상태 파악코드로 인해 큰 기억 장치가 요구된다.
대표적인 언어
GW BASIC
LISP
포스트스크립
FORTRAN
COBOL
PASCAL
C
5. 기타. 최근의 동향
최근에 사용되는 프로그래밍 언어 중 비쥬얼베이직은 개발환경은 인터프리터방식이지만 실행환경은 인터프리터/컴파일방식 두 가지를 모두 지원한다. 일반적으로 컴파일방식을 쓴다.
인터프리터는 애초에는 소스를 읽어서 그것을 실행하는 구조였다. gwbasic이 대표적이다.
그러다가 줄단위로 미리 중간컴파일을 해두는 방식으로 바뀌었다가(qb) vb처럼 소스의 바뀐 부분만 재컴파일 하는 방식, 그리고 java에서 처럼 소스 전체를 중간단계로 컴파일 하는 경우가 있다. 이 모든 경우의 공통점은 소스를 기계어로 컴파일 하는 것이 아니라 인터프리터가 해석하기 좋게 컴파일 한다는 점이다.
첫째로는 속도문제이다. 소스의 일부분만 변경했을 때 소스를 인터프리터가 해석하는 방식으로 변형만 하면 되므로 그 부분만 컴파일 하기가 수월하다.
둘째로는 디버깅이 편하기 때문이다. 컴파일언어의 경우 구문상의 오류는 편집기에서 잡아줄 수 있지만 디버깅도중 소스를 수정하지 못한다. 하지만 컴파일 언어는 디버깅 중에 소스를 수정해도 수정된 소스대로 디버깅이 가능하다.
셋째로는 호환성이 좋아지기 때문이다. 이 예는 특히 자바언어를 보시면 된다. 자바를 컴파일하면 기계어코드를 만드는 것이 아니라 os와 독립적인 논리적인 코드를 생성한다. 그리고 각 OS에 맞는 자바머신(일종의 인터프리터)이 이 코드를 해석하며 실행한다. 물론 요즘은 이 자바머신이 해석한 후 그것을 기계어로 일부 바꾸어두어 실행속도를 높이기도 한다. 호환성 하나로 자바가 인터넷시대를 독점하다시피 하는 점만 보아도 얼마나 큰 장점인지 알 수 있다.
넷째로는 컴파일시간이 빠르다. 이것은 첫 번째 이유와는 조금 성격이 다른데 VB의 경우 컴파일 옵션에서 인터프리터방식을 선택해보면 그 속도가 아주 빠르다는 것을 알 수 있다. 인터프리터가 이해하기 위한 좀더 소스와 가까운(기계어와 먼) 컴파일을 하기 때문이다. 하지만 이것은 보통 개발과정에서만 하고 실제로 배포할 때는 이 옵션을 쓰지 않는다. VB의 경우 기계어로 컴파일 하더라도 런타임 라이브러리는 필수이다.
참고자료
1. 9급 문제완성 프로그래밍언어론 (기술직공무원, 2008)
김연수| 서원각| 2007.04.30 | 318p
2. 프로그래밍 언어론
원유헌| 정익사| 2003.09.10 | 534p
3. 컴파일러 입문 (an introduction compiler)
오세만| 정익사| 2006.01.15 | 614p
4. 컴파일러 제작 원리와 실제
Kenneth C. Louden| 김재훈 역| 2005.02.25
소개글