πŸ‘Š CS/ν”„λ‘œκ·Έλž˜λ° μ–Έμ–΄λ‘ 

[ν”„λ‘œκ·Έλž˜λ° μ–Έμ–΄λ‘ ] 8. μ˜μ—­κ³Ό 수λͺ…

ν•œκ·œμ§„ 2022. 6. 7. 23:12

8.1 블둝과 μ˜μ—­

μ˜μ—­
  • μ‹λ³„μžμ˜ 효λ ₯을 λ‚˜νƒ€λ‚Ό 수 μžˆλŠ” μ˜μ—­
  • (μš©μ–΄μ •λ¦¬) ν”„λ‘œκ·Έλž¨ λ‚΄μ—μ„œ μ–΄λ–€ 선언이 μœ νš¨ν•œ λΆ€λΆ„
수λͺ…
  • μ‹λ³„μž(λ³€μˆ˜) 값을 λ³΄μœ ν•  λ©”λͺ¨λ¦¬κ°€ λ°°μ •λ˜μ–΄ μžˆλŠ” μ‹€ν–‰ μ‹œκ°„
  • λ©”λͺ¨λ¦¬ ν• λ‹ΉλΆ€ν„° ν•΄μ œκΉŒμ§€μ˜ μ‹œκ°„
μ‹λ³„μž μ˜μ—­ 제곡의 κ°„κ²°ν•œ 방법
  • κ·Έλƒ₯ λͺ¨λ“  μ‹λ³„μžλ₯Ό μ „ ν”„λ‘œκ·Έλž¨μ—μ„œ μ‚¬μš© κ°€λŠ₯ν•˜κ²Œ 함 (μ „μ—­λ³€μˆ˜λ‘œ)
  • ν•˜μ§€λ§Œ, μ‹λ³„μž μ‚¬μš©μ˜ λ³΅μž‘ν™”, ν˜Όλ™, ν”„λ‘œκ·Έλž¨ ν•©μ„± μ‹œ 문제점 λ°œμƒ
ν•΄κ²°μ±… : λ‹¨μœ„ ν”„λ‘œκ·Έλž¨μ˜ μ‹λ³„μž μ‚¬μš© (localization μš”κ΅¬)

 

8.2 동적 μ˜μ—­κ³Ό 정적 μ˜μ—­

  1. μ§€μ—­λ³€μˆ˜ (local variable) : ν˜„μž¬ λΈ”λ‘μ—μ„œ μ„ μ–Έλœ λ³€μˆ˜, ν˜•μ‹ λ§€κ°œλ³€μˆ˜
  2. λΉ„μ§€μ—­ λ³€μˆ˜ (non-local variable) : ν˜„μž¬ λΈ”λ‘μ—μ„œ μ‚¬μš©λ˜μ§€λ§Œ, λ°”κΉ₯ λΈ”λ‘μ—μ„œ μ„ μ–Έλœ λ³€μˆ˜
  3. μ „μ—­ λ³€μˆ˜ (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 : μ£Ό ν”„λ‘œμ‹œμ € μ§„μž… ~ μ£Ό ν”„λ‘œμ‹œμ € νƒˆμΆœ