8.1 λΈλ‘κ³Ό μμ
μμ
- μλ³μμ ν¨λ ₯μ λνλΌ μ μλ μμ
- (μ©μ΄μ 리) νλ‘κ·Έλ¨ λ΄μμ μ΄λ€ μ μΈμ΄ μ ν¨ν λΆλΆ
μλͺ
- μλ³μ(λ³μ) κ°μ 보μ ν λ©λͺ¨λ¦¬κ° λ°°μ λμ΄ μλ μ€ν μκ°
- λ©λͺ¨λ¦¬ ν λΉλΆν° ν΄μ κΉμ§μ μκ°
μλ³μ μμ μ 곡μ κ°κ²°ν λ°©λ²
- κ·Έλ₯ λͺ¨λ μλ³μλ₯Ό μ νλ‘κ·Έλ¨μμ μ¬μ© κ°λ₯νκ² ν¨ (μ μλ³μλ‘)
- νμ§λ§, μλ³μ μ¬μ©μ 볡μ‘ν, νΌλ, νλ‘κ·Έλ¨ ν©μ± μ λ¬Έμ μ λ°μ
ν΄κ²°μ± : λ¨μ νλ‘κ·Έλ¨μ μλ³μ μ¬μ© (localization μꡬ)
8.2 λμ μμκ³Ό μ μ μμ
- μ§μλ³μ (local variable) : νμ¬ λΈλ‘μμ μ μΈλ λ³μ, νμ 맀κ°λ³μ
- λΉμ§μ λ³μ (non-local variable) : νμ¬ λΈλ‘μμ μ¬μ©λμ§λ§, λ°κΉ₯ λΈλ‘μμ μ μΈλ λ³μ
- μ μ λ³μ (global) : λͺ¨λ λΈλ‘μμ μ¬μ© κ°λ₯ν λ³μ
a. μ μ μμ κ·μΉ (static scope rule)
μλ³μμ μ¬μ© μμμ λΈλ‘μ μ μ λ΄ν¬κ΄κ³λ‘ κ²°μ (μ»΄νμΌλ¬κ° μλ³μμ μ¬μ© μμμ κ²°μ νλ€)
μ΄λ¦μ ν΄λΉνλ λ³μλ₯Ό μ°Ύμ λ, μμ μ ν¬ν¨νκ³ μλ λΈλ‘μμ μ μΈλμλμ§λ₯Ό νμνκ³ μμΌλ©΄ κ·Έ λ°κΉ₯μͺ½ λΈλ‘μμ μ μΈλμλμ§ νμ
μμ κ΅¬λ© (hole in scope)
- μ μ μ μΈμ΄ μ§μ μ μΈ λλ¬Έμ 보μ΄μ§ μμ λ
- ADA. Java : a.x μ κ°μ΄ μμ νμ μλ‘ μ κ·Ό κ°λ₯
b. λμ μμ κ·μΉ
λ¨Όμ μμ μ ν¬ν¨νκ³ μλ λΈλ‘μμ μ μΈλμλμ§ μ°Ύκ³ , μμΌλ©΄ μκΈ° λΈλ‘μ νΈμΆν λΈλ‘μμ μ μΈλ κ²μΈμ§ μ°Ύμ
- μλ³μμ μμμ΄ μ€νμκ°μ νμ . μ£Όλ‘ μΈν°νλ¦¬ν° μΈμ΄
- μλ³μμ μ¬μ© μμμ΄ νλ‘κ·Έλ¨μ μ€ν μμμ μν΄ κ²°μ λλ€
8.3 μΈμ΄μμμ μμ
λΈλ‘ ꡬ쑰λ₯Ό ν΅ν μμ κ°λ μ μ₯μ
- μ§μμ± (locality)λ₯Ό λμ¬μ€λ€. λ³μλ₯Ό μ¬μ©ν νλ‘κ·Έλ¨ κ°κΉμ΄μ μ μΈ.
- OS νμμ μμ working set μꡬ. μμ ν¬κΈ°μ λ©λͺ¨λ¦¬ μꡬ.
- νμ€ ν¨ν€μ§λ₯Ό μ¬μ©μ νλ‘κ·Έλ¨μ κ²°ν©μμΌ νλμ νλ‘κ·Έλ¨μ λ§λ€κΈ° μ½λ€.
- λΈλ‘ λ¨μλ‘ μ μΈλ λ³μλ€λΌλ¦¬λ κ°μμ΄ μ κΈ° λλ¬Έ.
- νλ‘κ·Έλ¨μ ꡬμ±μ λ¨κ³μ μΌλ‘ μΈλΆννλλ° λμμ΄ λλ€.
8.4 λ³μμ μλͺ
Algol 60
- λΈλ‘ λ¨μ ν λΉ/ν΄μ
- λ³μ μλͺ : λΈλ‘ μμ ~ λΈλ‘ μ’ λ£
- own λ³μ : static
PL/1
- automatic : μλͺ : λΈλ‘ μ§μ ~ λΈλ‘ νμΆ
- static : μ£Ό νλ‘μμ μ§μ ~ μ£Ό νλ‘μμ νμΆ