프로그래밍언어론 7화를 듣고 배운내용
변수(Variable)
데이터를 저장하거나 나중에 사용할 수 있도록 메모리를 추상화한 것
변수의 속성
변수명: 변수 이름, 식별자
타입: 변수에 저장할 수 있는 데이터 집합의 종류
주소: 변수가 사용하는 메모리 위치
값: 변수에 저장된 데이터, 바뀔 수 있다.
바인딩(Binding)
언어 구성 요소의 속성들이 구체적으로 결정되는 것
let x12
x12 = 1 + 5 * 2
이런 의미
- 변수명을 x12로 바인딩 하겠다.
- +을 덧셈 연산자로, *을 곱셈 연산자로 바인딩 하겠다.
- x12 값을 11로 바인딩 하겠다.
바인딩 일어나는 시점
- 언어의 정의 시점
- 언어의 구현 시점
- 컴파일 시점
- 링크 시점
- 로드 시점
- 프로그램 수행 시점
변수를 바인딩 하는 것은
변수명, 타입, 주소, 값을 바인딩해서 사용하는 것이다.
변수명 바인딩 없이 사용되는 변수 존재
예) C언어 포인터
바인딩 방법
변수명 바인딩
- 명시적 선언
- 선언문에 명시된 이름으로 변수명을 바인딩
- 묵시적 선언
- 선언문 x
- 대입문에 변수 이름에 바로 바인딩
타입 바인딩
- 명시적 선언
- 명시된 타입으로 변수 타입 바인딩
- 묵시적 선언
- 대입할 값으로 타입 바인딩
- Fortran은 시작 알파벳에 따라 타입 바인딩
- 정적 바인딩
- 컴파일 시점에 구문 분석을 통해 타입 판단
- 명시적, 묵시적 선언 모두 가능
- 동적 바인딩
- 변수의 타입을 고정하지 않음
- 대입할 값에 맞추어 계속 변화
- APL, SNOBO 4, Python, JavaScript 등
주소 바인딩
- 메모리가 할당되어 변수의 주소가 메모리의 주소로 바인딩
- 할당: 필요한 만큼의 공간을 변수에 배정
- 해제: 할당된 메모리를 변수로부터 회수
- 변수의 수명
- 변수가 메모리를 할당받고 있는 기간
- 자동 할당
- 선언을 통해 변수의 타입에 맞추어 필요한 메모리 할당
- 수동 할당
- 프로그래머가 지정한 크기만큼 메모리 할당
- 정적 바인딩
- 로드 시점에 정적 세그먼트의 주소를 바인딩
- 정적 바인딩 하는 것을 정적 변수라고 불러준다.
- 수명: 프로그램 수행 전체
- 예) Fortran
- 동적 바인딩
- 프로그램 수행중 변수가 사용되는 시점에 동적 세그먼트의 주소 바인딩
- 스택 동적 변수
- 스택에 메모리를 할당
- 힢 동적 변수
- 동적 세그먼트 중 힢에 메모리 할당
- 수동 할당을 이용하는 변수
- 동적 타입 바인딩을 하는 변수
'Computer Science > Programming :: 프로그래밍언어론' 카테고리의 다른 글
프로그래밍언어론 강의 9화 :: 타입, 원시타입, 사용자정의타입, 복합타입 (0) | 2021.10.19 |
---|---|
프로그래밍언어론 강의 8화 :: 변수 영역, 정적 영역, 동적 영역, 이름 공간 (0) | 2021.10.12 |
프로그래밍언어론 강의 6화 :: 언어 구현, 인터프리터, 컴파일러 (0) | 2021.09.28 |
프로그래밍언어론 강의 5화 :: 구문 분석 (0) | 2021.09.11 |
프로그래밍언어론 강의 4화 :: 구문론과 의미론 (0) | 2021.09.09 |