[프로그래밍 언어론] 7강 - 변수와 바인딩

2026. 9. 2. 19:51·방송통신대학교/📝프로그래밍 언어론

📌 개요

🔑 학습 키워드

┗  변수 정의 및 속성(변수명, 주소, 값, 타입)

┗  변수 -> 배런 표기법

┗  바인딩 정의

┗  바인딩 시각 -> 동적 바인딩, 정적 바인딩

┗  변수의 수명 -> 할당, 해제 -> 자동 할당, 수동 할당

┗  정적 세그먼트, 동적 세그먼트

┗  변수 종류: 정적 변수, 동적 변수(스택 동적 변수), 힙 동적 변수

 

💡 1. 변수의 개요

[ 변수 ]

┗  데이터를 저장하거나 나중에 사용할 수 있도록 기억하는 객체

┗  컴퓨터 하드웨어의 메모리를 추상화한 것

┗  변수의 속성: 변수명, 타입, 주소, 값

- '변수명': 변수의 이름 -> 식별자
- '타입': 변수에 저장할 수 있는 데이터 집합의 종류
- '주소': 변수가 사용하는 메모리의 위치
- '값': 변수에 저장된 데이터 -> 수행 시간 동안 바뀔 수 있음

┗  배런의 표기법: 하나의 변수를 표현하는 방법임.

 

💡 2. 바인딩

[ 바인딩 ]

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

 

[ 바인딩 시각 ]

┗  '구성 요소'와 '속성' 사이의 바인딩이 일어나는 시점

┗  언어의 구성 요소 혹은 속성에 따라 바인딩 시각은 다를 수 있음.

- '언어의 정의 시점': 연산자의 의미, 수의 의미 등
- '언어의 구현 시점': 타입(int 등)의 자릿수, 수의 표기법 등
- '컴파일 시점': 변수의 타입 등
- '링크 시점': 라이브러리 함수(printf 등)의 내용 등
- '로드 시점': 변수의 주소 등
- '프로그램 수행 시점': 변수의 값 등

[ "정적 바인딩" , "동적 바인딩" ]

┗  정적 바인딩: 프로그램 수행 시점에 바인딩의 변화가 없는 경우

- '바인딩 시각'이 '언어의 정의 시점'부터 '로드 시점'까지를 나타냄.
- 프로그램 수행 시간의 효율성 높음 -> 미리 컴파일을 해두어 정적이라 효율성 업.
- '컴파일' 방법에 적합

┗  동적 바인딩: 프로그램 수행 시점에 바인딩되거나 해지되는 경우

- '바인딩 시각'이 '프로그램 수행 시점'
- 유연한 프로그래밍 가능
- '인터프리터' 방법에 적합

 

💡 3. 변수의 바인딩

[ 변수의 바인딩 ]

┗  변수의 속성이 구체적으로 결정되는 것

┗  프로그램 수행 중에 변수가 사용되기 위해서는 변수의 속성이 바인딩되어야 함

- '변수의 속성': 변수명, 탕입, 주소, 값

┗  예외적으로 변수명 바인딩 없이 사용할 수 있는 변수도 존재

┗  일반적인 변수의 속성 바인딩 순서:

'변수명' 바인딩 -> '타입' 바인딩 -> '주소' 바인딩 -> '값' 바인딩

 

[ 변수명 바인딩 ]

┗  바인딩 방법: "명시적 선언", "묵시적 선언" -> 2가지 존재

- '명시적 선언': 선언문에 명시된 이름으로 변수명 바인딩
-> ex) int a = 1;
- '묵시적 선언': 선언문 없이 대입문 등에 처음 사용된 이름으로 변수명 바인딩
-> ex) x = 10; // 선언 없이 사용

 

[ 타입 바인딩 ]

┗  바인딩 방법: "명시적 선언", "묵시적 선언"

- '명시적 선언': 선언문에 명시한 타입으로 변수의 타입을 바인딩
- '묵시적 선언': 변수명이나 대입할 값으로부터 정해지는 타입으로 변수의 타입 바인딩
-> ex) Fortran: 변수명이 i~n으로 시작하는 변수는 정수형으로 바인딩 하는 예 존재

┗  바인딩 시각: "정적 바인딩", "동적 바인딩"

- '정적 바인딩': 명시적 선언과 묵시적 선언 모두 컴파일 시점에 구문 분석을 통해 타입 판단 가능
- '동적 바인딩': 변수의 타입을 고정하지 않고 대입할 값에 맞춰 수행 시점에 타입 계속 변환
-> ex) Python, APL, SNOBOL 4 등 -> 동적 바인딩 지원

 

[ 주소 바인딩 ]

┗  변수가 사용할 메모리가 할당되어 변수의 주소가 그 메모리의 주소로 바인딩되는 것

