Computer Science/Programming :: 프로그래밍언어론

프로그래밍언어론 강의 7화 :: 변수, 바인딩

HJPlumtree 2021. 10. 12. 10:12

프로그래밍언어론 7화를 듣고 배운내용

 

 

변수(Variable)

데이터를 저장하거나 나중에 사용할 수 있도록 메모리를 추상화한 것

 

 

변수의 속성

변수명: 변수 이름, 식별자

타입: 변수에 저장할 수 있는 데이터 집합의 종류

주소: 변수가 사용하는 메모리 위치

값: 변수에 저장된 데이터, 바뀔 수 있다.

 

 

바인딩(Binding)

언어 구성 요소의 속성들이 구체적으로 결정되는 것

let x12
x12 = 1 + 5 * 2

이런 의미

  • 변수명을 x12로 바인딩 하겠다.
  • +을 덧셈 연산자로, *을 곱셈 연산자로 바인딩 하겠다.
  • x12 값을 11로 바인딩 하겠다.

 

 

바인딩 일어나는 시점

  • 언어의 정의 시점
  • 언어의 구현 시점
  • 컴파일 시점
  • 링크 시점
  • 로드 시점
  • 프로그램 수행 시점

 

 

변수를 바인딩 하는 것은

변수명, 타입, 주소, 값을 바인딩해서 사용하는 것이다.

 

변수명 바인딩 없이 사용되는 변수 존재

예) C언어 포인터

 

 

바인딩 방법

변수명 바인딩

  • 명시적 선언
    • 선언문에 명시된 이름으로 변수명을 바인딩
  • 묵시적 선언
    • 선언문 x
    • 대입문에 변수 이름에 바로 바인딩

 

타입 바인딩

  • 명시적 선언
    • 명시된 타입으로 변수 타입 바인딩
  • 묵시적 선언
    • 대입할 값으로 타입 바인딩
    • Fortran은 시작 알파벳에 따라 타입 바인딩
  • 정적 바인딩
    • 컴파일 시점에 구문 분석을 통해 타입 판단
    • 명시적, 묵시적 선언 모두 가능
  • 동적 바인딩
    • 변수의 타입을 고정하지 않음
    • 대입할 값에 맞추어 계속 변화
    • APL, SNOBO 4, Python, JavaScript 등

 

주소 바인딩

  • 메모리가 할당되어 변수의 주소가 메모리의 주소로 바인딩
    • 할당: 필요한 만큼의 공간을 변수에 배정
    • 해제: 할당된 메모리를 변수로부터 회수
  • 변수의 수명
    • 변수가 메모리를 할당받고 있는 기간
  • 자동 할당
    • 선언을 통해 변수의 타입에 맞추어 필요한 메모리 할당
  • 수동 할당
    • 프로그래머가 지정한 크기만큼 메모리 할당
  • 정적 바인딩
    • 로드 시점에 정적 세그먼트의 주소를 바인딩
    • 정적 바인딩 하는 것을 정적 변수라고 불러준다.
    • 수명: 프로그램 수행 전체
    • 예) Fortran
  • 동적 바인딩
    • 프로그램 수행중 변수가 사용되는 시점에 동적 세그먼트의 주소 바인딩
    • 스택 동적 변수
      • 스택에 메모리를 할당
    • 힢 동적 변수
      • 동적 세그먼트 중 힢에 메모리 할당
      • 수동 할당을 이용하는 변수
      • 동적 타입 바인딩을 하는 변수

 

 

binding tags by Angèle Kamp #unsplash