Implementation Method of Programming Languages

Apr 17, 2019


  • 컴퓨터 : 프로그램을 저장하여 실행할 수 있는 알고리즘과 자료의 총괄 집합
    • Actual Computer(Hardware), Software Simulated Computer (ex : COBOL Computer(가상 컴퓨터) -> 번역기 구성)
  • 번역된 프로그램 실행 -> Hardware + Software (Virture Computer)
  • 이론적으로 고급 언어를 기계 언어로 하는 Hardware 구성 가능 (속도, 적응성, 비용 증가)-> 저급 수준의 언어를 기계 언어로 하는 컴퓨터 제공
  • 사용자 : 고급 언어 프로그래밍 -> 기계 : 저급 언어 프로그래밍 (언어 구현)
  • 번역 기법 : source(원시 언어) -> translator -> target(목적 언어)
    • 고급 언어 -> 컴파일러 -> 목적 모듈 -> 링커 -> 로드 모듈 -> 로더 + 입력 -> 기계어 -> 결과
    • 어셈블리 언어 -> 어셈블러 -> 목적 모듈 -> 링커 -> 로드 모듈 -> 로더 + 입력 -> 기계어 -> 결과
  • 번역기의 종류

    • 컴파일러 (Compiler)
      • 원시 언어 : 고급 언어
      • 목적 언어 : 실제 기계 언어에 가까운 저급 언어
      • 저급 언어에는 준기계어 형태 또는 어셈블리 언어
    • 어셈블러 (Assembler)
      • 원시 언어 : 어셈블리 언어
      • 목적 언어 : 준기계어 형태
    • 링키지 에디터 (Linkage editor)
      • 여러 대의 프로그램(재배치 형태 기계어)을 묶어서 로드 모듈을 생성
      • 로드 모듈 : 어느 정도 실행 가능한 하나의 기계어 프로그램
    • 로더 (Loader) : 기계어 프로그램(로드 모듈)을 실제 실행 가능한 기꼐어로 번역해서 주기억장치에 적재
    • 프리프로세서 (Preprocessor)
      • 원시 언어와 목적 언어가 모두 고급 언어인 번역기
      • 고급 언어 프로그램을 다른 고급 언어로 번역 후, 출력된 고급 언어를 이미 구현된 방법으로 실행시킬때 사용
      • 고급언어에 대한 언어를 확장하여 구현 시에 유용하다. (C++, Concurrent C)
  • 인터프리터 기법 : 고급 언어 기계를 다른 기계에서 소프트웨어로 시뮬레이션하는 방법

    • 고급 언어 원시 프로그램 + 입력 -> 인터프리터 -> 결과
  • 번역기 종류와 인터프리터

    • 번역기
      • 고급 언어 프로그램 -> 컴파일러 -> 기계어, 준기계어(목적 모듈)
      • 어셈블러 프로그램 -> 어셈블러 -> 기계어, 준기계어(목적 모듈)
      • 목적 모듈(준기계어) -> 링커(Linker, Linkage Editor) -> 로드 모듈
      • 로드 모듈 -> 로더(Relocating Loader) -> 실행 가능 기계어
      • 고급 언어 프로그램 -> 프리프로세서 -> 고급 언어 프로그램
    • 인터프리터
      • 고급 언어 프로그램 -> 인터프리터 -> 결과
  • 인터프리터 기법과 번역 기법의 비교

    • 번역기 : 입력 프로그램과 동일한 의미의 목적 언어 프로그램 생성
    • 인터프리터 : 직접 입력 프로그램을 실행하는 것
    • 순수 번역 기법 (Assembly 등 저급 언어 가능)
    • 순수 시뮬레이션 기법 (JCL, APL 등)
    • 번역 효율적인 부분(반복 수행부와 수식 계산 등) 존재
    • 원시 코드의 simulation이 효율적인 부분(I/O routine 등) 존재
    • 순수 번역 기법이나 순수 시뮬레이션 기법은 실제로 거의 존재하지 않음.
    • 시뮬레이션과 번역의 비교
  • 번역 기법의 장단점

    • 장점 : 실행 시간 효율성 제공 (한 번 디코딩으로 반복 실행)
    • 단점 : 번역된 프로그램이 큰 기억 장치 요구(I/O routine 등)
  • 인터프리터 기법의 장단점

    • 번역 기법과 장단점이 반대이다.
    • 사용자 적응성(Flexibility) 제공
  • 하이브리드 기법

    • 프로그램을 실행시키기 쉬운 형태로 번역한 후, 그 번역된 형태의 프로그램을 디코드하여 시뮬레이션으로 실행
    • 현 대부분의 인터프리터 언어가 이 방법을 따른다. 중간 형태의 코드가 저급이면 번역 기법으로 간주되기도 한다.
    • 원시 프로그램 -> 중간 번역 -> 중간 코드 + 입력 -> 인터프리터 -> 실행 결과
  • 컴파일러 언어

    • FORTRAN, ALGOL, PL/I, Pascal, COBOL, C, Ada
    • 컴파일러 방법의 장점 : 기계어로 번역된 것을 하드웨어 인터프리터가 디코드하여 실행하기 떄문에 프로그램 실행이 빠르다. (효율성)
  • 인터프리터 언어

    • LISP, SNOBOL 4, APL, PROLOG
    • 구현 방법
      • 번역기가 중간 언어를 생성 후, 중간 언어로 작성된 프로그램을 소프트웨어 인터프리터로 실행 (하이브리드 방법)
      • 컴파일러 방법보다 실행 시간이 비효율적이나 사용자 적응성을 제공한다.