every/study

변수, 바인딩, 식 및 제어문

@s0hy20n_o 2024. 11. 9. 23:44

Chapter 06 변수, 바인딩, 식 및 제어문

변수

이름, 속성(attribute)의 집합, 참조(reference), 값(value)의 4요소로 구성

  • 속성: 자료형, Byte 수 등
  • 참조: RAM에서 저장위치를 가르킴 - address, location
  • 값: 기억장소에 저장된 실제 값

속성의 세부사항

제한된 길이의 문자나 숫자로 구성된 변수의 한 요소(component)

변수, 함수명, 프로그램 이름 등

바인딩 종류 설명
정적 바인딩(Static binding) 컴파일 시 이미 모든 성질들이 결정됨
준 동적 바인딩(Semi Dynamic binding) C 언어에서 변수의 성질이 컴파일 시 결정되지만, 기억장소 할당은 실행 시간에 결정됨
동적 바인딩(Dynamic binding) 실행시간에 성질이 결정됨

예시:

  • X : = 3.14159
  • 이름: X
  • 속성: 원주율, 실수
  • 참조: 값이 저장된 위치 / 주소 값
  • 값: 3.14159

Binding

이름에 어떤 속성을 연결하는 과정. 프로그래밍 기본 단위에 여러 속성 중 일부를 연결하여 결정하는 행위.

단위: 변수 속성 예: int, float, char, string, bool 등(자료형)

기본적인 속성 바인딩 메커니즘

이름(name) 또는 식별자(identifier) 사용

예시:

  • const n = 5; 이름 n에는 두 개의 속성인 상수와 값 5가 바인딩
  • x: integer; 이름 x에 변수와 정수라는 두개의 속성이 바인딩
  • x = 12; 변수 x에 새로운 속성으로 값 2가 바인딩

바인딩 시간(binding time)

바인딩(속성)이 이름에 연결되고 계산되는 과정이 발생되는 시간

바인딩 시간 종류

  • 정적 바인딩(Static binding): 언어 정의 시간, 언어 구현 시간, 번역 시간
  • 동적 바인딩(Dynamic binding): 실행 시간

예시:

int a

속성:

  • 정적 바인딩: 이름과 자료형이 번역 시간에 결정
  • 준 동적 바인딩: 기억장소가 할당
  • 동적 바인딩: 함수 호출 시 지역변수가 stack에 할당

바인딩 시간의 중요성

  1. 실행 시간(Dynamic): 프로그램 실행 시점에서 발생하는 바인딩(dynamic binding)
    변수 값 변경, 변수와 자료 구조에 기억장소 할당 등
  2. 번역 시간(Static): 언어의 번역하는 시점, 번역 시간에 발생하는 바인딩
  3. 언어 구현 시간(Static): 형식 매개변수와 실제매개변수간의 바인딩, 지역변수에 대한 기억장소 할당
  4. 언어 정의 시간(Static): 언어 규칙에서 정의되는 고정적인 바인딩
상수 설명 예시
상수 10 표현 방법과 의미 배정값: 성질과 의미

바인딩 시간의 차이에서 발생하는 바인딩 시간의 중요성

언어의 특성상 실행 효율성을 높이기 위해 바인딩 시간의 차이에서 성능 차이가 발생할 수 있다.

언어 구현 시간에서 가장 큰 바인딩 차이를 가진 언어:

예시:

  • 배열의 크기를 정하는 순간에 크기를 결정하는 예시 포트란의 저장
  • 배열의 크기가 정해지지 않을 경우의 자료형 바인딩 Snobol4가 적용

바인딩 유형의 비교

  • 정적 바인딩(Static binding): 효율성(efficiency) 증가
  • 동적 바인딩(Dynamic binding): 유연성(flexibility) 증가

동적 바인딩을 하기 위한 기능

  • 동적 할당과 함께 (변수 값이 들어있는 함수가 실행될 때만)
  • 바인딩의 종류는 이름과 속성간의 관계 결정되는 시점과 관련이 있으며 성질을 가지게 됨

'every > study' 카테고리의 다른 글

변수, 바인딩, 식 제어문(3)  (0) 2024.11.11
변수, 바인딩, 식 제어문(2)  (0) 2024.11.10
컴파일러 개요  (0) 2024.11.08
프로그래밍 언어의 구문과 구현 기법  (6) 2024.11.07
프로그래밍 언어 설계  (0) 2024.11.06