Computer
- 저장하고 프로그램을 실행할 수 있는 알고리즘과 자료구조들로 이루어짐
- actual computer(hadware computer): 물리적 장치들로 구성된 컴퓨터
- soft-simulated computer: 다른 컴퓨터 상에서 작동하는 소프트웨어로 구성된 컴퓨터
컴퓨터 구성요소
- Date
- Primitive Operations
- Sequece Control
- Data Access
- Storage Management
- Operating Environment
Machine Cycle
- Fetch-Execute Cycle (또는 Fetch-Decode-Ececute Cycle)
Firmware Coomputers
- 이론적 기반
- Any precisely defined algorithm or data structure mat be realized in hardware
- Firmware 커뮤터의 일반적 형태
- 하드웨어와 이를 제어하기 위한 마이크로 프로그램
- 기타 용어
- Firmware: 하드웨어에 저장된 마이크로 프로그램
- Emulation: 소프트웨어적으로 마이크로 프로그램 수행을 흉내내는 것
Virtual Architecture
- Language Machine
- 이론적으로는 특정 언어를 하드웨어나 펌웨어 형태로 지원하는 것이 가능함 -> Language Processor
- LISP machine, BASIC machine, ...
- 고비용 -> General Purpose Processor + 언어 처리기(SW)
- 고급 언어의 구현 방법
- 번역(translation)
- 소프트웨어를 통한 시뮬레이션(interpreter)
언어 구현 구조
- 컴파일레이션 -> 런타임 속도 빠름, 오류 찾기 힘듬
- 인터프리테이션 -> 느림, 오류찾기 쉬움
가상기계
- 구현된 프로그래밍 언어는 그 자체로 가상기계로 볼 수 있다
- 자바 언어기계
- 자바 바이트코드 기계 (JVM)
- 실제 하드웨어
가상머신의 계층
응용프로그램 작성 시 사용하는 가상기계들은 계층을 이룬다.
언어 구현의 차이
- 언어 구현의 차이가 발생하는 이유를 가상기계의 관점에서 되짚어 볼 수 있다.
- 가상기계에 대한 오해(개념적인 차이): 언어가 제공해야 할 가상 기계를 구현자마다 다르게 이해할 수 있다. -> 구현할 언어의 정확한 정의가 필요
- 구현 플랫폼의 차이: 언어가 구현될 하드웨어 플랫폼이 다를 경우, 하드웨어에서 지원하는 기능의 차이로 인해 언어 구현이 달라질 수 있다. (예. hardware-suppored types)
- 구현 방법의 차이: 언어가 구현될 하드웨어가 같다고 하더라도 언어 기능을 제공하기 위한 구현 방법이 다를 수 있다.(예. calling conversion)
Binding
- 바인딩이란?
- 묶음
- 프로그램 구성요소와 속성의 묶음
- static binding
- 실행하기전에 Binding이 일어남
- 이미 정해져 버림
- dynamic Binding
- 실행중에 바인딩 일어남
- 보통 사용됨
- 느리지만 실행될 때 내가 원하는데로 바인딩 가능, 다양성큼
- 바인딩 시작
- 바인딩이 일어하는 시점
- 언어 구성요소마다 또 같은 구성요소라고 하더라도 속석에 따라 바인딩 시각이 다를 수 있다.
바인딩 시각의 종류
- 바인딩 시각을 아래와 같이 분류할 수 있음
- 언어 정의 시점(Language definition)
- 언어 구현 시점(Language implementation)
- 프로그램 번역 시점(Program translation; compile time)
- 링크시점(Link deit)
- 로드시점(Load)
- 프로그램 수행시점(Program execution; run time)
- Static Binding(Early Binding) 은 1~5에 해당
- Dynamic Binding(Late Binding) 은 6에 해당
바인딩 시각의 의미
- 바인딩 시각은 정확한 정보량과 관련이 있음
- 프로그램의 어떤 개체를 보았을 때 해당 개체에 대해 얼마나 정확한 정보를 말할 수 있는가 하는 문제
- C 프로그램에서 "if"를 만았다면? if는 키워드이고 제어 구조의 일종이다
- C 프로그램에서 "sum"이라는 이름을 만났다면? 함수이름인지 변수이름인지, 타입은 무엇인지, 함수라면 코드내용은 무엇인지, 변수라면 주소의 값은 무엇인지
- 특정 개체의 특정 속성에 대한 바인딩 시각은 언어에 따라 다를 수 있음
바인딩 시각의 선택과 결과
- Early Binding
- staticrh 유사하지만 동의어는 아니다.
- 번역 전에 파악할 수 있는 정보가 많음
- 실행파일을 효율을 높일 수 있도록 번역이 가능
- Compilation 방법과 잘 어울림
- Late Binding
- Dynamic과 유사하지만 동의어는 아니다.
- 프로그래머의 선택이 더 중요하게 됨
- 더 유연한 프로그래밍이 가능
- Interpretation 방법과 잘 어울림
'Computer Science > 프로그래밍언어론' 카테고리의 다른 글
Chapter5-2 Structured Data Types (0) | 2023.06.12 |
---|---|
Chapter5-1 Elementary Date Types (0) | 2023.04.20 |
Chapter4 Modeling Language Properties (0) | 2023.04.20 |
Chapter3 Language Translation Issues (0) | 2023.04.20 |
Chapter1 Language Design Issues (0) | 2023.04.18 |