BLCAN'S LAB

๋ฐ˜์‘ํ˜•

๋‹ค์–‘ํ•œ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด

ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด๋Š” ์ •๋ง๋กœ ๋‹ค์–‘ํ•˜๋‹ค. C๋ถ€ํ„ฐ Java, C#, python, Go, Swift, PHP, JavaScript ๋“ฑ๋“ฑ ๋๋„ ์—†์ด ๋‚˜์—ดํ•  ์ˆ˜ ์žˆ์„ ์ •๋„๋กœ ๋ฌด์ˆ˜ํžˆ ๋งŽ์€ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด๊ฐ€ ์กด์žฌํ•œ๋‹ค.

์ด๋Ÿฐ ๋‹ค์–‘ํ•œ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด๋“ค๋„ ์ปดํŒŒ์ผ ๋ฐฉ์‹, ๋ฉ”๋ชจ๋ฆฌ ์ฒ˜๋ฆฌ ๋ฐฉ๋ฒ• ๋“ฑ ์—ฌ๋Ÿฌ ๊ธฐ์ค€์— ๋”ฐ๋ผ ๋ถ„๋ฅ˜๋ฅผ ๊ฐ€๋Šฅํ•˜๋‹ค.  ์ด๋ฒˆ ํฌ์ŠคํŠธ๋Š” ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด๋ฅผ ๋ถ„๋ฅ˜ํ•˜๋Š” ๊ธฐ์ค€์„ ์†Œ๊ฐœํ•˜๋ ค๊ณ  ํ•œ๋‹ค. ์•„๋ž˜ ๊ธฐ์ค€์„ ํ†ตํ•ด ํ”„๋กœ๊ทธ๋žจ ์–ธ์–ด๋“ค์„ ๋ถ„๋ฅ˜ํ•ด๋ณด์ž.

 

ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด ๋ถ„๋ฅ˜๊ธฐ์ค€

1. ์ €์ˆ˜์ค€ vs ๊ณ ์ˆ˜์ค€

 

2. ์ปดํŒŒ์ผ vs ์ธํ„ฐํ”„๋ฆฌํ„ฐ

 

3. ๊ฐ•ํ•œ ํƒ€์ž… vs ์•ฝํ•œ ํƒ€์ž…

 

4. ๋งค๋‹ˆ์ง€๋“œ vs ์–ธ๋งค๋‹ˆ์ง€๋“œ

 


1. ์ €์ˆ˜์ค€ ์–ธ์–ด vs ๊ณ ์ˆ˜์ค€ ์–ธ์–ด

๊ตฌ๋ถ„ ์ €์ˆ˜์ค€ ์–ธ์–ด(Low-level language) ๊ณ ์ˆ˜์ค€ ์–ธ์–ด(High-level language)
๊ธฐ์ค€: ์ €์ˆ˜์ค€ ๊ณ ์ˆ˜์ค€์˜ ๊ธฐ์ค€์€ ๊ธฐ๊ณ„๊ฐ€ ์ดํ•ด๊ธฐ์— ์นœ์ˆ™ํ•œ๊ฐ€์— ๋”ฐ๋ผ ๋‚˜๋‰œ๋‹ค.
์ดํ•ด ์ปดํ“จํ„ฐ๊ฐ€ ์ดํ•ดํ•˜๊ธฐ ์‰ฌ์šด ์–ธ์–ด ์ธ๊ฐ„์ด ์ดํ•ดํ•˜๊ธฐ ์‰ฌ์šด ์–ธ์–ด
Ex 0๊ณผ 1๋กœ๋งŒ ์ด๋ฃจ์–ด์ง ์ธ๊ฐ„์ด ์‚ฌ์šฉํ•˜๋Š” ์–ธ์–ด๋กœ ์ด๋ฃจ์–ด์ง
ํŠน์ง• ๊ธฐ๊ณ„์–ด(machine code) ์–ด์…ˆ๋ธ”๋ฆฌ์–ด, C, C+, Java, C#
์ปดํ“จํ„ฐ๊ฐ€ ๋ฐ”๋กœ ์ดํ•ดํ•˜๋ฏ€๋กœ ๋ณ€ํ™˜ ๊ณผ์ •์ด ํ•„์š” ์—†์Œ ์ปดํ“จํ„ฐ๊ฐ€ ์ดํ•ดํ•˜๋Š” ๊ธฐ๊ณ„์–ด๋กœ ๋ณ€ํ™˜ํ•˜๋Š” ๊ณผ์ •์ด ํ•„์š”
์ปดํ“จํ„ฐ๊ฐ€ ์ดํ•ดํ•˜๊ธฐ ์‰ฌ์šด ์–ธ์–ด์— ๊ฐ€๊นŒ์šธ์ˆ˜๋ก ์ €์ˆ˜์ค€, ์ธ๊ฐ„์ด ์ดํ•ดํ•˜๊ธฐ ์‰ฌ์šด ์–ธ์–ด์— ๊ฐ€๊นŒ์šธ์ˆ˜๋ก ๊ณ ์ˆ˜์ค€์ด๋ฉฐ ์ €์ˆ˜์ค€ ์–ธ์–ด์™€ ๊ณ ์ˆ˜์ค€ ์–ธ์–ด๋Š” ์ƒ๋Œ€์ ์ž„

