9.1 ์ ์ ๋ฐ ๋์ ๊ธฐ์ต ์ฅ์ ๋ฐฐ๋น
์ ์ ๊ธฐ์ต ์ฅ์ ํ ๋น
- ๋ฒ์ญ ์๊ฐ์ ํ ๋น
- ๊ธฐ์ต์ฅ์ ํฌ๊ธฐ์ ์์น๊ฐ ์ ์ ์ผ๋ก ๊ณ ์
- ๋ฐฐ์ด ์ ๊ทผ์ฝ๋๊ฐ ํจ์จ์ (ํฌ๊ธฐ๊ฐ ๊ณ ์ ๋์ด ์๊ธฐ ๋๋ฌธ์)
- ์๋ธํ๋ก๊ทธ๋จ์ recursion์ ์ํํ ์ ์์
๋์ ๊ธฐ์ต ์ฅ์ ํ ๋น
- ์คํ ์๊ฐ์ ํ ๋น
- ๋ณ์ ์ ํ ์ํ (์๋ฃํ, ํฌ๊ธฐ ๋ฑ)
- ์ธํฐํ๋ฆฌํฐ ์ธ์ด..
c, c++ ๊ฐ์๊ฑด ์ ์ ๋์ ๋ค ํจ. static / auto
9.2 ๋จ์ ํ๋ก๊ทธ๋จ (module)
- ์ ์ธ ๊ฐ๋ฅ : ์ง์ญ ์๋ณ์ ๋์
- ์ง์ญ ๋ณ์ : ๋จ์ ํ๋ก๊ทธ๋จ์์ ์ ์ธํ์ฌ ์ฌ์ฉํ๋ ๋ณ์ (์ฆ, ํด๋น ๋ชจ๋์ ์๋ ๋ณ์๋ non-local ํน์ global ๋ณ์์ด๋ค)
- ํ์ฑํ ์ํ : ํ ๋จ์ ํ๋ก๊ทธ๋จ์ ์คํ ์์๋ถํฐ ์ข ๋ฃ๊น์ง
- ๋ธ๋ก๋ ๋จ์ ํ๋ก๊ทธ๋จ์ ์ํ๋ค.
๋จ์ ํ์ฑํ (unit activation)
- ์คํ ์๊ฐ์ ํ ๋จ์ ํ๋ก๊ทธ๋จ์ด ํํ๋ ์ํ
- ์ฝ๋๋ถ, ํ์ฑ๋ ์ฝ๋๋ก ๊ตฌ์ฑ
์ฝ๋๋ถ
- ๋ช ๋ น์ด๋ค๋ก ๊ตฌ์ฑ
- ๊ณ ์ ํฌ๊ธฐ, ๋ด์ฉ ๋ถ๋ณ
ํ์ฑ ๋ ์ฝ๋
- ์ง์ญ ๋ณ์ ๋ฑ ํ๋ก๊ทธ๋จ ์คํ ์ ์๊ตฌ๋๋ ์ ๋ณด๋ค
- ๊ฐ๋ณ์ ์ธ ํฌ๊ธฐ, ๋ด์ฉ
- ๋ฐํ์ฃผ์ : ๋ฐํ์ ์คํ ์ฃผ์. ํธ์ถ์์ ์ฝ๋
- ๋์ ๋งํฌ : ํธ์ถํ ๋จ์ ํ๋ก๊ทธ๋จ์ ํ์ฑ ๋ ์ฝ๋ ์ฃผ์.. ๋์ ๋ดํฌ๊ด๊ณ ํํ. ์ปดํ์ผ๋ฌ๊ฐ ๋ฐ๊ฒฌํ์ง ๋ชปํ non-local variable๋ค์ ๋์ ๋งํฌ๋ฅผ ํ๊ณ ๊ฐ๋ฉฐ ํ์
- <-> ์ ์ ๋งํฌ : ์ปดํ์ผ๋ฌ๊ฐ ๋ง๋ ์ ์ ๋ดํฌ ๊ด๊ณ ํธ๋ฆฌ์์์ ๋งํฌ
9.3 ์ ์ ๊ธฐ์ต ์ฅ์ ํ ๋น
- ํ๋์ ๋ฉ์ธํ๋ก๊ทธ๋จ๊ณผ ๋ค์์ ์๋ธ ํ๋ก๊ทธ๋จ์ผ๋ก ๊ตฌ์ฑ
- ๊ธฐ์ต์ฅ์์ ์ด ์ฉ๋ : ๋ฒ์ญ์๊ฐ์ ๊ณ์ฐ (์คํ์๊ฐ์ ๋ณํ์ง ์์)
- ๋ชจ๋ ๋ณ์์ ์คํ์ ๊ณ ์ (์ฃผ์์ ๋์)
์ ์ ๋ณ์(static variable)
- ๋ฒ์ญ ์๊ฐ์ ํฌ๊ธฐ๊ฐ ๊ณ ์ , ๋ฒ์ญ ์๊ฐ์ ํ ๋น
- ์๋ช ์ ํ๋ก๊ทธ๋จ ์คํ ์๊ฐ๊ณผ ๋์ผ์ ๋จ (์ฃผ ํ๋ก์์ ์ง์ ~ ์ฃผ ํ๋ก์์ ํ์ถ)
์ฅ์
- ๊ตฌํ ์ฉ์ด, ๊ฐ๊ฒฐํจ
- ํจ์จ์ ์ธ ํ๋ก๊ทธ๋จ ์คํ
๋จ์
- ๋ถ์กฑํ ์ ์ฐ์ฑ -> ๋ฐฐ์ด ํฌ๊ธฐ ๋ถ๋ณ, recursion ๋ถ๊ฐ
- ํ์ฑํ ๋์ง ์์ ํ์ฑ ๋ ์ฝ๋๊ฐ ์์ฃผ (์ค๋ฅ ์ฒ๋ฆฌ ๋ฃจํด ๋ฑ)
9.4 ์คํ ๊ธฐ๋ฐ ๊ธฐ์ต ์ฅ์ ๋ฐฐ๋น
๋์ ๊ธฐ์ต ์ฅ์ ํ ๋น ๊ธฐ๋ฒ
- ์คํํ ๋น (for automatic allocation), ํ ํ ๋น (for dynamic alloc)
- ๋๋ถ๋ถ์ ์ปดํ์ผ๋ฌ ์ธ์ด์์ ์ฌ์ฉํ๋ ํํ
- ALGOL์ ์ฌ์ธ์ด : ํ์ฑ ๋ ์ฝ๋์ ํฌ๊ธฐ ๋ฐ์ธ๋ฉ ์๊ฐ : ๋ฒ์ญ์๊ฐ, ํ์ฑํ ์์ , ๋์ ๋ณํ
์ค์ ์ (semi-static) ๋ณ์
- ๊ธฐ์ต ์ฅ์ ํฌ๊ธฐ (offset) : ๋ฒ์ญ ์๊ฐ์ ๊ณ ์ (์ ์ ๋ฐ์ธ๋ฉ)
- ๊ธฐ์ต ์ฅ์ ํ ๋น : ์คํ ์๊ฐ (๋์ ํ ๋น)
- (์ ์ ์ด๋ ๋น์ทํ๋ฐ ํ ๋น์ด ์คํ์๊ฐ์ด๋ผ ์ค์ ์ )
์ค๋์ (semi-dynamic) ๋ณ์
- ๊ธฐ์ต ์ฅ์ ํฌ๊ธฐ : ํ์ฑํ ์์ ๋ฐ์ธ๋ฉ (๋์ ๋ฐ์ธ๋ฉ)
- ๊ธฐ์ต ์ฅ์ ํ ๋น : ๋์ ํ ๋น (์คํ)
- (๋์ ์ด๋ ๋น์ทํ๋ฐ ํฌ๊ธฐ๊ฐ ํ๋ฒ ์ ํด์ง๋ฉด ๊ณ ์ ์ด๋ผ ์ค๋์ )
๋์ ๋ณ์ (dynamic) ๋ณ์
- ์คํ ์ ๋ณ์ ํฌ๊ธฐ๊ฐ ์์๋ก ๋ณํ ์ ์๋ ๋ณ์
- ํ๋ก๊ทธ๋จ ์คํ ์ค ์์ฑ/ํด์ ๊ฐ๋ฅ
- ํ ํ ๋น (์คํ์ ์๋ค๋ณด๋ฉด ๋์ ๋ณ์์ ํฌ๊ธฐ๋ฅผ ๋ณ๊ฒฝ์ํค์ง ๋ชปํ๊ธฐ ๋๋ฌธ)
- ์คํ์๋ ๋ช ์ธํ๋ง ์ ์ฅํ๊ณ , ์ค์ ๋ฐ์ดํฐ๋ ํ์ ์ ์ฅํด์ ์๋ก๋ฅผ ํฌ์ธํฐ๋ก ์ฐ๊ฒฐ
- ํ์ค์นผ์ conformant array(์ ์ ๋ฐฐ์ด) ๋ ๋ฐฐ์ด์ ํ ์ ์(์ฌ์ด์ฆ๋ฅผ ๋์ ์ผ๋ก ๋ฐ์์ฌ ์ ์์)๋ฅผ ํฌํจํ๋ ํ์ ๋งค๊ฐ๋ณ์
-> ์ค๋์ ๋ณ์๋ก ๋ง๋ ๋ค
Non-Local Variable์ ์ฐธ์กฐ ๋ฐฉ๋ฒ
- ๋ค๋ฅธ ํ์ฑ ๋ ์ฝ๋์ ๋ณ์ ์ฐธ์กฐ
- Local Variable์ ์์ ์ ์ง์ญ ํ๊ฒฝ(Local Environment)์ ์์นํ ๊ฒ์
- Non_local Variable์ ๋น์ง์ญ ํ๊ฒฝ (Non-Local Environment) ์ด๋๊ฐ์ ์์นํ ๊ฒ์
ex) Fortran์ ์ง์ญ ๋ณ์๋ ํ์ฌ ๋จ์ ํ๋ก๊ทธ๋จ ํ์ฑ ๋ ์ฝ๋์ ์์นํจ
ex) Fortran์ ์ ์ญ ๋ณ์๋ ์์คํ
์ ๊ณต ํ์ฑ ๋ ์ฝ๋
ex) Algol-like ์ธ์ด์ ์ง์ญ ๋ณ์๋ ํ์ฌ ๋จ์ ํ๋ก๊ทธ๋จ ํ์ฑ ๋ ์ฝ๋์ ์์นํจ
ex) Algol-like ์ธ์ด์ ๋น์ง์ญ ๋ณ์๋ ์ ์ ๋ดํฌ ๊ด๊ณ๋ฅผ ๋ฐ๋ผ ๊ฒ์ํด ๊ฐ
9.5 ํ ๊ธฐ์ต ์ฅ์ ํ ๋น
์์ญ ๊ท์น
- ์ ์ ์์ญ ๊ท์น : ๋ฒ์ญ ๊ธฐ๋ฒ์์ ์ฌ์ฉ
- ๋์ ์์ญ ๊ท์น : ์ธํฐํ๋ฆฌํฐ ๊ท์น์์ ์ฌ์ฉ
- ๋์ ๊ธฐ์ต ์ฅ์ ํ ๋น์ ํ์ ์ฌ์ฉ