๐ Compile with Transpile, Build and Runtime
Compile
- ์ฌ๋์ด ์ดํดํ๋ ์ธ์ด(์์ค์ฝ๋)๋ฅผ ์ปดํจํฐ๊ฐ ์ดํดํ ์ ์๋ ์ธ์ด(๊ธฐ๊ณ์ด)๋ก ๋ฐ๊พธ๋ ๊ณผ์ ์ ๋งํฉ๋๋ค.
- ์ปดํจํฐ์ ๋ชจ๋ ๋ช
๋ น์ CPU๊ฐ ์ฒ๋ฆฌํ๊ณ CPU๋ 0๊ณผ 1๋ฐ์ ๋ชจ๋ฅด๋ ๋ฐ๋ณด์
๋๋ค.
- CPU๋ ๋ชจ๋ ๋ช
๋ น์ 0๊ณผ 1๋ก๋ง ์ดํดํ๊ณ ์คํํฉ๋๋ค.
- 0๊ณผ 1๋ก๋ง ์์ฑ๋ ์ธ์ด๋ฅผ ๊ธฐ๊ณ์ด๋ผ๊ณ ํฉ๋๋ค.
Transpile
- ํ๋์ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด๋ก ์์ฑ๋ ์์ค์ฝ๋๋ฅผ ๋น์ทํ ์์ค์ ์ถ์ํ๋ฅผ ๊ฐ์ง ๋ค๋ฅธ ์ธ์ด๋ก ๋ณํํ๋ ๊ฒ์ ์๋ฏธํฉ๋๋ค.
- Compiler๊ณผ Transpiler์ ์ฐจ์ด์
- Transpiler : Compiler์ ์ผ์ข
์ผ๋ก ํ๋ก๊ทธ๋๋ฐ ์ธ์ด ๊ฐ์ ๋ณํ์ ํ ๋ ๊ฑฐ์ ๋๋ฑํ ์์ค์ ์ถ์ํ๋ก ๋์ํฉ๋๋ค.
- ES5 ์ฝ๋ โ ES6 ์ฝ๋๋ก ๋ณํ
- c++ โ c๋ก ๋ณํ
- Compiler : ๋ ๊ณ ๊ธ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด๋ฅผ ๋ ์ ๊ธ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด๋ก ๋ณํํฉ๋๋ค.
- Java โ bytecode ๋ก ๋ณํ
- c โ assembly ๋ก ๋ณํ
Compile time
- ํ๋ก๊ทธ๋จ์ ์์ฑํ๊ธฐ ์ํด ์์ค์ฝ๋๋ฅผ ์์ฑํ๊ณ ์์ฑ๋ ์์ค์ฝ๋๋ฅผ ๊ธฐ๊ณ์ด๋ก ๋ณํํ๋ ์ปดํ์ผ์ ๊ฑฐ์น๋ฉด ์คํ ๊ฐ๋ฅํ ํ๋ก๊ทธ๋จ์ด ๋ฉ๋๋ค.
- ์ด๋ฌํ ์ปดํ์ผ ๊ณผ์ ์ ์ปดํ์ผํ์(compile time)์ด๋ผ ๋ถ๋ฆ
๋๋ค.
Build
- ์์ค์ฝ๋ ํ์ผ์ ์คํ ๊ฐ๋ฅํ ์ํํธ์จ์ด ์ฐ์ถ๋ฌผ๋ก ๋ง๋๋ ์ผ๋ จ์ ๊ณผ์ ์ ์๋ฏธํฉ๋๋ค.
- ๋น๋ ๋จ๊ณ์ ์ปดํ์ผ์ด ํฌํจ๋์ด ์์ด ์ปดํ์ผ์ ๋น๋์ ๋ถ๋ถ ์งํฉ์ด๋ผ๊ณ ํ ์ ์์ต๋๋ค.
- ๋น๋ ํด(build tool)
- ๋น๋๋ฅผ ์ํํ๋ ๋๊ตฌ๋ฅผ ์๋ฏธํฉ๋๋ค.
- ๋น๋ ํด ๊ธฐ๋ฅ : ์ ์ฒ๋ฆฌ(preprocessing), ์ปดํ์ผ(compile), ํจํค์ง(packaging), ํ
์คํ
(testing), ๋ฐฐํฌ(distribution)
Runtime
- ์ปดํ์ผ ๊ณผ์ ์ ๊ฑฐ์น ํ๋ก๊ทธ๋จ์ ์ฌ์ฉ์๊ฐ ์คํํ ์ ์์ต๋๋ค.
- ํ๋ก๊ทธ๋๋ฐ ์ธ์ด๊ฐ ๊ตฌ๋๋๋ ํ๊ฒฝ์ผ๋ก ์์ฉํ๋ก๊ทธ๋จ์ด ์คํ ์ค์ผ ๋ ์ด๋ฅผ ๋ฐํ์(runtime)์ด๋ผ๊ณ ํฉ๋๋ค.
- JavaScript runtime
- ์๋ฐ์คํฌ๋ฆฝํธ๊ฐ ๊ตฌ๋๋๋ ํ๊ฒฝ์ ์๋ฏธํฉ๋๋ค.
- ์ข
๋ฅ: ์น ๋ธ๋ผ์ฐ์ , Node.js
์ฐธ๊ณ