프로그래밍/TIL(Today I Learned)

9강 영역과 수명(1)

가라멜 2018. 10. 14. 22:23
반응형

1. 블록과 영역

- 영역 : 프로그램에서 사용되는 식별자가 의미를 가질 수 있는 범위, 식별자의 사용이 허락되는 프로그램 범위

- Algol 60의 영역

- 복합문 : begin-end 를 사용하여 일련의 문장집합을 하나의 단위문장으로 표시하는 형태, 복합문 안에 변수, 부프로그램, 레이블과 같은 지역 식별자를 선언하고 그 묶인 부분만이 복합문의 영역이 됨

- 블록 : 내부에서 식별자를 선언하여 새로운 프로그램 환경을 설정할 수 있는 특별한 언어구조를 제공

- 선언문의 처리효과 

- 번역 시간 : 선언문을 만날 때

- 실행 시간 : 선언문이 있는 블록이 활성화 될 때

- 변수는 블록이 실행되는 동안에만 의미있는 값을 지님

- 프로그램의 수행제어가 블록을 벗어나면 할당되었던 기억장소가 회수됨

- 변수의 수명 : 변수에 의미있는 기억장소가 할당되어 있는 기간

-C언어 : 단일 함수 단일블록, 블록안에는 여러 개의 블록 내포가능


2. 정적 영역과 동적 영역

- 식별자의 영역 결정   

- 시점에 따른 구분

- 정적 영역 규칙 : 번역 시간에 결정, 일반적인 컴파일러 언어

- 동적 영역 규칙 : 실행 시간에 결정, LISP 초기 버전 등

- 블록 구조 언어(정적 내포 관계)

- 지역 변수 : 블록에서 선언된 변수와 형식 매개변수

- 전역 변수(비지역변수) : 블록을 내포하고 있는 외부 블록에서 선언된 변수

- 자유 변수 : 현 블록에서 정의되지 않은 변수, 현 블록을 내포하고 있는 가장 안쪽의 블록을 조사, 끝까지 선언이 없으면 오류로 판명

- 변칙 현상 : 정적 영역 규칙을 따름으로써 생기는 현상


3. 언어에서의 영역

- Fortran

- 모든 변수는 명시적 혹은 묵시적으로 선언되고 선언된 프로그램 내에서는 지역 변수가 됨

- 전역변수의 선언은 COMMON 문을 사용

- COMMON을 보유하는 다른 부프로그램을 통하여 공유

- PL/1

- BEGIN-END 그룹을 도입

- 모든 변수를 반드시 명시적으로 선언하지 않아도 되기 때문에 문제점이 나타남


반응형

'프로그래밍 > TIL(Today I Learned)' 카테고리의 다른 글

11강 기억장소 할당  (0) 2018.10.16
10강 영역과 수명(2)  (0) 2018.10.14
8강 자료형(2)  (0) 2018.10.14
6강 Context-free 문법의 효율화  (0) 2018.10.14
7강 자료형  (0) 2018.10.11