๐คฏ ์ฑ๋ฅ ์ปดํ์ผ๋ฌ: ์๋์ ํ๊ณ๋ฅผ ๋ฐ์ด๋๋ ๋๋ผ์ด ๊ธฐ์ ๋ค!
A. ์ปดํ์ผ๋ฌ๋ ๋ฌด์์ด๋ฉฐ ์ ์ค์ํ๊ฐ์?
์ปดํ์ผ๋ฌ๋ ๊ณ ๊ธ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด๋ก ์์ฑ๋ ์์ค ์ฝ๋๋ฅผ ์ปดํจํฐ๊ฐ ์ดํดํ ์ ์๋ ๊ธฐ๊ณ์ด ์ฝ๋๋ก ๋ณํํ๋ ํ๋ก๊ทธ๋จ์ ๋๋ค. ๋จ์ํ ๋ณํ ์ด์์ผ๋ก, ์ต์ ํ๋ฅผ ํตํด ํ๋ก๊ทธ๋จ์ ์คํ ์๋์ ํจ์จ์ฑ์ ํฌ๊ฒ ํฅ์์ํค๋ ์ญํ ์ ํฉ๋๋ค. ์ฑ๋ฅ์ด ์ค์ํ ์ ํ๋ฆฌ์ผ์ด์ (๊ฒ์, ๋น ๋ฐ์ดํฐ ์ฒ๋ฆฌ, ์ธ๊ณต์ง๋ฅ ๋ฑ)์์๋ ์ปดํ์ผ๋ฌ์ ์ฑ๋ฅ์ด ์ ์ฒด ์์คํ ์ฑ๋ฅ์ ์ง์ ์ ์ธ ์ํฅ์ ๋ฏธ์นฉ๋๋ค.
B. ์ฑ๋ฅ ์ปดํ์ผ๋ฌ์ ์ข ๋ฅ์ ํน์ง
์ฑ๋ฅ ์ปดํ์ผ๋ฌ๋ ํฌ๊ฒ AOT (Ahead-of-Time) ์ปดํ์ผ๋ฌ์ JIT (Just-in-Time) ์ปดํ์ผ๋ฌ๋ก ๋๋ ์ ์์ต๋๋ค. AOT ์ปดํ์ผ๋ฌ๋ ํ๋ก๊ทธ๋จ ์คํ ์ ์ ์ ์ฒด ์์ค ์ฝ๋๋ฅผ ๊ธฐ๊ณ์ด๋ก ๋ณํํ์ฌ ์คํ ์๋๋ฅผ ๋์ด๋ ๋ฐ๋ฉด, JIT ์ปดํ์ผ๋ฌ๋ ํ๋ก๊ทธ๋จ ์คํ ์ค ํ์ํ ๋ถ๋ถ๋ง ๊ธฐ๊ณ์ด๋ก ๋ณํํ์ฌ ์คํํ์ฌ ์ ์ฐ์ฑ์ ์ ๊ณตํฉ๋๋ค. ๊ฐ๊ฐ์ ์ฅ๋จ์ ๊ณผ ์ ์ฉ ๋ถ์ผ์ ๋ํด ์์ธํ ์์๋ณด๊ฒ ์ต๋๋ค.
- AOT ์ปดํ์ผ๋ฌ: ๋์ ์คํ ์๋, ๋ฎ์ ์ค๋ฒํค๋, ํ์ง๋ง ํ๋ซํผ ์์กด์ฑ์ด ์์ ์ ์์. ์: GCC, Clang
- JIT ์ปดํ์ผ๋ฌ: ์ ์ฐ์ฑ๊ณผ ์ต์ ํ์ ๊ฐ๋ฅ์ฑ, ํ๋ซํผ ๋ ๋ฆฝ์ฑ, ํ์ง๋ง ์คํ ์ด๊ธฐ ์๋๊ฐ ๋๋ฆด ์ ์์. ์: Java Virtual Machine, .NET runtime
์ต๊ทผ์๋ ํ์ด๋ธ๋ฆฌ๋ ์ ๊ทผ ๋ฐฉ์์ ์ฌ์ฉํ๋ ์ปดํ์ผ๋ฌ๋ ๋ง์ด ๋ฑ์ฅํ๊ณ ์์ต๋๋ค. ์ด๋ AOT์ JIT ์ปดํ์ผ์ ์ฅ์ ์ ๊ฒฐํฉํ์ฌ ์ฑ๋ฅ๊ณผ ์ ์ฐ์ฑ์ ๋ชจ๋ ๋ง์กฑ์ํค๊ธฐ ์ํ ์๋์ ๋๋ค.
C. ์ฑ๋ฅ ์ปดํ์ผ๋ฌ ์ ํ ๊ธฐ์ค
์ฑ๋ฅ ์ปดํ์ผ๋ฌ๋ฅผ ์ ํํ ๋๋ ์ฌ๋ฌ ์์๋ฅผ ๊ณ ๋ คํด์ผ ํฉ๋๋ค. ํ๋ก๊ทธ๋๋ฐ ์ธ์ด, ํ๊ฒ ํ๋ซํผ, ์ ํ๋ฆฌ์ผ์ด์ ์ ํน์ฑ, ๊ฐ๋ฐ ์๊ฐ ๋ฑ์ ์ข ํฉ์ ์ผ๋ก ๊ณ ๋ คํ์ฌ ์ต์ ์ ์ปดํ์ผ๋ฌ๋ฅผ ์ ํํด์ผ ํฉ๋๋ค. ํนํ, ์ฑ๋ฅ ๋ฒค์น๋งํน์ ํตํด ์ค์ ํ๊ฒฝ์์์ ์ฑ๋ฅ์ ์ธก์ ํ๋ ๊ฒ์ด ์ค์ํฉ๋๋ค.
D. ์ฑ๋ฅ ์ปดํ์ผ๋ฌ์ ์ต์ ๋ํฅ๊ณผ ๋ฏธ๋ ์ ๋ง
ํ์ฌ ์ฑ๋ฅ ์ปดํ์ผ๋ฌ ๋ถ์ผ๋ ์ธ๊ณต์ง๋ฅ, ๋จธ์ ๋ฌ๋ ๊ธฐ์ ์ ํ์ฉํ์ฌ ๋์ฑ ์ ๊ตํ ์ต์ ํ๋ฅผ ์ํํ๋ ๋ฐฉํฅ์ผ๋ก ๋ฐ์ ํ๊ณ ์์ต๋๋ค. ๋ํ, ๋ค์ํ ์ํคํ ์ฒ(๋ฉํฐ์ฝ์ด, GPU ๋ฑ)๋ฅผ ํจ์จ์ ์ผ๋ก ํ์ฉํ๊ธฐ ์ํ ์ฐ๊ตฌ๊ฐ ํ๋ฐํ ์งํ ์ค์ ๋๋ค. ๋ฏธ๋์๋ ๋์ฑ ์ง๋ฅ์ ์ด๊ณ ์๋ํ๋ ์ต์ ํ ๊ธฐ์ ์ ํตํด ์ํํธ์จ์ด ๊ฐ๋ฐ ์์ฐ์ฑ ํฅ์๊ณผ ์ฑ๋ฅ ๊ทน๋ํ๋ฅผ ๊ธฐ๋ํ ์ ์์ต๋๋ค.
E. ๊ฒฐ๋ก
์ฑ๋ฅ ์ปดํ์ผ๋ฌ๋ ํ๋ ์ํํธ์จ์ด ๊ฐ๋ฐ์์ ํ์์ ์ธ ์์์ ๋๋ค. ๋ณธ ๊ธ์์๋ ์ฑ๋ฅ ์ปดํ์ผ๋ฌ์ ๊ฐ๋ , ์ข ๋ฅ, ์ ํ ๊ธฐ์ค, ๊ทธ๋ฆฌ๊ณ ๋ฏธ๋ ์ ๋ง์ ์ดํด๋ณด์์ต๋๋ค. ์ ์ ํ ์ปดํ์ผ๋ฌ๋ฅผ ์ ํํ๊ณ ํ์ฉํจ์ผ๋ก์จ ์ํํธ์จ์ด์ ์ฑ๋ฅ์ ํ๊ธฐ์ ์ผ๋ก ํฅ์์ํฌ ์ ์์ต๋๋ค.
“`
..