2. ์ปดํŒŒ์ผ ์–ธ์–ด vs ์ธํ„ฐํ”„๋ฆฌํ„ฐ ์–ธ์–ด

2.1 ์ปดํŒŒ์ผ์–ธ์–ด

  ์ปดํŒŒ์ผ ์–ธ์–ด(Compiled language)
์ดํ•ด ์†Œ์Šค์ฝ”๋“œ๋ฅผ ์ปดํŒŒ์ผํ•ด์ค˜์„œ ๊ธฐ๊ณ„๊ฐ€ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐ๊ณ„์–ด๋กœ ๋ฐ”๊ฟ”์ค€๋‹ค.
๋Œ€ํ‘œ์–ธ์–ด C, C++
์ฒ˜๋ฆฌ๊ณผ์ • ์†Œ์Šค์ฝ”๋“œ -> ์ปดํŒŒ์ผ๋Ÿฌ(์†Œ์Šค์ฝ”๋“œ๋ฅผ ๊ธฐ๊ณ„์–ด๋กœ ๋ฐ”๊พธ์–ด์„œ) -> ๊ธฐ๊ณ„์–ด -> ์‹คํ–‰
์žฅ์  ๋‹ค์–‘ํ•œ ์ตœ์ ํ™”๊ฐ€ ๊ฐ€๋Šฅํ•˜๋‹ค. (ํฌ๋กœ์Šคํ”Œ๋žซํผ์ด ๊ฐ€์žฅ ๋„๋ฆฌ ์ง€์›๋œ๋‹ค.)
๋‹จ์  ํ”Œ๋žซํผ๋งˆ๋‹ค ๋‹ค๋ฅธ exeํŒŒ์ผ์„ ์ปดํŒŒ์ผํ•ด์•ผ ํ•œ๋‹ค. (CPU, ์šด์˜์ฒด์ œ ๋งˆ๋‹ค ์ดํ•ดํ•˜๋Š” ๊ธฐ๊ณ„์–ด๊ฐ€ ๋‹ค๋ฅผ ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ)

์ปดํŒŒ์ผ

 

2.2 JIT ์ปดํŒŒ์ผ ์–ธ์–ด

  JIT(Just-In-Time) ์ปดํŒŒ์ผ ์–ธ์–ด
