프로그래밍[Univ]/프로그래밍 언어론

[프로그래밍 언어론] Implementation(구현)

Cloud Travel 2011. 9. 16. 15:23
각각의 언어는 컴파일러방식 또는 인터프리터 방식으로 재구현 되어 기계로 전달된다.

1. 컴파일 방식
 - 프로그램 소스가 컴파일러에 의해 다음 과정을 거치면서 기계언어로 변경된다.
 ⓐ 프로그램 소스코드 컴파일 실행
 ⓑ 어휘 분석(분법적으로 의미가 있는 최소한의 단위로 쪼겜)
 ⓒ 문법 분석(문법적으로 타당한지를 판단)
 ⓓ 중간코드 생성 및 지속적인 최적화 실시
 ⓔ 기계어 생성
 - 과정에서 보면 기계어로 바로 변경되는 것이아니라 중간에 중간 코드를 생성한다.
 ⓐ 중간코드 : 고차원 언어와 저급 언어의 중간단계코드로 어느 특정 기계에 종속되지 않는 언어
                  : 기계어는 해당 언어에 종속되는 반면에 중간코드는 기계와 독립적이다.
                  >> 즉, 중간코드단계를 가지고 여러 기계에서 사용이 가능하다.
 - 장점 : 소스코드가 변경이 없다면 컴파일된 기계어를 사용하여 반복적 실행이 가능하다.
            수행이 빨라진다.
 - 단점 : 어휘/문법 분석과 기계어 생성까지의 시간이 오래걸린다.

2. 순수 인터프리터 방식
 - 프로그램 소스가 다른 언어의 힘을 빌려서 실행 되는 형태
 - 장점 : 소스가 실행됨과 동시에 바로바로 오류 메세지가 나와서 어느 곳에서 오류가 발생했는지 알기 쉽다.
            (디버깅에 이로움)
 - 단점 : 프로그램 실행시 소스 전체가 다시 해석되어야 하기때문에 실행 속도가 느리다.

3. 하이브리드 방식
 - 말 그대로 1과 2를 합쳐 놓은 방식이다.
 - 중간코드생성까지 컴파일러 방식을 사용하며,
   중간 코드를 기계어로 변환 시키는 것이아니라 특정 매체에 의해 실행 하는 방식
 - 컴파일러 방식에 비해 컴파일 시간이 반으로 줄어들었으며, 기계어와 유사한 중간코드의 실해응로 속도가 향상
 ex) Java
   자바코드 - 컴파일 - 바이트 코드생성(중간코드) - JVM에 의해 기계와 통신하며 프로그램 실행

----------------------------------------------------------------------------------------------------