์์ค์ฝ๋์ ๋ช ๋ น์ด.
- โ์ปดํจํฐ๋ ๋ช ๋ น์ด๋ฅผ ์ฒ๋ฆฌํ๋ ๊ธฐ๊ณโ
- ๋ช ๋ น์ด๋ ์ปดํจํฐ๋ฅผ ์ค์ง์ ์ผ๋ก ์๋์ํค๋ ๋งค์ฐ ์ค์ํ ์ ๋ณด
- ๋ชจ๋ ์์ค ์ฝ๋(C, C++, Java, Python ๊ณผ ๊ฐ์ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด๋ก ๋ง๋ ์์ค ์ฝ๋)๋ ์ปดํจํฐ ๋ด๋ถ์์ ๋ช ๋ น์ด๋ก ๋ณํ๋ฉ๋๋ค.
๊ณ ๊ธ ์ธ์ด์ ์ ๊ธ ์ธ์ด
- ํ๋ก๊ทธ๋จ์ ๋ง๋ค ๋ ์ฌ์ฉํ๋ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด, ์ปดํจํฐ๊ฐ ์ดํดํ๋ ์ธ์ด๊ฐ ์๋ ์ฌ๋์ด ์ดํดํ๊ณ ์์ฑํ๊ธฐ ์ฝ๊ฒ ๋ง๋ค์ด์ง ์ธ์ด
- ์ด๋ ๊ฒ โ์ฌ๋์ ์ํ ์ธ์ดโ๋ฅผ ๊ณ ๊ธ ์ธ์ด(high-level programming language) ๋ผ๊ณ ํฉ๋๋ค.
- ์ปดํจํฐ๊ฐ ์ง์ ์ดํดํ๊ณ ์คํํ ์ ์๋ ์ธ์ด
- ์ ๊ธ ์ธ์ด(low-level programming language) ํ๊ณ ํฉ๋๋ค.
- ์ปดํจํฐ๊ฐ ์ดํดํ๊ณ ์คํํ ์ ์๋ ์ธ์ด๋ ์ค์ง ์ ๊ธ ์ธ์ด๋ฟ์
๋๋ค.
- ๊ทธ๋์ ๊ณ ๊ธ ์ธ์ด๋ก ์์ฑ๋ ์์ค ์ฝ๋๊ฐ ์คํ๋๋ ค๋ฉด ๋ฐ๋์ ์ ๊ธ ์ธ์ด, ์ฆ ๋ช ๋ น์ด๋ก ๋ณํ๋์ด์ผ ํฉ๋๋ค.
- ์ ๊ธ ์ธ์ด์๋ ๋ ๊ฐ์ง ์ข
๋ฅ๊ฐ ์์ต๋๋ค.
- ๊ธฐ๊ณ์ด
- 0๊ณผ 1์ ๋ช ๋ น์ด ๋นํธ๋ก ์ด๋ฃจ์ด์ง ์ธ์ด์ ๋๋ค.
- ๋ค์ ๋งํด 0๊ณผ 1๋ก ์ด๋ฃจ์ด์ง ๋ช ๋ น์ด ๋ชจ์์ ๋๋ค.
- ์ด์
๋ธ๋ฆฌ์ด
- 0๊ณผ 1๋ก ํํ๋ ๋ช ๋ น์ด(๊ธฐ๊ณ์ด)๋ฅผ ์ฝ๊ธฐ ํธํ ํํ๋ก ๋ฒ์ญํ ์ธ์ด
- ๊ธฐ๊ณ์ด
์ปดํ์ผ ์ธ์ด์ ์ธํฐํ๋ฆฌํฐ ์ธ์ด
- ๊ณ ๊ธ ์ธ์ด๋ ์ ๊ธ ์ธ์ด๋ก ๋ณํ๋๋ ๋ฐฉ์์ผ๋ก๋ ํฌ๊ฒ ๋ ๊ฐ์ง ๋ฐฉ์์ด ์์ต๋๋ค.
-
์ปดํ์ผ ๋ฐฉ์
- ์ปดํ์ผ ๋ฐฉ์์ผ๋ก ์๋ํ๋ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด๋ฅผ ์ปดํ์ผ ์ธ์ด
-
์ธํฐํ๋ฆฌํธ ๋ฐฉ์
- ์ธํฐํ๋ฆฌํธ ๋ฐฉ์์ผ๋ก ์๋ํ๋ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด๋ฅผ ์ธํฐํ๋ฆฌํฐ ์ธ์ด
-
์ปดํ์ผ ๋ฐฉ์
์ปดํ์ผ ์ธ์ด
-
์ปดํ์ผ ์ธ์ด
- ์ปดํ์ผ๋ฌ์ ์ํด ์์ค ์ฝ๋ ์ ์ฒด๊ฐ ์ ๊ธ ์ธ์ด๋ก ๋ณํ๋์ด ์คํ๋๋ ๊ณ ๊ธ ์ธ์ด์ ๋๋ค.
-
์ปดํ์ผ(Compile)
- ์ปดํ์ผ ์ธ์ด๋ก ์์ฑ๋ ์์ค ใ ์ฝ๋๋ ์ ์ฒด๊ฐ ์ ๊ธ ์ธ์ด๋ก ๋ณํ๋๋ ๊ณผ์ ์ ๊ฑฐ์น๋๋ฐ ์ด ๊ณผ์ ์ โ์ปดํ์ผโ์ด๋ผ๊ณ ํฉ๋๋ค.
-
์ปดํ์ผ๋ฌ(Compiler)
- ์ปดํ์ผ์ ์ํํด ์ฃผ๋ ๋๊ตฌ
- ๊ฐ๋ฐ์๊ฐ ์์ฑํ ์์ค ์ฝ๋ ์ ์ฒด๋ฅผ ์ญ ํ์ด๋ณด๋ฉฐ ์์ค ์ฝ๋์ ๋ฌธ๋ฒ์ ์ธ ์ค๋ฅ๋ ์๋์ง, ์คํ ๊ฐ๋ฅํ ์ฝ๋์ธ์ง, ์คํ ๊ฐ๋ฅํ ์ฝ๋์ธ์ง, ์คํํ๋ ๋ฐ ๋ถํ์ํ ์ฝ๋๋ ์๋์ง ๋ฑ์ ๋ฐ์ง๋ฉฐ ์์ค ์ฝ๋๋ฅผ ์ฒ์๋ถํฐ ๋๊น์ง ์ ๊ธ ์ธ์ด๋ก ์ปดํ์ผํฉ๋๋ค.
- ์ด๋ ์ปดํ์ผ๋ฌ๊ฐ ์์ค ์ฝ๋ ๋ด์์ ์ค๋ฅ๋ฅผ ํ๋๋ผ๋ ๋ฐ๊ฒฌํ๋ฉด ํด๋น ์์ค ์ฝ๋๋ ์ปดํ์ผ์ ์คํจํฉ๋๋ค.
- ๋ชฉ์ ์ฝ๋(Object Code)
- ์ปดํ์ผ์ด ์ฑ๊ณต์ ์ผ๋ก ์ํ๋๋ฉด ๊ฐ๋ฐ์๊ฐ ์์ฑํ ์์ค ์ฝ๋๋ ์ปดํจํฐ๊ฐ ์ดํดํ ์ ์๋ ์ ๊ธ ์ธ์ด๋ก ๋ณํ๋ฉ๋๋ค.
- ์ด๋ ๊ฒ ์ปดํ์ผ๋ฌ๋ฅผ ํตํด ์ ๊ธ ์ธ์ด๋ก ๋ณํ๋ ์ฝ๋๋ฅผ ๋ชฉ์ ์ฝ๋(Object code) ๋ผ๊ณ ํฉ๋๋ค.
- ์ปดํ์ผ์ด ์ฑ๊ณต์ ์ผ๋ก ์ํ๋๋ฉด ๊ฐ๋ฐ์๊ฐ ์์ฑํ ์์ค ์ฝ๋๋ ์ปดํจํฐ๊ฐ ์ดํดํ ์ ์๋ ์ ๊ธ ์ธ์ด๋ก ๋ณํ๋ฉ๋๋ค.
์ธํฐํ๋ฆฌ์ด ์ธ์ด
-
์ธํฐํ๋ฆฌํฐ ์ธ์ด
- ์ธํฐํ๋ฆฌํฐ์ ์ํด ์์ค ์ฝ๋๊ฐ ํ ์ค์ฉ ์คํ๋๋ ๊ณ ๊ธ ์ธ์ด์
๋๋ค
- ๋ํ์ ์ธ ์ธํฐํ๋ฆฌํฐ ์ธ์ด๋ก Python์ด ์์ต๋๋ค.
- ์ธํฐํ๋ฆฌํฐ์ ์ํด ์์ค ์ฝ๋๊ฐ ํ ์ค์ฉ ์คํ๋๋ ๊ณ ๊ธ ์ธ์ด์
๋๋ค
-
์ธํฐํ๋ฆฌํฐ
- ์์ค ์ฝ๋๋ฅผ ํ ์ค์ฉ ์ ๊ธ ์ธ์ด๋ก ๋ณํํ์ฌ ์คํํด ์ฃผ๋ ๋๊ตฌ
- ์ธํฐํ๋ฆฌํฐ ์ธ์ด๋ ์ปดํจํฐ์ ๋ํํ๋ฏ ์์ค ์ฝ๋๋ฅผ ํ ์ค์ฉ ์คํํ๊ธฐ ๋๋ฌธ์ ์์ค ์ฝ๋ ์ ์ฒด๋ฅผ ์ ๊ธ ์ธ์ด๋ก ๋ณํํ๋ ์๊ฐ์ ๊ธฐ๋ค๋ฆด ํ์๊ฐ ์์ต๋๋ค.
- ์์ค ์ฝ๋ ๋ด์ ์ค๋ฅ๊ฐ ํ๋๋ผ๋ ์์ผ๋ฉด ์ปดํ์ผ์ด ๋ถ๊ฐ๋ฅํ๋ ์ปดํ์ผ ์ธ์ด์๋ ๋ฌ๋ฆฌ, ์ธํฐํ๋ฆฌํฐ ์ธ์ด๋ ์์ค ์ฝ๋๋ฅผ ํ ์ค์ฉ ์คํํ๊ธฐ ๋๋ฌธ์ ์์ค ์ฝ๋ N๋ฒ์งธ ์ค์ ๋ฌธ๋ฒ ์ค๋ฅ๊ฐ ์๋๋ผ๋ N-1๋ฒ์งธ ์ค๊น์ง๋ ์ฌ๋ฐ๋ฅด๊ฒ ์ํ๋ฉ๋๋ค.
- ์ผ๋ฐ์ ์ผ๋ก ์ธํฐํ๋ฆฌํฐ ์ธ์ด๋ ์ปดํ์ผ ์ธ์ด๋ณด๋ค ๋๋ฆฝ๋๋ค.
- ์ปดํ์ผ์ ํตํด ๋์จ ๊ฒฐ๊ณผ๋ฌผ, ์ฆ ๋ชฉ์ ์ฝ๋๋ ์ปดํจํฐ๊ฐ ์ดํดํ๊ณ ์คํํ ์ ์๋ ์ ๊ธ ์ธ์ด์ธ ๋ฐ๋ฉด, ์ธํฐํ๋ฆฌํฐ ์ธ์ด๋ ์์ค์ฝ๋ ๋ง์ง๋ง์ ์ด๋ฅผ ๋๊น์ง ํ ์ค ํ ์ค์ฉ ์ ๊ธ์ธ์ด๋ก ์คํํด์ผ ํ๊ธฐ ๋๋ฌธ์ ๋๋ค.
๋ชฉ์ ํ์ผ vs ์คํ ํ์ผ
-
๋ชฉ์ ํ์ผ
- ๋ชฉ์ ์ฝ๋๋ก ์ด๋ฃจ์ด์ง ํ์ผ์ ๋๋ค.
- ์คํ ํ์ผ
- ์๋์ฐ์ .exe ํ์ฅ์๋ฅผ ๊ฐ์ง ํ์ผ์ด ๋ํ์ ์ธ ์คํ ํ์ผ์ ๋๋ค.
- ๋ชฉ์ ์ฝ๋๊ฐ ์คํ ํ์ผ์ด ๋๊ธฐ ์ํด์๋ ๋งํน์ด๋ผ๋ ์์ ์ ๊ฑฐ์ณ์ผ ํฉ๋๋ค.
-
๋งํน
- ์ฌ๋ฌ ๊ฐ์ ์ค๋ธ์ ํธ ํ์ผ์ด๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ํ๋์ ์คํ ํ์ผ๋ก ๊ฒฐํฉํ๋ ๊ณผ์ ์ ์๋ฏธํฉ๋๋ค. ์ปดํ์ผ๋ฌ๊ฐ ์์ค ์ฝ๋๋ฅผ ๊ธฐ๊ณ์ด๋ก ๋ฒ์ญํ ํ ๋ง์ปค(Linker)๊ฐ ์ด๋ฌํ ๊ธฐ๊ณ์ด ์ฝ๋๋ค์ ๋ชจ์ ์คํ ๊ฐ๋ฅํ ํ๋ก๊ทธ๋จ์ ๋ง๋ญ๋๋ค.
ํค์๋๋ก ์ ๋ฆฌํ๋ ํต์ฌ ํฌ์ธํธ
- ๊ณ ๊ธ ์ธ์ด๋ ์ฌ๋์ด ์ดํดํ๊ณ ์์ฑํ๊ธฐ ์ฝ๊ฒ ๋ง๋ค์ด์ง ์ธ์ด์ ๋๋ค.
- ์ ๊ธ ์ธ์ด๋ ์ปดํจํฐ๊ฐ ์ง์ ์ดํดํ๊ณ ์คํํ ์ ์๋ ์ธ์ด์ ๋๋ค.
- ์ ๊ธ ์ธ์ด๋ 0๊ณผ 1๋ก ์ด๋ฃจ์ด์ง ๋ช ๋ น์ด๋ก ๊ตฌ์ฑ๋ ๊ธฐ๊ณ์ด์ ๊ธฐ๊ณ์ด๋ฅผ ์ฌ๋์ด ์ฝ๊ธฐ ํธํ ํํ๋ก ๋ฒ์ญํ ์ด์ ๋ธ๋ฆฌ์ด๊ฐ ์์ต๋๋ค.
- ์ปดํ์ผ ์ธ์ด๋ ์ปดํ์ผ๋ฌ์ ์ํด ์์ค ์ฝ๋ ์ ์ฒด๊ฐ ์ ๊ธ ์ธ์ด๋ก ๋ณํ๋์ด ์คํ๋๋ ์ธ์ด์ ๋๋ค.
- ์ธํฐํ๋ฆฌํฐ ์ธ์ด๋ ์ธํฐํ๋ฆฌํฐ์ ์ํด ์์ค ์ฝ๋๊ฐ ํ ์ค์ฉ ์ ๊ธ ์ธ์ด๋ก ๋ณํ๋์ด ์คํ๋๋ ์ธ์ด ์ ๋๋ค.
Q1. Swift๋ ์ผ๋ฐ์ ์ผ๋ก ๊ณ ๊ธ ์ธ์ด๋ก ๋ถ๋ฅ๋ฉ๋๋ค. Swift์ ์ด๋ค ํน์ง์ด ๊ฐ๋ฐ์์๊ฒ ๊ณ ๊ธ ์ธ์ด์ ์ฅ์ ์ ์ ๊ณตํ๋ค๊ณ ์๊ฐํ๋์?
Swift๋ ๊ณ ๊ธ ์ธ์ด์ ํน์ง์ผ๋ก ๋์ ์์ค์ ์ถ์ํ, ๊ฐ๋ ฅํ ํ์ ์์คํ , ๋ฉ๋ชจ๋ฆฌ ์์ ์ฑ, ๊ทธ๋ฆฌ๊ณ ๋น ๋ฅธ ๊ฐ๋ฐ ์๊ฐ์ ์ ๊ณตํฉ๋๋ค. Swift์ ์ต์ ๋ ํ์ ๊ณผ ๊ฐ์ ๊ธฐ๋ฅ์ ์์ ํ ์ฝ๋ ์์ฑ์ ๋๊ณ , ARC๋ ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ๋ฅผ ๋จ์ํํฉ๋๋ค.
Q2. ๊ณ ๊ธ ์ธ์ด์ ์ ๊ธ ์ธ์ด์ ์ฐจ์ด์ ์ ๋ฌด์์ด๋ผ๊ณ ์๊ฐํ๋์?
๊ณ ๊ธ ์ธ์ด๋ ์ธ๊ฐ์ด ์ดํดํ๊ธฐ ์ฌ์ด ํํ๋ก ์ถ์ํ๋ ์ธ์ด๋ก, ๋ณต์กํ ์์ ์ ๊ฐ๋จํ๊ฒ ํํํ ์ ์๊ฒ ํด์ค๋๋ค. Java์ ๊ฐ์ ๊ณ ๊ธ ์ธ์ด๋ ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ, ๊ฐ์ฒด ์งํฅ ํ๋ก๊ทธ๋๋ฐ, ์๋ฌ ์ฒ๋ฆฌ ๋ฑ ๋ณต์กํ ์ปดํจํ ๊ฐ๋ ์ ์ถ์ํํ์ฌ ๊ฐ๋ฐ์๊ฐ ๋ ์ฝ๊ฒ ์ํํธ์จ์ด๋ฅผ ๊ฐ๋ฐํ ์ ์๋๋ก ๋์ต๋๋ค.
์ ๊ธ ์ธ์ด๋ ์ปดํจํฐ๊ฐ ์ง์ ์ดํดํ ์ ์๋ ๋ ๋ฎ์ ์์ค์ ๋ช ๋ น์ด๋ก ๊ตฌ์ฑ๋ฉ๋๋ค. ์ด์ ํด๋นํ๋ ์ธ์ด๋ ์ด์ ๋ธ๋ฆฌ ์ธ์ด๋ ๊ธฐ๊ณ์ด๋ก, ์ด๋ค์ ํ๋์จ์ด์ ๋ฐ์ ํ ์์ ์ ์ํํ๋ ๋ฐ ์ฌ์ฉ๋ฉ๋๋ค. ์ ๊ธ ์ธ์ด๋ฅผ ์ฌ์ฉํ๋ฉด ์ฑ๋ฅ ์ต์ ํ์ ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ๋ฅผ ๋ ์ธ๋ฐํ๊ฒ ์ ์ดํ ์ ์์ง๋ง, ๊ฐ๋ฐ๊ณผ ๋๋ฒ๊น ๊ณผ์ ์ด ๋ณต์กํด์ง๋๋ค.
Q3. Java๋ ๊ณ ๊ธ ์ธ์ด ์ค ํ๋๋ก ๊ฐ์ฃผ๋ฉ๋๋ค. Java์์ ์ ๊ธ ์ธ์ด์ ํน์ฑ์ ํ์ฉํ ์ ์๋ ๋ฐฉ๋ฒ์๋ ์ด๋ค ๊ฒ์ด ์๋์?
Java๋ ๊ธฐ๋ณธ์ ์ผ๋ก ๊ณ ๊ธ ์ธ์ด์ ํน์ฑ์ ๋ง์ด ๊ฐ์ง๊ณ ์์ง๋ง, JNI(Java Native Interface)๋ฅผ ํตํด ์ ๊ธ ์ธ์ด ์ฝ๋์ ์ํธ ์์ฉํ ์ ์์ต๋๋ค. JNI๋ Java ์ ํ๋ฆฌ์ผ์ด์ ๋ด์์ C๋ C++๊ณผ ๊ฐ์ ์ ๊ธ ์ธ์ด๋ก ์์ฑ๋ ์ฝ๋๋ฅผ ํธ์ถํ๊ณ ์ฌ์ฉํ ์ ์๋ ๋ฐฉ๋ฒ์ ์ ๊ณตํฉ๋๋ค. ์ด๋ฅผ ํตํด ๊ฐ๋ฐ์๋ ํน์ ์์ ์ ์ํด ์์คํ ํธ์ถ์ด๋ ํ๋์จ์ด ์ง์ ์ ์ด์ ๊ฐ์ ์ ๊ธ ์ธ์ด์ ์ฑ๋ฅ๊ณผ ํจ์จ์ฑ์ Java ์ ํ๋ฆฌ์ผ์ด์ ์ ํตํฉํ ์ ์์ต๋๋ค. ๋ํ, ๊ณ ์ฑ๋ฅ์ ์๊ตฌํ๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ํน์ ๋ถ๋ถ์์ ์ฑ๋ฅ์ ์ต์ ํํ ์ ์์ต๋๋ค.
Q4. Java์์ ๊ณ ๊ธ ์ธ์ด์ ํน์ฑ์ด ๋ฐฑ์๋ ๊ฐ๋ฐ์ ์ด๋ค ์ฅ์ ์ ์ ๊ณตํ๋์?
Java์ ๊ณ ๊ธ ์ธ์ด ํน์ฑ์ ๋ฐฑ์๋ ๊ฐ๋ฐ์์ ์ฌ๋ฌ ๊ฐ์ง ์ฅ์ ์ ์ ๊ณตํฉ๋๋ค. ์ฒซ์งธ, ๊ฐ๋ ฅํ ๊ฐ์ฒด ์งํฅ ํ๋ก๊ทธ๋๋ฐ(OOP) ์ง์์ผ๋ก ์ฝ๋์ ์ฌ์ฌ์ฉ์ฑ, ํ์ฅ์ฑ, ์ ์ง ๋ณด์์ฑ์ด ํฅ์๋ฉ๋๋ค. ๋์งธ, ์๋ ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ์ ๊ฐ๋น์ง ์ปฌ๋ ์ ์ผ๋ก ๋ฉ๋ชจ๋ฆฌ ๋์์ ๊ฐ์ ๋ฌธ์ ๋ฅผ ๋ฐฉ์งํ๋ฉฐ ๊ฐ๋ฐ์๊ฐ ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ์ ๋ ์ ๊ฒฝ ์ฐ๊ณ ๋ก์ง ๊ฐ๋ฐ์ ๋ ์ง์คํ ์ ์๊ฒ ํฉ๋๋ค. ์ ์งธ, ๋ค์ํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ํ๋ ์์ํฌ, ๊ทธ๋ฆฌ๊ณ ๊ฐ๋ ฅํ ๊ฐ๋ฐ ๋๊ตฌ์ ์ปค๋ฎค๋ํฐ ์ง์์ผ๋ก ๊ฐ๋ฐ ์๋์ ํจ์จ์ฑ์ด ์ฆ๊ฐํฉ๋๋ค. ๋ง์ง๋ง์ผ๋ก, Java๋ ํ๋ซํผ ๋ ๋ฆฝ์ ์ธ ํน์ฑ์ ๊ฐ์ง๊ณ ์์ด, ๋ค์ํ ์ด์ ์ฒด์ ์์ ์คํ๋ ์ ์๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ฐ๋ฐํ ์ ์์ต๋๋ค.