์ดํ•ด ์˜คํ”„๋ผ์ธ ์ปดํŒŒ์ผ๋Ÿฌ๊ฐ€ ์†Œ์Šค ์ฝ”๋“œ๋ฅผ ์ค‘๊ฐ„ ์–ธ์–ด๋กœ ์ปดํŒŒ์ผ
๋Œ€ํ‘œ์–ธ์–ด C#, Java, WASM(WebAssembly)
์ฒ˜๋ฆฌ๊ณผ์ • ์†Œ์Šค์ฝ”๋“œ -> ์ปดํŒŒ์ผ๋Ÿฌ -> ์ค‘๊ฐ„ ์–ธ์–ด ์ฝ”๋“œ -> JIT ์ปดํŒŒ์ผ๋Ÿฌ -> ๊ธฐ๊ณ„์–ด -> ์‹คํ–‰
ํŠน์ง• ์ตœ์ข… ๊ณ ๊ฐ์ด ์‹คํ–‰ํ•˜๋Š” ํŒŒ์ผ์€ ๊ธฐ๊ณ„์—์„œ ๋„๋Š” ๊ฒƒ์ด ์•„๋‹Œ ์ค‘๊ฐ„๋‹จ๊ณ„์˜ ๊ฐ€์ƒ๋จธ์‹ ์—์„œ ๋ˆ๋‹ค.
ํ”Œ๋žซํผ ๋ณ„๋กœ VM(Virtual Machine)์„ ์„ค์น˜ํ•ด์•ผ ํ•œ๋‹ค.
ํ”„๋กœ๊ทธ๋žจ ์‹คํ–‰ ์ค‘์— VM์ด ์ค‘๊ฐ„ ์–ธ์–ด๋ฅผ ๊ธฐ๊ณ„๊ฐ€ ์ดํ•ดํ•˜๋Š” ์–ธ์–ด๋กœ ๋ฐ”๊ฟ”์„œ ์‹คํ–‰
Java๋‚˜ C#์€ ํ”Œ๋žซํผ์— ์ข…์†์ ์ด์ง€ ์•Š๊ณ  VM์— ์ข…์†์ ์ž„

JIT

 

2.3 ์ธํ„ฐํ”„๋ฆฌํ„ฐ ์–ธ์–ด

  ์ธํ„ฐํ”„๋ฆฌํ„ฐ ์–ธ์–ด(Interpreter language)
์ดํ•ด ์‹คํ–‰ ์ค‘์— ๊ณ ์ˆ˜์ค€ ์–ธ์–ด๋ฅผ ๋„ค์ดํ‹ฐ๋ธŒ ์ฝ”๋“œ๋กœ ํ•ด์„ํ•ด์„œ ์‹คํ–‰ํ•จ
๋Œ€ํ‘œ์–ธ์–ด JavaScript, Python, Lua, PHP
์ฒ˜๋ฆฌ๊ณผ์ • ์†Œ์Šค์ฝ”๋“œ -> ์ธํ„ฐํ”„๋ฆฌํ„ฐ(์†Œ์Šค์ฝ”๋“œ๋ฅผ ๊ธฐ๊ณ„์–ด๋กœ ํ•ด์„์„ ํ•ด์„œ) -> ๊ธฐ๊ณ„์–ด -> ์‹คํ–‰
์žฅ์  ์ปดํŒŒ์ผ ๊ณผ์ •์ด ์—†์–ด์„œ ๋น ๋ฅด๊ฒŒ ๋Œ๋ฆด ์ˆ˜ ์žˆ๋‹ค.
๋‹จ์  ์˜ค๋ฅ˜๋ฅผ ์ œ๋•Œ ์žก์•„๋‚ด๊ธฐ ํž˜๋“ค๋‹ค. ์‹ค์ œ๋กœ ์‹คํ–‰ํ•˜๊ธฐ ์ „๊นŒ์ง€ ์ฝ”๋“œ์˜ ๋ฌธ์ œ๋ฅผ ์žก์•„๋‚ผ ์ˆ˜ ์—†์Œ(์˜คํ”„๋ผ์ธ ์ปดํŒŒ์ผ๋Ÿฌ๊ฐ€ ์—†๊ธฐ ๋•Œ๋ฌธ)

 

3. ๊ฐ•ํ•œ ํƒ€์ž… ์–ธ์–ด vs ์•ฝํ•œ ํƒ€์ž… ์–ธ์–ด

