- 컴퓨터 : 프로그램을 저장하여 실행할 수 있는 알고리즘과 자료의 총괄 집합
- 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)
- 컴파일러 (Compiler)
-
인터프리터 기법 : 고급 언어 기계를 다른 기계에서 소프트웨어로 시뮬레이션하는 방법
- 고급 언어 원시 프로그램 + 입력 -> 인터프리터 -> 결과
-
번역기 종류와 인터프리터
- 번역기
- 고급 언어 프로그램 -> 컴파일러 -> 기계어, 준기계어(목적 모듈)
- 어셈블러 프로그램 -> 어셈블러 -> 기계어, 준기계어(목적 모듈)
- 목적 모듈(준기계어) -> 링커(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
- 구현 방법
- 번역기가 중간 언어를 생성 후, 중간 언어로 작성된 프로그램을 소프트웨어 인터프리터로 실행 (하이브리드 방법)
- 컴파일러 방법보다 실행 시간이 비효율적이나 사용자 적응성을 제공한다.
Implementation Method of Programming Languages
Apr 17, 2019