๊ฐ๋ง์ ๊ฐค์ ์๋ค๊ฐ ๋ถํ์ง ํ๋ฒ ํด๋ณด๊ณ
๊ฐค์ ์ด๋ฐ ์ ๋ฐ๊ธ ์ฝ๋ค๊ฐ ๊ฐค๋ฌ๋ค์ด ์๋ชป์ดํดํ๊ณ ์๋ ๊ฒ๋ค์ด
์๋๊ฒ ๊ฐ์ ํ๋ฒ ์๊ธฐํด๋ณธ๋ค.
ํด๋์ค ์ค๊ณ ์ํ๊ธฐ
๊ฒ์๊ฐ๋ฐ์ด๋ ๋ค๋ฅธ ์ํํธ์จ์ด ๊ฐ๋ฐ์ด๋ ์ฒ์์ ํด๋์ค์ค๊ณ๋ฅผ ํ๋ ๊ฒ์ ๋ถ๊ฐ๋ฅํ๋ค.
๊ฒฐ๊ตญ ๋์ค์๋ ๋ฐ๋๊ฒ ๋์ด ์๋ค.
์ด๊ฑด ๊ฐ๋ฐ๋ฐฉ๋ฒ๋ก ์ฑ ์๋ฌด๊ฑฐ๋ ์ฝ์ด๋ด๋ ํญ์ ๋์ค๋ ์๊ธฐ๊ณ ์ค์ ๋ก ๋ชธ์ผ๋ก ์ฒดํํด๋ด๋ ๊ทธ๋.
์๋๋ฉด ์ด๊ธฐ์๋ ์ ๋ณด๊ฐ ์ ๋์ ์ผ๋ก ๋ถ์กฑํ๊ฑฐ๋ ์๋ชป๋ ์ ๋ณด(์ฆ ๋์ค์ ๋ฐ๋์ ์๋ ์ ๋ณด)๋ฅผ ๋ง์ด ๊ฐ์ง๊ณ ์
๊ธฐ ๋๋ฌธ์ด์ง.
์ด๋ณด๋คํ ํํ ํ๋ ์ค์๊ฐ ์ด๋ฐ์ ์๋ฒฝํ ํด๋์ค ์ค๊ณ๋ฅผ ํ๋ ค๊ณ ํ๋ค๋ ๊ฑฐ์ผ.
์ด๋ณด๊ฐ ๋์๋ ๊ณ ์๊ฐ ๋์๋ ์ด๊ฑฐ๋ ์ ๋๋ก ๋ถ๊ฐ๋ฅํด.ย
๋จ์ง ๋จ๋ค์ด ๋น ๋ฅด๊ฒ ์ค๊ณํ๋ ๊ฒฝ์ฐ๋ ์ด์ ์ ๋น์ทํ ๊ตฌ์กฐ๋ฅผ ์ฌ๋ฌ๋ฒ ๊ฒฝํํด ๋ดค์๋ฟ์ด์ง
์ค๊ณ๋ฅ๋ ฅ์ด ํน๋ณํ ๊ฒ์ ์๋์ผ.
๊ฒฐ๊ตญ ๊ณ์ํด์ ๋ฆฌํฉํ ๋งํ๋ ์๋ฐ์ ์์ด.ย
๊ทธ๋ฌ๋ ์ด ๋ฆฌํฉํ ๋ง๊ณผ์ ์ ๋น ๋ฅด๊ฒ ๋ฐ๋ณตํ ์ ์๋ ๊ธฐ์ ์ ์ตํ๋๊ฒ ์ค๊ณ๋ฅผ ์ํ๋ ๊ธธ์ด๋ค.
์ฑ๊ธํค ์ฌ์ฉ์ ๋ํ์ฌ
์ฑ๊ธํค์ ๋จ์ํ ๊ธ๋ก๋ฒ ๋ณ์์ผ. ย OOP ์์ย class A์ ์ธ์คํด์ค๋ฅผ ์ ์ญ์ ์ผ๋ก ํ๋๋งย
๋๊ฒ ํ๋ ๊ฒฝ์ฐ๋ฅผ OOP ์ฉ์ด๋ก ์ ์ํด์ ๋งํ๋ ๊ฑฐ๊ณ .ย
C#/Java์์ ์ด ์ธ์คํด์ค๋ฅผ ๋ง๋ค๋ ๋ณดํต new ๋ก ์์ฑํด์ ๋ง๋ค๋ฉด ์ด๊ฑด ํ์ ์์น๋๋ค.
C++ ๊ฐ์ ๊ฒฝ์ฐ ๊ทธ๋ฅ ๊ธ๋ก๋ฒ ๋ณ์๋ก ์ ์ธํ๋ฉดย ๋ฐ์ดํฐ ์์ญ์ ์์น๋๊ณ . (๋ฌผ๋ก new๋ก ์์ฑํ๋ฉดย
์ญ์ ํ์ ์์น๋๋ค)
๊ทธ๋ฆฌ๊ณ static class ๋ ๋ฌธ๋ฒ์ new ๊ฐ์ ํค์๋๋ก ์ธ์คํด์ค๋ฅผ ๋ง๋ค์ ์๊ณ ย
๊ทธ ์์ฒด๋ก ๋ฐ์ดํฐ ์์ญ์ ๋จ ํ๊ฐ์ ์ธ์คํด์ค๊ฐ ์๋์ผ๋ก ์๊ธด๋ค.
๊ฒฐ๋ก ์ ์ผ๋ก ๊ทธ๋ฅ ๊ธ๋ก๋ฒ ๋ณ์ ์ผ๋ฟ์ด๋ค.
๊ทธ๋ฐ๋ฐ ์ด๊ฑธ ํผํ๋ค๊ณ ?
์ฒซ๋ฒ์งธ ๋๊ธ ์ฑ๊ธํค์ด ๋ ์ง์ ๋ถํด ๋ณด์ธ๋ค๋ ๊ฒ์ ์ผ๋ฆฌ๊ฐ ์๊ธดํจ. ๊ฐ๋ฅํ ์ ์ญ๋ณ์(์ฑ๊ธํค)๋ฅผ ์ค์ด๋ฉด ์ข๊ธดํ์ง๋ง ๊ผญ ํ์ํ ๊ฑธ ์์ฐ๋ ค๊ณ ํ๋ฉด
๊ทธ์ ๋ํ ์ด๋ง์ด๋งํ ๋น์ฉ์ด ๋ค์ด๊ฐ๋ค.
๋๋ฒ์งธ ๋๊ธ, ์์๊ตฌ์กฐ์ค๊ณ์ ์ฑ๊ธํค์ ์ ํ ๊ด๋ จ์ด ์๋ ์๊ธฐ๋ค.
๋งจ ๋ง์ง๋ง ๋๊ธ์์ ์๋ชป๋๊ฒ ๋ฉํฐ์ฐ๋ ๋ํ๊ณ ์ฑ๊ธํค๋ง ์ฐ๊ด์๋ค๊ธฐ ๋ณด๋ค ๋ชจ๋ ๋ฐ์ดํฐ (๋ฐ์ดํฐ ์์ญ + ํ์ ์กด์ฌํ๋) ๊ฐ ์ฌ์ค ์ฐ๋ ๋๊ฐ ๊ฒฝ์๊ด๊ณ์ย
์๊ธฐ ๋๋ฌธ์ ํน๋ณํ ์ฑ๊ธํค๋ง์ ๋ฌธ์ ๋ ์๋๋ค.ย ย
๋จ ์ง์ญ๋ณ์ ๊ทธ ์์ฒด (์ง์ญ๋ณ์๊ฐ ์ฐธ์กฐํ๋ ํ์ ์กด์ฌํ๋ ์ค๋ธ์ ํธ๊ฐ ์๋๋ผ, ์ง์ญ๋ณ์ ๋ ํผ๋ฐ์ค ๊ทธ ์์ฒด) ๋ ๋ฌธ์ ๊ฐ ์๋๊ฒ ์ฐ๋ ๋๋ ๊ฐ ์ฐ๋ ๋๋น
์คํ์ ๋ฐ๋ก ๊ฐ์ง๊ณ ์๊ธฐ ๋๋ฌธ์ ์ง์ญ ๋ณ์๋ ๋ฌธ์ ๊ฐ ์๋ค (์ง์ญ๋ณ์๊ทธ์์ฒด๋ ์คํ์ ์์น๋จ)
๊ทธ๋์ ์ด๋ป๊ฒ ํ๋ผ๊ณ ? ์ฐ๋ผ๋ ์๊ธฐ์ผ ๋ง๋ผ๋ ์๊ธฐ์ผ?
๋ถํ์ํ๊ฒ ์ฌ์ฉ๋๋ ๊ฑด ํผํด์ผ ํ์ง๋ง ํ์ํ ๋งํผ ์์ ๋กญ๊ฒ ์ฌ์ฉํด์ผํ๋ค.
์๋๊ณ ?
์ฌ์ค ๊ธ๋ก๋ณ ๋ณ์๋ฅผ ์ฌ์ฉ์ํ๊ธฐ ์ํด ๋๋๋ ํจ๋ฌ๋ค์์ด ํจ์ํ์ธ์ด๋ค. ์ด๊ฑฐ ๊ฒ์์ ๋ชป์ด๋ค.
์จ๋ดค์ ๋๋ถ๋ถ ๊ฐ๋จํ ์์ผ์ด๋ ์์ค์ด๊ณ ์ฌ์ค ์์ ์ฉ์ผ๋ก ๋ถ๊ฐ๋ฅํด.
์? ์ ์ญ๋ณ์(์ฑ๊ธํค) ๋ฅผ ํผํ๊ธฐ ์ํด ๋ณต์ฌ๊ฐ ์ด๋ง์ด๋ง ํ๊ฒ ์ผ์ด๋์ ๋๋์ฒด ์ฑ๋ฅ์ด ์๋์ค๊ฑฐ๋ .
DirectX ๊ฐ ์ direct ๋ผ๋ ์ด๋ฆ์ด ๋ถ์๊ฑด์ง ์๊ณ ์์? ์๋ ์๋์ฐ GUI ์์คํ ์ GDIย ๋ผ๋ ์์คํ ์ด์ผ.
์์ฃผ ์ ์ฐํ๊ณ , ์์ ์ฑ๊ธํค ์ฌ์ฉ์ ๊ทน๋๋ก ์ค์ธ ๊ตฌ์กฐ์ง.ย
ํ์ง๋ง ์ ์ฐํ๊ฒ ์ค๊ณ๋๋ค ๋ณด๋ ๋ณต์ฌ๊ฐ ๋๋ฌด ๋ง์ด ์ผ์ด๋์ ์ฑ๋ฅ์ด ๋น์ท ์๋์.
๊ทธ๋์ ์ด๋ป๊ฒ ? direct๋ก ๋น๋์ค ๋ฒํผ์ ๋ฐ๋ก ์ฐ๊ณ ์ฝ๊ฒ ๋ง๋ ๊ฑฐ์ง.ย
GDI๋ ๋น๋์ค ๋ฒํผ์ ๋ฐ๋ก์ ๊ทผ๋ชปํ๊ณ ์ค๊ฐ์ ์ฌ๋ฌ๋จ๊ณ๋ก ํ๋ ์๋ฐ์ดํฐ๊ฐ ๋ณต์ฌ๋.
์์ ์ฑ๊ธํค์ ์์ด๊ฑฐ์ง.
๊ทธ๋์ DirectX ์ผ.
์ฑ๋ฅ ๋ฌธ์ ๊ทธ๋ค์์ผ๋ก ๊ธ๋ก๋ฒ ๋ณ์(์ฑ๊ธํค)์ ์์ฐ๊ธฐ ์ํด ํ์ํ ์ง์๋ค์ด ์ด๋ง์ด๋งํด.
๋ฌด์จ ๋ง๋ ์๋๋ ์๋ฆฌ๋ ํ๊ฒ ์ง๋ง ๋ด๋ง์ด ๋ง์. ์ง์ ์ฅ๋ฒฝ์ด ๋๋ค์ด ์๊ฐํ๋ ๊ฒ๋ณด๋ค ํจ์ฌ ๋์.ย
๋นจ๋ฆฌ ๋ฐฐ์์ ๋นจ๋ฆฌ ์จ๋จน์ด์ผ ํ๋๋ฐ ์ธ์ดํ๋ ๋ถ์ก๊ณ ์ต์ํด์ง๋๋ฐ ๋ช๋ ์ฉ ๊ฑธ๋ฆฌ๋ฉด ์๋์ง ~
๊ทธ๋์ ๊ฒฐ๋ก ์ ๋ถํ์ํ ์ฑ๊ธํค๋ง ์๋๋ฉด ๋ง์ ๋๋ก์จ. ์๋ ๊ผญ ์จ์ผํด.
๊ทธ๊ฒ ํจ์ํ์ธ์ด์ ๋ค๋ฅธ imperative language(C/C++, java, C#, ...) ์ ์ฅ์ ์ด์ ๋จ์ ์ธ๋ฐย
์ด ๋จ์ ์ ๋ณด์ํ๊ณ ์ ์ฌ์ฉ์ ํผํ๋ค๋ฉด ๊ทธ ๋๊ฐ๋กย ๋ค์ฌ์ผํ๋ ๋ ธ๋ ฅ์ด ์ ๋ง ์ด๋ง์ด๋ง ํ๋ค.
์์์ ํผํด๋ผ?
"์์๋์ delegation ํ๋๋ก ์ค๊ณ๋ฅผ ํ์" ๋ญ ์ด๋ฐ ์๊ธฐ๊ฐ ๋ง์.
๋ฌผ๋ก ๊ตฌ์กฐ์ ์์์ด ์๋๋ผ delegation ์ด ๋ง๋ ๊ตฌ์กฐ๊ฐ ์๋ค.
์ด๋ฐ ๊ฒฝ์ฐ์๋ ์์์ ์ฐ์๋ ๊ฒ ์๋์ผ ~
๋ชจ๋ธ๋ง์ ํ ๋ ํด๋์ค๊ฐ์ ๊ณต์ ๋๋ ์์ฑ์ ๊ณตํต ์์ฑ์ผ๋ก ๋ชจ๋ธ๋ง๋ฅผ ํ ๊ฒ์ธ๊ฐํ๋ ๋ฌธ์ ๋กย
๋ง์ฝ ๊ทธ๋ ๋ค๋ฉด ์์์ ์ฐ๋๊ฒ ๋ง์.
์๋ก,ย ์ฌ๋๋ age ๋ผ๋ ๋์ด๋ผ๋ ์์ฑ์ด ์๊ณ ๊ฐ(Dog)๋ age๋ผ๋ ์์ฑ์ด ์กด์ฌํ๋๋ฐ ์ด ๋๊ฐ์ ๊ณตํต๋ ์์ฑ
์ด ์๋ค๊ณ ์์์ ํด์ผ ํ๋๋? ์ด๊ฑด ๋ชจ๋ธ๋ง์ ๋ฌธ์ ๋ก ์ด๊ฑธ ๊ณตํต์ ์์ฑ์ผ๋ก ๋ณผ๊ฒ์ด๋ ์๋๋๋ก ์ ๋ฌด ๋๋ฉ์ธ๋ง๋ค
ํ๋ฆฌ๋ค. ํ์ง๋ง ๊ทธ ์ ๋ฌด ๋๋ฉ์ธ์์ ์ด๊ฒ ๊ณตํต์ ์์ฑ์ด๋ค ๋ผ๊ณ ๋ชจ๋ธ๋ง์ด ๋๋ฉดย
๊ผญ ์์์ ์จ์ผํจ.
๊ผญ ์ดํดํด์ผ ํ ๊ฒ ์์์ ๊ฒฐ์ ํ๋ ๊ธฐ์ค์ด ๊ธฐ๋ฅ์ ๋ฌผ๋ ค๋ฐ๊ธฐ ๋๋ฌธ์ ์์ํ๋๊ฒ ์๋์ผ.
๊ณตํต ์์ฑ์ด ์๋๋ ์๋๋๋ก ๊ฒฐ์ ํด์ผ ํจ.
๋ฉ์๋๋ฅผ ์ด๋ ๊ณ์ธต์ ๋๊ณ ์์์ ๋ฐ์์ง ์ค๋ฒ๋ผ์ด๋๋ฅผ ํ ์ง๋ ๊ทธ ๋ค์์ด์ผ.
์ฝ๊ฐ ๋ฒ์ธ๋ก ์ ๋ํฐ DOT ์ ๋ฐ์ดํฐ ๋๋ฆฌ๋ธ ๋ฐฉ์์ด๊ณ ๊ตฌ์กฐ ๋ณด๋ค๋ ์ฑ๋ฅ์ ๊ทน๋๋ก ์ถ๊ตฌํ๋ ๋ฐฉ์์ด์ผ.ย
๋ด๊ฐ๋ดค์๋๋ C/C++ ๋๋๊ณ ์ฑ๋ฅ์ฌ๋ฆฐ๋ค๊ณ ๊ธฐ๊ณ์ด๋ ์ด์ ๋ธ๋ฆฌ๋ก ์ง๋ ๊ฒฉ์ด๋ค.
๋ฌผ๋ก ๋ฐ์ดํฐ ๋๋ฆฌ๋ธ ๋ฐฉ์์ด ๊ตฌ๊ธ์์๋ ํฌ๋กฌ๋ง๋ค๋ ์ฌ์ฉํ๋ ๋ฐฉ์์ด๊ณ ๋๋ฆ์ ์ด์ ๊ฐ ์กด์ฌํ๊ฒ ์ง๋งย
๊ทธ๋ค์ ์ถฉ๋ถํ ์ธ๋ ฅ์ด ์์์.
์ต์ํ ๋๋ ๋๋ค์ด ์ฌ์ฉํ ย ๋ฐฉ๋ฒ์ ์๋์ผ.ย ๊ตฌ์กฐ๋ฅผ ์ ์ก๋๊ฒ ์ฐ์ ์ด์ง.
๊ทธ ๋ฐ์ ์ข๋ ๊ธธ๊ฒ ์ฐ๊ณ ์ถ์๋ฐ ์ ๊น ๋๊ฐ๋ค ์ฌ์ผ์ด ์๊ฒจ์ย
๋ค์์ ์ฐ๋๋ก ํ๊ฒ ๋ค.
๋น๋ ๊ธ์ ์ข์๋ฐ ๋๊ธ์ ์์ ํ์ง๋ง์. ์ง์ง๋ก ์ฐพ์๊ฐ์ ์ฃฝ์ฌ๋ฒ๋ฆฐ๋ค.
2๋ฒ์งธ ๋๊ธ ์ป๋ ์ฌ๋์ธ๋ฐ ์ฑ๊ธํค ๊ธ ๋ณธ๋ฌธ์์ ์์ง ์ฌ๋๋ค ์์ ใ ใน๋ค๋ค๊ณ ํด์ ์ ๋ ๊ฒ ์ด๊ฑฐ์. ์๋ฌด๋ฆฌ ๊ทธ๋๋ ๋งฅ๋ฝ์ ๋ง์ถฐ์ ์ฝ์ด์ผ์ง.
๋ณํํ๋ ์คํ์ ๋ง์ถฐ์ ๋ฆฌํฉํ ๋ง์ ๊พธ์คํ ํด์ผํ๋ค - ๋์ ์ฑ๊ธํค์ ํ์ํ ์ํฉ์์๋ ์จ์ผํ๋ค - ๋์ ์์์ ํผํด๋ผ - ์ ํํ๋ composition over inheritance ๋ผ๊ณ OOP ์ค๋ ์จ๋ณธ ์ฌ๋๋ค์ ๋ค ๋๊ฐํ๋ ์๊ธฐ์ OOP ์์ ๋จ๋ฐํด์ ๋ณต์ก๋ ์ ๋๋ก ์ ์ดํ ์ฝ๋๋ฅผ ๋ณธ์ ์ด ์์. ์์์ ๊ฐ์ฅ ํฐ ๋ฌธ์ ๋ ๋ถ๋ชจ์ ์์ ํด๋์ค์ ์ปคํ๋ง์ด ๋๋ฌด ๊ฐํจ. ์๊ฑฐ๋๋ฌธ์ ์ฝ๋๋ค์ ๋ ์ด์ ์์ ํ ์ ์๊ณ ๊ธฐ๋ฅ ์ถ๊ฐํ ์ ์๋ ๋ ๊ฑฐ์ํ๋๋ ๊ผด์ ๋๋ฌด ๋ง์ด ๋ดค์. ์์์ ์ต์ํํด์ ํ์ํ ๊ณณ์๋ง ์จ์ผํจ.
์ ๋ํฐ DOT๋ ECS์ ๊ธฐ๋ฐํด์๊ณ ECS๋ ์ ํํ๋ Data-Oriented Progamming์ ๊ธฐ๋ฐํด์์(DOT์ DO๋ Data-Oriented์). ECS๋ ์ฑ๋ฅ ํฅ์์ ๋ฉ๋ชจ๋ฆฌ ์บ์ ์ ์ค๋ฅ ์ ๋์ฌ์ ํ๋ ๋ฐฉ์์. CPU๊ฐ ๋ฉ๋ชจ๋ฆฌ ์ฃผ์๋ฅผ ์ญ์ฐธ์กฐํ ๋ ์ญ์ฐธ์กฐํ ๋ฐ์ดํฐ๋ง ๊ฐ์ ธ์ค๋๊ฒ ์๋๋ผ ๋ฐ์ดํฐ ๋ญํฐ๋ฆฌ๋ฅผ ๊ฐ์ ธ์์ ์บ์์ ์ ์ฅํ๋๋ฐ, ์ดํ ์ญ์ฐธ์กฐํ ๋ ์บ์์ ์๋ ์ฃผ์๋ฉด ๋จ๊น์ง ๊ฐ ํ์ ์์ด ๋ฐ๋ก ์บ์์์ ๊ฐ์ ธ์ค๋๊ฑฐ์. ํ๋ CPU์ ๋ณ๋ชฉ์ ํด๋ก ์์ฒด๋ณด๋ค๋ ๋ฉ๋ชจ๋ฆฌ ์กฐํ๊ฐ ์๊ฐ๋ณด๋ค ๋ง์ด ๋จน๋๋ฐ, ์ด๊ฑธ ์์ฐ์ผ๋ก์ ์ฝ๋์ ๋ฐ๋ผ์๋ C/C++๋ก ๋ณ๊ฒฝํ๋ ๊ฒ๋ณด๋ค ๋ ๋นจ๋ผ์ง ์๋ ์์. ๊ตฌ์กฐ์ ์ผ๋ก๋ ์์์ ๊ฑฐ์ ํฌ๊ธฐํ๊ณ ์ปดํฌ์ง์ ์ค์ํ๋ ๊ตฌ์กฐ๋ผ์ ๊ตฌ์กฐ๋ฅผ ๋ชป ์ฑ๊ธฐ๋๊ฒ ์๋. OOP๋ณด๋ค๋ ๋ช ๋ นํ์ ๊ฐ๊น์ธ ๋ฟ์.
ํจ์ํ์ ์ ํํ๋ ์ํ ๋ณํ๋ฅผ ์ ์ดํ๋ ค๊ณ ๋ง๋ ๊ฑฐ์. ์๋ฌด๋ฐ ๊ณณ์์๋ ์กฐํํ๊ณ ์์ ํ ์ ์๋ ๊ธ๋ก๋ฒ ๋ณ์๋ ์ธ์ ๋ณํ ์ง ๋ชจ๋ฅด๋ ํ ์ฝ๋์์ ๋ง๋ ๋ฒ๊ทธ๊ฐ ๋ค๋ฅธ ์ฝ๋์๋ ์ํฅ๋ผ์ณ์ ๋๋ฒ๊น ์ด ์ด๋ ค์์ง๋ ์ํฉ์ ๋ฐฉ์งํ๋ ค๊ณ ๋ง๋ฌ. ๊ทธ๋์ ์์ ํจ์ํ์์๋ ์ด ๋์ฆ๋ฅผ ์ด๋ป๊ฒ ์ฒ๋ฆฌํ๋, ์ฑ๊ธํค๋ค์ ๋ฉ์ธ ํจ์ ์ชฝ์์ ๋ก์ปฌ ๋ณ์๋ก ๊ฐ์ง๊ณ ์๊ณ ๊ทธ๊ฑธ ๋ค๋ฅธ ํจ์์ ๋๊ธฐ๊ณ ๋๊ฒจ์ ์กฐํ๋ฅผ ํ๋๊ฑฐ์. ์ด๋ ๋ณต์ฌํ๋ ๊ฑด ์ฑ๊ธํค ๋ฐ์ดํฐ ์์ฒด๊ฐ ์๋๋ผ ์ฑ๊ธํค ๋ ํผ๋ฐ์ค๋ผ์ ๊ทธ๋ฆฌ ๋ฌด๊ฑฐ์ด ์์ ์ ์๋. ํจ์ํ์ ๊ฒ์ ํด๋ผ์ด์ธํธ์ ์ฐ๊ธฐ ์ด๋ ค์ด ์ด์ ๋ ์ผ๋ฐ ์ ์ ๋ฐ์ดํฐ์ ํ๋๋ฅผ ์์ ํ๋ ค๋ฉด ๋ถ๋ณ์ฑ์ ์งํค๊ธฐ ์ํด์ ์ ์ ์ ๋ฐ์ดํฐ ๋ง๋ค์ด์ ๋ชจ๋ ํ๋์์ ์๋ ๊ฐ/๋ ํผ๋ฐ์ค๋ฅผ ๋ณต์ฌํ๊ณ ์์ ํ ํ๋๋ง ๋ค๋ฅด๊ฒ ์์ฑํด์ผ ํจ.
๋น์ฐํ ๊ฒ์์์๋ ์ ์ ๋ฐ์ดํฐ์ ์์ ์ด ๋น๋ฒํ๋๊น ์ด๊ฒ ๋ ํผ๋ฐ์ค๋ ์ซ์ ๊ฐ์ด๋ผํด๋ ์ฑ๋ฅ์ด ๋ถ๋ด ๋จ. ๊ทธ๋์ ๋ชป ์ฐ๋๊ฑฐ์ง ์ฑ๊ธํค ๋๋ฌธ์ ๋ชป ์ฐ๋ ๊ฑด ์๋. ํจ์ํ์ ๋์ ์๋ฒ์๋ ์ ์ธ ์ ์์. ์๋ฒ๊ฐ์ ๊ฒฝ์ฐ ์ฐ๋ฃจํ์ด ๊ฝค ์ค์ํ๋ฐ ํจ์ํ์ ๋ถ๋ณ์ฑ ์ฑ์ง์ด ๋ฉํฐ์ฐ๋ ๋ฉํ๊ธฐ ์ข๊ฒ ๋ง๋ค์ด์ค. ํจ์ํ์ผ๋ก ๋ง๋ค์ด์ง ๊ฒ์ ์๋ฒ ์์ฃผ ๊ฐํน ๋ณผ ์ ์์.
๋ฌผ๋ก ์๋ ์๊ธฐ์ผํ ์ง๋ง composition , delegation๋ ์ฌ์ค ๋ ผ๋ฆฌ์ ์ผ๋ก๋ ์์์ด์ผ. DB ๋ชจ๋ธ๋ง์์๋ 1:1 ์ด๋ , 1:N ์ด๋ FK ๋ก ๋ค๋ฅธ ํ ์ด๋ธ ์ฐธ์กฐํ๋ ๊ฒ์ inhertance ๋ผ๊ณ ํจ. compositionํ๊ณ ๊ฐ์. ๋ฌผ๋ก composition over inheritance ์์ composition์ ๋ฌธ๋ฒ์ ์ผ๋ก as-is ๊ด๊ณ๋ฅผ ํผํด์ ๋ถํ์ํ ์์๊ด๊ณ๋ฅผ ์์ ์๋ ๊ฑฐ๊ณ . ๊ทธ๋ถ๋ถ์ ๋๋ง์ ๋๊ฐํด. ๊ทธ๋ฆฌ๊ณ ๊ธ์ ์ป๋ฃ์ด ๋ชจ๋ธ๋ง์ ํฌํจ๋๋ ๊ฒฝ์ฐ์๋ ์์์ ์ฐ์๊ณ ํ์ง. ๋ชจ๋ธ๋ง์ด๋ผ๋ ๋ง์ ์๋ ๊ทธ๋๋ก ์ค๊ณํ๋ ๊ฒ ์๋๊ณ ์ํ๋ ๊ฑธ ๋ง๋ค๊ธฐ ์ํด ๊ผญ ํ์ํ ๊ด๊ณ๋ฅผ ์ ์ํ๋ ๊ฒ์ด๊ณ . ์ฆ ๋๋งํ๊ณ ๊ฐ์.
ํจ์ํ์ ๋ํด์๋ ์ข ๋ง์ด ์๋ชป์๊ณ ์๋๊ฑฐ ๊ฐ์๋ฐ, ์๋ฒ์์ ์ฐ๋ฃจํ์ด ์ถฉ๋ถํ ์๋์ค๊ฒ ๋ง๋ ๊ฑด ๋๋ง๋๋ก ๋๋ฌผ์ง๋ง ์๋ค. ๊ทผ๋ฐ ๊ธ์ ์ด๊ฒ์ฒ๋ผ ๊ทธ์ ๋ ์์ค๊น์ง ๊ทธ๊ฑธ ๊ณต๋ถํ๋ ค๋ฉด ์ผ๋ง๋ ๊ฑธ๋ฆฌ๋์ง ์? ๊ทธ ์ฌ๋ก๋ค ์๋ด๋ด. ๊ฑฐ์๋ค ๊ทธ ์ธ์ด ๋ง๋ ์ฌ๋์ด๊ฑฐ๋ ์ปดํ์ผ๋ฌ ๋ง๋ ์ฌ๋๋ค ๋ฐ๋ ค๋ค๊ฐ ๊ตฌ๊ธ์ด๋ ์๋ง์กด์์ ๋ง๋ ๊ฑฐ์ผ. ์ผ๋ฐ์ ์ธ ๊ฐ๋ฐ์๊ฐ ๊ทธ๋ ๊ฒ ๋ง๋๋๊ฑด ๊ฑฐ์ ๋ถ๊ฐ๋ฅํด. ์๋นํ ํฌ์๋ฅผ ํด์ผํด.
๊ทธ๋ฆฌ๊ณ ํด๋ผ์ด์ธํธ์์ ๋ชป์ฐ๋ ์ด์ ๋ ํ๋ฆฐ๊ฒ ์ฐ๋ฃจํ์ ์ด๋ป๊ฒ ํด์ C++์์ค์ด์์ผ๋ก ๋ง๋ค์ ์์ง๋ง ์๋ต์ฑ์ ํ์ ํ ๋จ์ด์ ธ. ์? ๋ณต์ฌ๊ฐ ๋๋ฌด ๋ง์์ ๊ฐ๋น์ง๊ฐ ์ด๋ง์ด๋งํ๊ฒ ์ปค์ ธ. ๊ทธ๋ฆฌ๊ณ ๋๋ถ๋ถ stop the world GC๋ฅผ ์ฐ๊ธฐ ๋๋ฌธ์ ํ๋ ์ ๋๋์ด ๋๋ฌด ์ฌํ๊ฑฐ๋ . C#๋ ๊ทธ๋ ์ง๋ง C#ํ๊ณ ๋น๊ตํ ๋งํ ์์ค์ด ์๋์ผ.
๊ทธ๋ฆฌ๊ณ ์์ํจ์ํ์ ์ํ๋ณํ๋ฅผ ์ ์ดํ๋ ค๊ณ ๋ง๋ ๊ฒ ์๋๊ณ ์์ ์ํ ๋ณํ๋ผ๋ ๊ฐ๋ ์์ฒด๊ฐ ์๋ค. ๋ณ์, ์ฆ ๋ณํ๋ ๊ฐ๋ ์์ฒด๊ฐ ์์ด. ๊ทธ๋์ ํญ์ ์๋ก์ด ๊ฐ์ ์๋ก ๋ง๋ค์ด. ๊ทธ๋ผ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ด๋ป๊ฒ ์์ ํ๋๊ณ ? ์ธ์ด์ ์ผ๋ก ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์์ ํ๋ ๋ฐฉ๋ฒ์์ฒด๊ฐ ์์ด. ๋จ์ง ๋ฐํ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ(IO Monad) ๊ฐ IO ํ์ ์ ํํ์๋๋ก ๋ฐํ์์ ์คํํ๋ ๊ฑฐ์ง. ๋ณธ์ธ๋ ๋ณธ์ธ ์ ๋ชจ๋ฅด๊ณ ์๋ค๋๊ฑธ ์๋ฉด์๋ ๋๋ฌด ์๋์ฒ ์ด๊ฑฐ ์๋?
์ค์ ๋ก ํด๋ณด๊ณ ์๋ ์ถฉ๋ถํ ๋ง๋ค์ ์๋ค๋ ์๊ธฐ๋ ์ ๋๋ก ๋ชปํด ~ ๋ด๊ฐ ๋ณผ๋ ๋๋ง์ ๊ทธ๋ฅ ์ง๊ธฐ ์ซ์ด์ ๊ทธ๋ฅ ์๋์ฒ ์ฐ๊ธฐ๋ ๊ฒ ๋ฟ์ด์ผ. ๊ทธ๋ ๊ฒ ์์๊ณ ์์ผ๋ฉด ๋ชจ๋๋๊ฐ ๋ญ์ง ๊ฒ์ํด์๋ผ๋ ๋๊ธ ๋ฌ์๋ด. ๋ด๊ฐ ๋ฐ๋ฐํด์ค๊ฒ~. ๊ทธ๋ ๊ฒ ์์๋๋ฏ ๋งํ๋ฉด์ ์ค๋ง ๋ชจ๋๋ ์ ๋๋ ์ดํดํ๊ณ ์์ง ์์?
delegation์ composition์์ ์ด๋ป๊ฒํ๋ฉด ์ธํฐํ์ด์ค ๋ ธ์ถ์ ํ ์ ์์๊น๋ฅผ ๊ณ ๋ฏผํด์ ๋ง๋ค์ด์ง ๊ฒ์ด๋ผ ๋ณดํต ๊ฐ๋ฐ์๋ค์ ์ข ๋ ์ฌ๋ฌ ํจ๋ฌ๋ค์์ ์ ์ฉ๋๋ compostion์ด๋ผ๋ ๋จ์ด๋ฅผ ์. ์๊ฒฌ์ ๋น์ทํ์ง๋ง ์ข ๋ ์์ธํ๊ฒ ์ ์ํ๋ ค๊ณ ์ปดํฌ์ง์ ์ด๋ผ๋ ๋จ์ด๋ฅผ ๊ฐ์ ธ์จ๊ฑฐ์. ํจ์ํ ์๊ธฐ๋ ๋น์ฐํ ํจ์ํ ์จ๋ผ ๊ทธ๋ฐ ์๊ธฐ๊ฐ ์ ๋ ์๋๊ณ ์ถ์ฒ๋ ์ํด. ์ฑ๊ธํค ๋ณต์ฌ ๋๋ฌธ์ ๋ชป ์ด๋ค๋ผ๋ ๋ฌ์์ค๋ก ๋ณด์ฌ์ ์ ๋ชป ์ฐ๋์ง ๋ค์ ์ ๋ฆฌํ๊ฑฐ์ผ. GC ๋ฐ์ ๋๋ฌธ์๋ ๋ชป ์ฐ๋ ๊ฑฐ๋ ๋์ํด ์ฑ๋ฅ ์ด์ ๋ง๊ณ ๋ ๊ทธ๋ฐ ์ด์ ๊ฐ ์๋๊ฒ๋ ๋ง์. ์์ ํจ์ ์ธ์ด์์๋ ์ํ๋ผ๋ ๊ฐ๋ ์ ๋ ผ๋ฆฌ์ ์ผ๋ก๋ ์กด์ฌํ๊ธด ํด ๊ฒฐ๊ตญ ๋ค ๋ชจ๋๋๋ก ๋ํํ๋ ๊ฑด ๋ง๋๋ฐ ๋ฐํ์์๋ ๊ฒฐ๊ตญ ๊ทธ ๋๋ค๋ค์ ์คํํ๋ฉด์ ๋ฉ๋ชจ๋ฆฌ๊ฐ ๋ณํํด.
ํ์ค์ผ์์๋ ์ฑ๋ฅ ํํ์ ์ํด์ ์์ ํจ์ํ์ ๊นจ๋ ๋๊ตฌ๋ค์ด ๋ช๊ฐ ์์ด์ ์ธ์ด์ ์ผ๋ก ๋ถ๊ฐ๋ฅํ์ง๋ ์์. ๋ ์ด๋ฏธ ํจ์ํ์ ํ์ ์์ ๋ง์ด ์จ๋ณด๊ณ ์๊ธฐํ๋๊ฑฐ๋ผ ์ด๋ฏธ ๋ค ์๋ ๊ฒ๋ค์ด์ผ ๋ชจ๋๋๋ฅผ ์๊ณ ์๋ค๋ฉด ์ํ ๋ชจ๋๋(State Monad)๋ผ๋ ๊ฐ๋ ์ ์๋?
์์ง . ๊ณ์ํด๋ด~
ํน์ State Monad๊ฐ ๋ฉ๋ชจ๋ฆฌ ๋ณ๊ฒฝํ ๋ ์ฌ์ฉํ๋ค๋ ๊ทธ๋ฐ๋ง์ ์๋์ง? ์๋๊ธธ ๋ฐ๋~
๋น์ฐํ ๊ทธ๋ฐ ์๊ธฐ๊ฒ ์ด? ์ํ๋ ๊ฐ๋ ์ด ์ถฉ๋ถํ ์กด์ฌํ๋ค๋ ์๋ฏธ์ง ๊ฐ๋ฐํ ๋๋ (๋ชจ๋๋๋ก ์ถ์ํ๋)์ํ๊ฐ ์ด๋ป๊ฒ ๋ณํํ๋ ์ ๊ฒฝ์ฐ๋ฉด์ ๊ฐ๋ฐํด
๊ทธ๋ฆฌ๊ณ ํ์ค์ผ์์ ์์ํจ์ํ์ ๊นฌ๋ค๋๊ฒ unsafe ๋งํ๋๊ฑฐ๋ผ๋ฉด ์ค๋ง์ด์ผ. ๊ฑ๋ ๊ทธ๋ฅ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์์. ์๋ฅผ ๋ค์ด C์ธ์ด๋ ๋ฉ๋ชจ๋ฆฌ ์ฐ์ฐ์ ์ถ์ํํ๊ณ CPU์ฐ์ฐ์ ์ถ์ํํด์ ๋ฉ๋ชจ๋ฆฌ์ ์ง์ ๊ฐ์ ์ฝ๊ณ ์ธ์ ์์ง๋ง ํค๋ณด๋๋ ๋ง์ฐ์ค๋ก ๋ถํฐ ๊ฐ์ ์ฝ๊ฑฐ๋ ์ธ์ ์์ด. IO๋ฅผ ์ถ์ํํ์ง ์์์ C์ธ์ด๋ ํค๋ณด๋๋ ๋ง์ฐ์ค๋ผ๋ ๊ฐ๋ ์ ๋ชฐ๋ผ. ํ๋ค๋ชปํด ํ๋ฉด์ "hello" ๋ผ๋ ๊ธ์๋ ์ถ๋ ฅ๋ชปํด. ๋จ์ง ํ์ค๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์์ฑํด์ ์ถ๊ฐ์ ์ผ๋ก ํ๋๊ฑฐ์ง~~ OK?
State Monad๋ผ๋๊ฒ ๋๋ฌธ์ ์ํ๊ฐ ์กด์ฌํ๋ค๋ ~~ ๋ณ์์์ ์ฝ์ด์ค๊ณ ์ฐ๊ณ ํ๋ ๊ฒ์ฒ๋ผ ์ฝ๊ฒ ๋ค๋ฃฐ์ ์๊ฒ ๋ง๋ ๊ฑฐ์ง ์ค์ ๋ก๋ ์์ ํ purityํ ์ฐ์ฐ์ด๊ฑฐ๋ ? ์๋ ์ง์ง ์๊ณ ์๊ธฐํ๋๊ฑฐ ๋ง์?
do { x <- get; put (x-1); get } ์ด๊ฒ ์ง์ง๋ก x๋ฅผ ๋ณ๊ฒฝํ๋ค๊ณ ์๊ฐํจ? ์ฌ๊ท์ ์ผ๋ก ์๋ก์ด x๊ฐ ์๊ธฐ๊ณ ๊ทธ๋ฅ ๋ณดํต์ ์์ฃผ ํ๋ฒํจ ๋ชจ๋๋์ผ. ๋ชจ๋๋ ์ปจํ ์คํธ์์ ๋ํ ์ผํ ๋ถ๋ถ์ ์จ๊ฒจ์ค ๋ฟ์ด์ง. ์์ purity ํด.
๊ทธ๋งํ์. ์๊ฐ๋ญ๋น๋ค.
์๋ ์ธ์ ์์ ํจ์ํ์ด ์์ํ์ง ์๋ค๊ณ ํ๊ฑฐ์ผ ๋ด๊ฐ? ์ํ๊ฐ ๋ ผ๋ฆฌ์ ์ธ ๊ฐ๋ ์ผ๋ก๋ ์กด์ฌํ๋ค๋ ์๋ฏธ์ง. ์ํ ๋ณํ๋ผ๋ ๋จ์ด๊ฐ ์ฑ๋ฆฝ ์ํ๋๊ฒ ์๋์ผ ๊ฒฐ๊ตญ ๋ชจ๋๋ ์์์๋ ๋ง์ด ๋ผ. ์ ์๊ณ ์์์. ํจ์ํ์ผ๋ก ์๋ฒ ์งค ๋ ์ ์ ์ํ ๋ณํ๋ฅผ ์ ์ํ๊ณ ์คํํ๋ค๊ณ . ์ํ ๋ณํ๋ผ๋ ๋จ์ด๋ฅผ ์๊พธ ๋ณ์ ๊ฐ ์์ ์ผ๋ก๋ง ๋ฐ์๋ค์ด๋ฉด ๊ณค๋ํด. ์์ํจ์ํ์ ๊นจ๋ ๊ธฐ๋ฅ์ ๋ํด์๋ ํ์ค์ผ์์ ๋ฉ๋ชจ๋ฆฌ ๋ณํ๊ฐ ์์ ๋ถ๊ฐ๋ฅํ๋ค๋ผ๋ ์๋ฏธ๋ก ๋ฐ์๋ค์๊ธฐ ๋๋ฌธ์ ํ์ค ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ก ๊ฐ๋ฅํ๋ค๋ ์๋ฏธ๋ก ํ๊ฑฐ์ผ. ๊ฒฐ๊ตญ ์ฑ๋ฅ๋๋ฌธ์ ๊นจ์ผํ๋ ๊ฒฝ์ฐ๊ฐ ์๊ณ ๊ธฐ๋ฅ์ ์ ๊ณตํด์ผํ๋๊น. ๊ทผ๋ฐ ๋ด๊ฑด ๋ค ๊ด์ฐฎ์๋ฐ ๋น์๋ฅ๋๋ฏ์ด ๋งํ๋ฉด ์ข ๊ทธ๋ ๋ค. ๋ค๋ฅธ ์๊ฒฌ ์ฃผ๋๊น ๋ด๊ฐ ํจ์ํ ๋ชจ๋ฅผ๊ฑฐ๋ผ๊ณ ์๊ฐํ๋ ์ด์ ๋ ๋์ฒด ๋ญ์ผ. ํจ์ํ ์๋ฒ๋ก ์ถ์๋ ํ์ด.
๋ณดํต evaluation ๊ณผ execution ์ด๋ ๊ฒ ๋๋ . ํ์ค์ผ์ evaluation ๋๋ ์์ ์์ํ ํจ์ํ ์ธ์ด์ผ. side effect๊ฐ zero. IO Monad ๊ทธ์์ฒด๋ side effect๊ฐ ์์ด. ๋จ์ง ๋ฐํ์์ execution๋ ๋ ์ค์ ๋ก side effect๊ฐ ์๊ธฐ๋๋ฐ ์ด๊ฒ๋๋ฌธ์ purity๊ฐ ๊นจ์ง๋ค๋๊ฑด ์ดํด๊ฐ ์์ ํ ์์ด์ ๊ทธ๋. ๊ทธ๋ฅ ๋ชจ๋ฅด๋๊ฑฐ.
OK ๋น์๋๋๋ฏ์ด ๋งํ๊ฑด ์ฌ๊ณผํ๊ฒ ๊ณ ์๋ฒ๊น์ง ๋ง๋ค์ด๋ดค์ผ๋ฉด ์ด๋์ ๋ ๋ค๋ฃจ์ด ๋ดค๊ฒ ์ง๋ง , ๊ทธ๋ ๋ค๊ณ ์์ฃผ ์ ์ดํดํ๋ค๋ ๋ฏ์ด ๋งํ๊ฑด ๋ ์๋ชป. ๋๊ฐ ๋งํ๊ฒ ์ฒ๋ผ ๋ ๊ทธ ์ ๋ ์ดํด๊ฐ ์์ด.
์ํ ๋ณํ๊ฐ side-effect์ผ? ๋ถ๊ฐํจ๊ณผ๋ ์ํ๋ณํ๋ ๋ณ๊ฐ ๊ฐ๋ ์ด์ง. ๋ชจ๋๋๋ผ๋ ๊ฐ๋ ์ด ๊ผญ ์ํ๋ ์ฎ์ด์ง๋ ์์ง๋ง ์ํ ๋ณํ๋ฅผ ์ฌ์ด๋์ดํํธ ์ ์ดํ๋ฉด์ ์ ์ํ๋๋ฐ ์ฐ์ด์์. ์๊พธ ์ํ๋ณํ ์๊ธฐํ๋ค๊ณ purity ๊นจ๋๊ฑฐ๋ผ๊ณ ์๊ฐํ๋ฉด ์ข ๊ทธ๋ ๋ค๋๊น
์ฅ? ๊ทธ๋ผ ์ํ๋ณํ๊ฐ ๋ญ์?
side effect๋ ๋ฉ๋ชจ๋ฆฌ๊ฐ ๋ณ๊ฒฝ๋๋๊ฑธ ๋งํด ๋์? ๊ทธ๋ผ ์ํ๋ณํ๋ ๋ญ์?
๋ ผ๋ฆฌ์ ์ธ ๊ฐ๋ ์์ ์ํ ๋ณํ๋ฅผ ๋งํ๋๊ฑฐ์ผ ๊ฐ๋ น ์ ์ ๊ฐ ๋ฌด์ธ๊ฐ๋ฅผ ๊ตฌ๋งคํ๋ค๋ ๋ก์ง์ ๋ด๋ ๋ชจ๋๋๋ ๋์์๋ ์ ์ ์ํ์ ์์ ์ํ๋ฅผ ๋ฐ์์ ๋ณํ๋ ์ ์ ์ํ์ ๋ณํ๋ ์์ ์ํ๋ฅผ ๋ฆฌํดํ๊ฒ ์ง. ์ด๋ ์ด ๋ก์ง ์์ฒด๊ฐ ์ํ๋ณํ์ผ. ๋ฉ๋ชจ๋ฆฌ ๋ณํ๋ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ธ๋ถ ์์คํ ์ด๋ผ๊ณ ์๊ฐํ๊ณ ์ด๊ฒ์ evalํ๋ฉด์ ๋ณํ์ํจ๋ค๋ฉด ์ฌ์ด๋ ์ดํํธ ๋ฐฉ์ถํ๋๊ฒ ๋ง์ง. ๋ง์น ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ฟผ๋ฆฌ ๋ ๋ฆฌ๋ฏ์ด.
์ด์ฏค ๋๋ด์. ๋๊ฐ ์ด๊ฒผ๋ ํ๋๊ฑด ๊ธฐ๋ถ๋์ ๊ฒ ๊ฐ๊ณ . ๊ทธ๋ฅ ๋.
๊ทธ๋ ๊ทผ๋ฐ ์ค๋๋ง์ ํจ์ํ ์ข ์ ๋๋ก ์๊ณ ์๋ ์ฌ๋ ๋ง๋์ ๋ฐ๊ฐ์ ๋ค. ๊ทธ๋ฅ ์๋ก ์คํด๊ฐ ์ข ์์ง ์๋ ์ถ์ด.
๊ฑ ๋์จ ์์. ๋ฐ๊ฐ์ ๋ค ใ ใ ~~ ์ต์ํ ํ์ ์ ์๋๋ค ใ
๋๋ ์ฑ๊ธํค์ผ๋ก ๋ก์น ํ๋ ๊ฐ๋ฐ์์ธ๋ฐ... ์ฑ๊ธํค์ด ์ํํ ์ด์ ๋ ์ ์ญ ๋ณ์์ฒ๋ผ ๋ฌด์ง์ฑ ๋ก์น ์ด ๊ฐ๋ฅํ๊ธฐ ๋๋ฌธ์ด ์๋๊ฐ ์ถ๋ค. ์ฑ๊ธํค์ด ์ด์ธ๋ฆฌ๋ ๊ณผ์ ๊ฐ ์๋๊ฑฐ๊ณ ๋ค๋ฅธ ํจํด์ ์จ์ผํ ๋๊ฐ ์์ง๋ง ๋์ค์๋ ๊ทธ ๋ฌด์ง์ฑ ๋ก์น ๋ค ๋๋ฌธ์ ํฐ์ฝ๋ค์น๊ธฐ ์ฌ์ด๋ฏ. ๊ทธ๋์ ๊ฒฝํ์์ ์ฐ๋ฌ๋์ค๋ ๋ถ์ ์ ๋ฐ์๋ค์ด ์๋๊ฒ ์๋๊ฐ ์ถ๋ค. ์ค๋ค ์๊ฐ์ด๋ ๋๊ฐ ํ๋ ์๊ธฐ๋ ๋๊ฐ์๊ฑธ?
๋ง์ค๋ณด๊ณ ์ ์ฐธ์๋ค
ในใ ์ ์ ๋ํ๋๊ฑฐ์ผ
๋ด๊ฐ ์ฑ๊ธํค ๋น ๋์ธ๋ฐ, ๋ค๋ฅธ์ฌ๋์ด ์ด ์ฝ๋.. ๋ํผ์ ๋ํผ๋ณด๊ณ ํํ์์ ์ด๊ฑฐ์. ์์ ์ ์ฌ๋ ธ์ผ๋ฉด ์ ๋นํ ํ์ฉํ ์์๊ฒ ์ธ๋ถ api๋ ธ์ถ๋๋๊ฑฐ ๊น๋ํ๊ฒ ํด๋์ผํ๋๋ฐ ๊ทธ๋ฐ๊ฑฐ ์์ด ๋ด๋ถ ์ฝ๋๊น์ง ๋ค ๋ณด๊ฒ ๋ง๋ค์. ๊ทผ๋ฐ ๊ทธ๊ฒ ์ฐธ์กฐ์ ์ฐธ์กฐ ๋ํผ์ ๋ํผ๋ผ ๋์๋ฒ๋ฆด๊ฑฐ๊ฐ๋ค
์ฑ๊ธํค ์ฐ๊ธฐ ์ซ์ด์ ์ฝ๋๋ฅผ ์ ๋ถ ํฉ์ณ์ ํ๋๋ก ๋ง๋ค์์ต๋๋ค - dc App
๋ง์ค์ถ
์ํ๋ฉด ์ฐพ์์ด? ์์ ๊ณผ์ธ์ข ๋ถํํด
์ดํด
๊ทธ๋ฅ ๋ญ ๊น๊ฒ ์๋ ๊ฑด ์๊ณ ๊น์ง๋๊ธฐ๋ง ํ ๊ฒ ๊ฐ์ ๋๋์ธ๋ฐ์