๊ตฌ๋ถ„ ๊ฐ•ํ•œ ํƒ€์ž… ์–ธ์–ด ์•ฝํ•œ ํƒ€์ž… ์–ธ์–ด
๊ธฐ์ค€: ๋ณ€์ˆ˜ ์„ ์–ธ(๋ณ€์ˆ˜์˜ ์šฉ๋„)๊ณผ ๊ด€๋ จ ์žˆ์Œ. - ๋ณ€์ˆ˜ํ˜•์„ ์„ ์–ธํ•œ ํ›„์— ๋ณ€์ˆ˜ํ˜•์„ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ๋‚˜?
์ดํ•ด NO - ๋ณ€์ˆ˜ํ˜•์„ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์—†๋‹ค. YES - ๋ณ€์ˆ˜ํ˜•์„ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ๋‹ค.
Ex C, C++, C#, Java JavaScript
ํŠน์ง• ํƒ€์ž…์ด ์ •ํ•ด์ ธ ์žˆ๋Š” ์–ธ์–ด๋ฅผ ์“ฐ๋Š” ์ด์œ ๋Š” ๋ณ€์ˆ˜์— ์–ด๋–ค ํƒ€์ž…์ด ๋“ค์–ด๊ฐ€๋Š” ์ง€๋ฅผ ๋ช…ํ™•ํžˆ ์•Œ ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ํƒ€์ž…์ด ์ •ํ•ด์ ธ ์žˆ์ง€ ์•Š์„ ๋•Œ ๋ฒ”ํ•  ์ˆ˜ ์žˆ๋Š” ์‹ค์ˆ˜๋ฅผ ๋ฏธ๋ฆฌ ํŒ๋‹จํ•  ์ˆ˜ ์žˆ๋‹ค. ํ˜‘์—…์„ ํ•  ๊ฒฝ์šฐ์—๋„ ์–ด๋– ํ•œ ๋ณ€์ˆ˜์˜ ํƒ€์ž…์ด ๋ฌด์—‡์ธ์ง€ ๋ชจ๋ฅผ ๊ฒฝ์šฐ ์‹ค์ˆ˜ํ•  ๊ฐ€๋Šฅ์„ฑ์ด ๋†’์•„์ง„๋‹ค.
ํƒ€์ž…์ด ์ •ํ•ด์ ธ ์žˆ์ง€ ์•Š๋‹ค๋ฉด ๊ธฐ๊ณ„๊ฐ€ ์‹ค์ œ๋กœ ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•˜๊ธฐ ์ „๊นŒ์ง€ ์‹ค์ˆ˜๋ฅผ ์ฐพ์„ ์ˆ˜ ์—†๋‹ค.
์ด๋Ÿฌํ•œ ์ด์œ ๋กœ ์ƒ์šฉ์ฝ”๋“œ(์ œํ’ˆ)๋ฅผ ์ž‘์„ฑํ•  ๋•Œ๋Š” ๊ฐ•ํ•œ ํƒ€์ž… ์–ธ์–ด๋“ค์ด ์ผ๋ฐ˜์ ์œผ๋กœ ์‚ฌ์šฉ๋œ๋‹ค.

 

 

4. ๋งค๋‹ˆ์ง€๋“œ ์–ธ์–ด vs ์–ธ๋งค๋‹ˆ์ง€๋“œ ์–ธ์–ด