- '할당': 가용한 메모리 중 필요한 만큼의 공간을 변수에 배정
- '해제': 할당된 메모리를 변수로부터 회수

┗  변수의 수명: 변수가 메모리를 할당받고 있는 기간

- 변수의 주소가 바인딩된 기간과 동일함.

┗  바인딩 방법: 자동 할당, 수동 할당

- '자동 할당': 선언을 통해 정해진 변수의 타입에 맞추어 필요한 메모리를 할당
-> 상황/언어에 따라 정적 세그먼트 또는 동적 세그먼트 활용

- '수동 할당': 프로그래머가 '지정한 크기'만큼의 '메모리'를 할당
-> 동적 세그먼트의 힙 활용

┗  바인딩 시각: 정적 바인딩, 동적 바인딩

- '정적 바인딩': '로드 시점'에 정적 세그먼트의 주소를 바인딩
-> ex) 초기 Fortran 이 대표적

- '동적 바인딩': 프로그램 수행 중 변수가 사용되는 시점에 동적 세그먼트의 주소를 바인딩

┗  정적 변수: 정적 주소 바인딩을 하는 변수

- 프로그램 실행 전 메모리 주소 결정 -> 프로그램 끝날 때까지 동일한 메모리 공간 사용하는 변수
- '변수의 수명': 프로그램 수행 전체
-> 즉, 자바 static 과 같이 프로그램 끝날 때 해제됨.

┗  동적 변수: 동적 주소 바인딩을 하는 변수

- 프로그램 실행 중에 필요한 시점에 메모리 주소가 결정되는 변수
- '스택 동적 변수': 동적 세그먼트 중 스택에서 메모리를 할당
- 자동 할당을 이용하는 변수 중 정적 변수가 아닌 경우
- 필요한 시점에 자동으로 할당/해제
- ex) 지역변수

┗  힙 동적 변수: 동적 세그먼트 중 힙에서 메모리를 할당

[ '수동 할당을 이용하는 변수' ]
- 프로그래머가 지정한 시점(malloc, new 등)에 할당
- 프로그래머가 지정한 시점(free, delete 등)에 해제
- 동적으로 타입 바인딩을 하는 언어의 변수

'방송통신대학교 > 📝프로그래밍 언어론' 카테고리의 다른 글

[프로그래밍 언어론] 6강 - 프로그래밍 언어의 구현  (0) 2026.09.02
[프로그래밍 언어론] 5강 - 구문 분석  (0) 2026.09.02
[프로그래밍 언어론] 4강 - 구문론과 의미론  (0) 2026.08.30
[프로그래밍 언어론] 3강 - 프로그래밍 언어 패러다임  (0) 2026.08.29
[프로그래밍 언어론] 2강 - 프로그래밍 언어의 발전 및 동작 원리  (0) 2026.08.21
'방송통신대학교/📝프로그래밍 언어론' 카테고리의 다른 글
  • [프로그래밍 언어론] 6강 - 프로그래밍 언어의 구현
  • [프로그래밍 언어론] 5강 - 구문 분석
  • [프로그래밍 언어론] 4강 - 구문론과 의미론
  • [프로그래밍 언어론] 3강 - 프로그래밍 언어 패러다임
junbin2
junbin2
java.lang.NullPointerException
  • junbin2
    bin's Development Diary
    junbin2
  • 전체
    오늘
    어제
    • 전체보기 (240)
      • 방송통신대학교 (94)
        • ⚙️컴퓨터의 이해 (11)
        • 💻컴퓨터과학 개론 (15)
        • 🔢자료구조 (14)
        • 🧬알고리즘 (10)
        • ⚙️운영체제 (14)
        • 📝프로그래밍 언어론 (7)
        • 🕸️이산수학 (11)
        • 🌍유비쿼터스 컴퓨팅 (11)
        • 🖥️컴퓨터과학과 (1)
      • 공부 (72)
        • 📚백엔드 공부 (6)
        • ☕Java (23)
        • 🌳Spring (13)
        • ⚙️C (12)
        • ⚡Python (15)
        • JavaScript (1)
        • 🛢️Database (0)
        • Algorithm Problem Solving (2)
      • 네트워크 (7)
        • 📜HTTP (7)
      • 스파르타코딩클럽 (64)
      • 정보 (2)
      • 정리가 필요한 글 (1)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

    • GitHub
  • 공지사항

  • 인기 글

  • 태그

    방송대
    Java
    컴퓨터과학 개론
    방송통신대학교
    자바
    컴퓨터과학과
    유비쿼터스
    spring
    컴퓨터의 이해
    방통대
    파이썬
    배열
    자료구조
    함수
    알고리즘
    이산수학
    그래프
    Python
    C언어
    운영체제
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.1
junbin2
[프로그래밍 언어론] 7강 - 변수와 바인딩
상단으로

티스토리툴바