๊ตฌ๋ถ„ ๋งค๋‹ˆ์ง€๋“œ ์–ธ์–ด ์–ธ๋งค๋‹ˆ์ง€๋“œ ์–ธ์–ด
๋ˆ„๊ฐ€ ๋ฉ”๋ชจ๋ฆฌ์˜ ์ˆ˜๋ช…(๋ผ์ดํ”„ ์‚ฌ์ดํด)์„ ๊ด€๋ฆฌํ•˜๋ƒ๊ฐ€ ํ•ต์‹ฌ
์ดํ•ด  ํ”„๋กœ๊ทธ๋žจ์—์„œ ํฐ ๋ฐ์ดํ„ฐ๋ฅผ ์‚ฌ์šฉํ•˜๋ ค๋ฉด ์šด์˜์ฒด์ œ(OS)๋กœ๋ถ€ํ„ฐ ๋…์ ์ ์œผ๋กœ ์‚ฌ์šฉํ•  ๋ฉ”๋ชจ๋ฆฌ๋ฅผ
 ํ™•๋ณดํ•ด์•ผ ํ•จ ๊ทธ๋ฆฌ๊ณ  ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ค ์‚ฌ์šฉํ•œ ๋’ค์—๋Š” OS์— ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ๋ฐ˜ํ™˜ํ•ด์•ผ ํ•จ
Ex  Java, C#, JavaScript, Lua  C, C++
ํŠน์ง•  ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด๊ฐ€ ๋” ์ด์ƒ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์‚ฌ์šฉ ์•ˆ ํ•˜๋Š” ์ƒ  ํ™ฉ์„ ํŒ๋‹จํ•˜์—ฌ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ๋ฐ˜ํ™˜ํ•ด ์คŒ ํ”„๋กœ๊ทธ๋ž˜๋จธ๊ฐ€ ์ฑ…์ž„์ง€๊ณ  ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ๋ฐ˜ํ™˜ํ•ด์•ผ ํ•จ
์„ฑ๋Šฅ์ด ์ค‘์š”ํ•˜์ง€ ์•Š์€ ํ”„๋กœ๊ทธ๋žจ์„ ๋งŒ๋“ค ๋•Œ ์„ฑ๋Šฅ์ด ์ค‘์š”ํ•œ ํ”„๋กœ๊ทธ๋žจ์„ ๋งŒ๋“ค ๋•Œ
๋งค๋‹ˆ์ง€๋“œ ์–ธ์–ด๊ฐ€ ์‹ค์ˆ˜๊ฐ€ ์ ๊ณ  ํŽธํ•˜๊ธด ํ•จ, ๊ทธ๋Ÿฌ๋‚˜ ์–ด๋ฆผ์ง์ž‘์ด ๋ช…์‹œ์  ํ‘œํ˜„๋ณด๋‹ค ํšจ์œจ์ ์ผ ์ˆ˜ ์—†์Œ

[Unity] ์œ ๋‹ˆํ‹ฐ๋ž€? ๊ฒŒ์ž„๊ฐœ๋ฐœ์„ ์œ„ํ•œ ์—”์ง„ ์œ ๋‹ˆํ‹ฐ๋ฅผ ์†Œ๊ฐœํ•ฉ๋‹ˆ๋‹ค

 

[Unity] ์œ ๋‹ˆํ‹ฐ๋ž€? ๊ฒŒ์ž„๊ฐœ๋ฐœ์„ ์œ„ํ•œ ์—”์ง„ ์œ ๋‹ˆํ‹ฐ๋ฅผ ์†Œ๊ฐœํ•ฉ๋‹ˆ๋‹ค

์œ ๋‹ˆํ‹ฐ(Unity)๋ž€? ์œ ๋‹ˆํ‹ฐ๋Š” ๊ฒŒ์ž„๊ฐœ๋ฐœ์„ ์œ„ํ•œ ๊ฒŒ์ž„์—”์ง„์ž…๋‹ˆ๋‹ค. ์œ ๋‹ˆํ‹ฐ๋ฅผ ํ†ตํ•ด 2D, 3D ๊ฒŒ์ž„์„ ์ œ์ž‘ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ 3D ์• ๋‹ˆ๋ฉ”์ด์…˜๊ณผ ๊ฑด์ถ• ์‹œ๊ฐํ™”, ๊ฐ€์ƒํ˜„์‹ค(VR) ๋“ฑ์˜ ์ฝ˜ํ…์ธ  ์ œ์ž‘์„ ์œ„ํ•œ ํˆด

blcan.tistory.com

๋ฐ˜์‘ํ˜•