ํ•˜์Šค์ผˆ, C++, ํ”„๋กœ๊ทธ๋ž˜๋จธ์— ๊ด€ํ•œ ์‹œ

์•ˆ๋…•ํ•˜์„ธ์š”, Habr, ์ผ์š”์ผ์— ์ž ์‹œ ํœด์‹์„ ์ทจํ•˜์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ? ๋‚ด ์‹œ๋ฅผ ์ฝ์œผ๋ฉด ๊ธฐ์šด์ด ๋‚˜๊ณ  ์–ด๋–ค ์‹œ๋Š” ์ƒ๊ฐํ•˜๊ฒŒ ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

ํ˜„๋Œ€ ํ”„๋กœ๊ทธ๋ž˜๋จธ

๋‚˜๋Š” ๊ฒจ์šฐ ๊นจ๋‹ฌ์€ ํ”„๋กœ๊ทธ๋ž˜๋จธ์ด๋‹ค
ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์‚ฌ๋ฌด์‹ค์˜ ์ „์ฒด ๋ณธ์งˆ.
์Šค๋ฌผ๋‘ ์‚ด์— ๋‹ค์‹œ ์ค‘๊ฐ„์ด ๋์–ด์š”
๊ทธ๋ฆฌ๊ณ  ์Šค๋ฌผํ•œ ์‚ด์— ์ƒ์›์˜์›์ด ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.

๋ถ€๊ฐ€

์ž‘์—…์€ ์ง„ํ–‰ ์ค‘์ด๋ฉฐ, ๋ˆ„๊ฐ€ ๋ญ๋ผ๊ณ  ํ•˜๋“ ,
๊ทธ๋“ค์€ ๋‚˜๋ฅผ ๊ณต์˜ˆ์— ์ž…๋ฌธ์‹œํ‚ฌ ๊ฒƒ์ž…๋‹ˆ๋‹ค.
์„œ๋ฅธ ์‚ด์ฏค ๋˜๋ฉด ์—ฐ์• ํ•  ๊ฑฐ์•ผ.
๊ทธ๋ฆฌ๊ณ  ๋งˆํ”์ด ๋˜๋ฉด ์œ ์น˜์›์— ๊ฐˆ ๊ฑฐ์˜ˆ์š”.

์ฑ„์šฉ์˜ ์–ด๋ ค์›€์šฐ๋ฆฌ๋Š” ๋ฐœ์„ ์žƒ์—ˆ๊ณ  ๊ทธ ์‚ฌ๋žŒ์„ ์ฐพ์„ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.
๋ชจ๋‘๊ฐ€ ์šฐ๋ฆฌ์—๊ฒŒ ์ถฉ๋ถ„ํžˆ ๋ฉ‹์ง€์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
์šฐ๋ฆฌ๋Š” ์ˆ˜์„ธ๊ธฐ์˜ ๊ฒฝํ—˜์„ ๊ฐ€์ง„ ์˜์ฃผ๋ฅผ ์›ํ•ฉ๋‹ˆ๋‹ค.
๋–ผ๋กœ ๋ชฐ๋ ค์˜ค๋Š” ์ด๋Ÿฐ ์‚ฌ๋žŒ๋“ค์€ ์•„๋‹™๋‹ˆ๋‹ค.

์ด ๋™์ง€๋“ค์€ ๋ป”๋ป”ํ•˜๊ณ  ๋Œ€๋‹ดํ•˜๋‹ค
๊ทธ๋“ค์€ ์Šต๋“ํ•œ ๊ธฐ์ˆ ์— ๋Œ€ํ•ด ๊ฑฐ์ง“๋ง์„ ํ•ฉ๋‹ˆ๋‹ค.
์šฐ๋ฆฌ๋Š” ์ด ๋ฌธ์ œ์— ๋Œ€ํ•ด ์ง€์‹์ด ์žˆ๋Š” ์˜์ฃผ๋ฅผ ์›ํ•ฉ๋‹ˆ๋‹ค.
์šฐ๋ฆฌ๋Š” ์ด๊ฒƒ๋“ค์ด ํ•„์š”ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๊ทธ๋“ค์€ ๋…ธ๋ ฅ์œผ๋กœ ์ธํ•ด ์ฃฝ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์šฐ๋ฆฌ๋Š” ์žฌ๋Šฅ ์žˆ๋Š” ์˜์ฃผ๋ฅผ ์›ํ•ฉ๋‹ˆ๋‹ค.
์šฐ๋ผ๋Š„ ๊ด‘์„์˜ ์–ด๋‘์šด ๊ด‘์‚ฐ์—์„œ.
์šฐ๋ฆฌ๋Š” ์„ธ๋…ธ๋ผ๊ฐ€ ๋ฐ”๋ณด๋ณด๋‹ค ๋” ๋˜‘๋˜‘ํ–ˆ์œผ๋ฉด ์ข‹๊ฒ ๋‹ค.
๊ทธ๋“ค์ด ์—ฌ๊ธฐ์— ์˜ค์ง€ ์•Š๋Š” ๊ฒƒ์€ ์œ ๊ฐ์ž…๋‹ˆ๋‹ค.

๋””๋‹ค์Šค๋Š”...๋””๋‹ค์Šค๋Š” ๋‹ค์Œ์„ ์œ„ํ•ด ์‹ธ์› ๋‹ค
๊ทธ๋ฆฌ๊ณ  ๊ทธ๋“ค์€ FP ์‚ฌ๋žŒ๋“ค์„ ์ง€์˜ฅ์œผ๋กœ ๋ชฐ์•˜์Šต๋‹ˆ๋‹ค:
๊ทธ๋“ค์˜ ์„ธ๊ณ„๋Š” ๋ฐ›์•„๋“ค์ด์ง€ ์•Š๋Š”๋‹ค
๋žŒ๋‹ค์™€ ํŽ‘ํ„ฐ์— ๋งŒ์กฑํ•˜๋Š” ์‚ฌ๋žŒ์€ ๋ˆ„๊ตฌ์ธ๊ฐ€์š”?

๋””๋‹ค์Šค๋Š” ๋‹ค์Œ์„ ์œ„ํ•ด ์‹ธ์› ๋‹ค
๋ฐ˜์ฃฝ์˜ ํž˜์œผ๋กœ ์›€์ง์ด๋Š”,
๊ทธ๋ฆฌ๊ณ  ๊ทธ๋“ค์€ ๋ฐ”๋ณด๋“ค์„ ์ฃฝ์Œ์— ์ด๋ฅด๊ฒŒ ํ–ˆ๊ณ ,
FPshnogo ์•…์˜ ์ง€์ง€์ž.

์ด ๊ตฌ์ ˆ์€ Kaspersky Lab์—์„œ Haskell์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ณด์•ˆ OS ๊ตฌ์„ฑ ์š”์†Œ๋ฅผ ๊ฐœ๋ฐœํ•˜๋Š” ๋ฐ ์ „๋…ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

๊ฐ•๊ฐ„๋ฒ” ํ• ์•„๋ฒ„์ง€์™€ ํ•˜์Šค์ผˆ๊ฐ•๊ฐ„๋ฒ” ํ• ์•„๋ฒ„์ง€๋Š” ๊ฐ์˜ฅ์— ์žˆ์—ˆ๊ณ ,
๋ฌธ์ œ๋กœ ๊ณ ํ†ต๋ฐ›์Šต๋‹ˆ๋‹ค.
๊ทธ๋ฆฌ๊ณ  ์‹œ์ง„ํ•‘์„ ์–ด๋–ป๊ฒŒ ๊ตฌํ• ์ง€ ๊ณ ๋ฏผํ–ˆ์–ด์š”
๋ฒ„๊ทธ๋กœ๋ถ€ํ„ฐ ์˜์›ํžˆ.

๊ทธ๋Š” ์ƒ๊ฐ์ด ๋„ˆ๋ฌด ๋งŽ์•„์„œ ํšŒ์ƒ‰์œผ๋กœ ๋ณ€ํ–ˆ๋‹ค
๋ฐฅ๋„ ์•ˆ ๋จน๊ณ  ์ž ๋„ ์ž˜ ๋ชป ์žค์–ด์š”.
ํ•˜์ง€๋งŒ ๊ทธ๋Š” ์ข‹์€ ์šด๋ช…์„ ์ฐพ์•˜๊ณ ,
ํ•˜์Šค์ผˆ์ด ํœด์‹์ฒ˜๋ฅผ ์ง€๋ฐฐํ•˜๋Š” ๊ณณ.

๊ทธ๋Š” ์ž์‹ ์˜ ๋ชฉํ‘œ๋ฅผ ๋ถ„๋ช…ํžˆ ๋ณด์•˜์Šต๋‹ˆ๋‹ค.
์ฝ”๋“œ๋Š” ์•„๋ฆ„๋‹ค์›Œ์•ผ ํ•ฉ๋‹ˆ๋‹ค.
๊ทธ๋ฆฌ๊ณ  ๊ทธ๋Š” D.S.L์„ ๋งŒ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค.
C ์ฝ”๋“œ๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ  ๋ชจ๋“  ๊ฒƒ์ด ๋ฉ‹์งˆ ๊ฒƒ์ด์ง€๋งŒ ์†์‹ค์€
๊ทธ๋Š” ์ •๋ง๋กœ ์›ํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค.
์ง€๊ธˆ Haskell์„ ์„ ํƒํ•ด์ฃผ์…”์„œ
๋ถ€์„œ ์ „์ฒด๊ฐ€ ํ•ด๊ณ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

์„ ๋ฐ• "ํ•˜์Šค์ผˆ"ํ‘œ์ค€์ ์ธ ํ˜ผ๋ž€์˜ ์†Œ์šฉ๋Œ์ด ์†์œผ๋กœ
๊ทธ๋Š” ์„ ๋ฏธ์—์„œ ์šฉ๊ฐํ•˜๊ฒŒ ๋‹ค์ด๋น™ํ–ˆ๊ณ ,
๋ฐฐ์— ํƒ„ ์šฐ๋ฆฌ ์„ ์žฅ, -
๋น„ํƒˆ๋ฆฌ ๋ธŒ๋ผ์งˆ๋ ˆ.

์‹œ์™€ ํ•˜ ์‚ฌ์ด์—์„œ ๋ฐฉํ™ฉํ•˜๋‹ค
์ด์ „ ๊ตฌ์ ˆ์˜ ์˜์›…
๊ทธ๋Š” ๋ชจ์Šคํฌ๋ฐ”์— ์‚ด๋ฉด์„œ ๋น›์„ ๋ฐœํ–ˆ์Šต๋‹ˆ๋‹ค.
์šฐ๋ฆฌ ์œ ๋ฆฌ ์‹œ๋กœ๋ธŒ.

์•ˆ๊ฐœ์ฒ˜๋Ÿผ ์šฐ์šธํ•จ์„ ์ซ“์•„๋‚ด๊ณ ,
์•„์ด๋””์–ด์˜ ๋ฐ”๋‹ค์—์„œ ์šฐ๋ฆฌ์˜ ์กฑ์žฅ
๊ทธ๋Š” ์šฐ๋ฆฌ์—๊ฒŒ ๋ฌผ์— ๋จธ๋ฌผ๋„๋ก ๋ฌผ๋ ค์ฃผ์—ˆ์Šต๋‹ˆ๋‹ค.
์œ„๋Œ€ํ•œ ํด๋ผํŒŒ์šฐ.

GHC ์ฝ”๋“œ ๊ฒฌ์ 
๊ทธ๋Š” ๋‹น์‹ ์ด ๊ตฌํ•˜๋Š” ๊ฒƒ์€ ๋ฌด์—‡์ด๋“  ๋ฐ›์•„์ค„ ๊ฒƒ์ด๋‹ค.
๋…ธ์—์„œ ๊ฐ€์žฅ ๊ฐ•ํ•œ ์‚ฌ๋žŒ,
Zavyalov ๋ธ”๋ผ๋””์Šฌ๋ผ.

๋‚ ์นด๋กœ์šด ๋ฐ”์œ„ ์‚ฌ์ด์˜ ์•ˆ์ „ํ•œ ๊ธธ์—์„œ
ํ•ญํ•ด์‚ฌ ์žฅ๋กœ๊ฐ€ ์šฐ๋ฆฌ๋ฅผ ์ธ๋„ํ•ฉ๋‹ˆ๋‹ค.
๋งŽ์€ ๊ตญ๊ฐ€์˜ ์ธ๋ผ์ธ ์ง€๋„,
๋ฒ ๋ฅด์‹ค๋กœํ”„ ์•Œ๋ ‰์‚ฐ๋“œ.

์šฐ๋ฆฌ์˜ ์˜๊ด‘์Šค๋Ÿฌ์šด ์ง‘์—์„œ ์˜ค๋ž˜์˜ค๋ž˜ ์‚ด์•„์š”,
์šฐ๋ฆฌ๋Š” ๊ทธ๋ฅผ ์ง€์‹์œผ๋กœ ์ธ๋„ํ•ฉ๋‹ˆ๋‹ค.
๋ฐฐ๋Š” ์ž๋ž‘์Šค๋Ÿฝ๊ณ  ์ข‹์Šต๋‹ˆ๋‹ค.
์šฐ๋ฆฌ ํ•˜์Šค์ผˆ์€ ๋น„์‹ธ์š”.

Hogweed๋Š” Telegram์˜ haskell_blah ์ฑ„ํŒ…์˜ ๋กœ์ปฌ ๋ฐˆ์ž…๋‹ˆ๋‹ค.

ํ˜ธ๊ทธ ์œ„๋“œ์ž˜ ์ž์š” ๊ฐ€์ด๋“œ๋‹˜
์ธ๊ฐ„ ์„ธ๊ณ„์˜ ๋žŒ๋‹ค์™€ ์œ ํ˜•:
์ฑ„ํŒ…์„ ์ง€ํ‚ค๋Š” ๋ผ์ง€ ํŒŒ์Šค๋‹™
๋ฐค์—๋Š” ๋‹น์‹ ์„ ์ฐจ๋ถ„ํ•˜๊ฒŒ ํ•ด์ค„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์•„๋ฌด๋ฆฌ ์ฑ„ํŒ…์ด ํ™”๋‚˜๋”๋ผ๋„
๊ฐ•์ฒ  ์กฑ์‡„๋ฅผ ๋ถ€์ˆ˜์ง€ ๋งˆ์‹ญ์‹œ์˜ค.
ํ˜ธ๊ทธ์œ„๋“œ๊ฐ€ ๊ฒฝ๋น„๋ฅผ ์„œ๊ณ  ์žˆ๋‹ค
์ฃผ์Šค๋Š” ๋ฐ”๋ณด๋ฅผ ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค.

์‰ฌ์„ธ์š”, ์ž์‹ ์„ ์žŠ์–ด๋ฒ„๋ฆฌ์„ธ์š”, ์ „์‚ฌ์—ฌ,
๋ฐค์€ ์–ด๋‘ก๊ณ  ๊นŠ์Šต๋‹ˆ๋‹ค.
์ž, ๋‘๋ ค์›Œํ•˜์ง€ ๋ง๊ณ  ์นจ์ฐฉํ•˜์‹ญ์‹œ์˜ค -
๋‹น์‹ ์€ ํ˜ธ๊ทธ์œ„๋“œ์˜ ๊ทธ๋Š˜์— ์žˆ์Šต๋‹ˆ๋‹ค.

๊ทธ๋Š” ๋ณ„์ด ๋น›๋‚˜๋Š” ๋ฐค์˜ ๊ทธ๋Š˜ ์•„๋ž˜์— ์žˆ์–ด์š”
์ ์œผ๋กœ๋ถ€ํ„ฐ ๋ณดํ˜ธํ•ฉ๋‹ˆ๋‹ค.
ํ˜ธ๊ทธ์œ„๋“œ๋Š” ๋…์„ฑ์ด ๋งค์šฐ ๊ฐ•ํ•ฉ๋‹ˆ๋‹ค -
๋žŒ๋‹ค ๋ชฉ์ž์˜ ์ƒ์ง•.

matana-theorkat์˜ ์ •์‹ ์‹ ์†ํ•˜๊ฒŒ, ์ž๋ž‘์Šค๋Ÿฝ๊ฒŒ, ๊ฒฝ์‚ฌ์ง€๊ฒŒ
๊ณต๋ถ€ ์ผ์ •์ด ๋Š˜์–ด๋‚˜๊ณ -
๊ทธ๊ฒƒ์ด matan-theorkat์˜ ์ •์‹ ์ด๋‹ค
ํฐ ๊ณ ํ†ต์„ ์˜ˆ์–ธํ•ฉ๋‹ˆ๋‹ค.

์•„์ด๋””์–ด ํ•˜๋‚˜ ๋•Œ๋ฌธ์— ๊ณ ํ†ต๋ฐ›์„ ์ˆ˜๋„ ์žˆ๋‹ค
์–ธ์  ๊ฐ€ ํ•˜์Šค์ผˆ์„ ๋ฐฐ์šฐ๋ ค๋ฉด,
๊ทธ๋Ÿฌ๋‚˜ ๊ทธ๋Š” ์ข‹์€ ์ƒ๊ฐ์„ ํฌ๊ธฐํ–ˆ์Šต๋‹ˆ๋‹ค.
์‚ฌ์•…ํ•œ matana-theorkata๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

์ƒ์ƒ์˜ ์žฅ๋ฒฝ ์•ž์— ๊ฒ์„ ๋จน์€ ๋‹น์‹ ,
๋…ผ๋ฌธ์—์„œ Smatana๋ฅผ ํ˜ธ์ถœํ•ฉ๋‹ˆ๋‹ค.
ํ•˜์ง€๋งŒ ๊ทธ๊ฒƒ์€ ๋ฟ” ๋‹ฌ๋ฆฐ ์•…๋งˆ๊ฐ€ ์•„๋‹ˆ์—ˆ๊ณ ,
๊ทธ๋ฆฌ๊ณ  theorkat์˜ ์ž‘์€ ์ •์‹ .

๋‹น์‹ ์€ ๊ฒ์„ ๋จน์—ˆ๊ณ  Haskell์€ ๋„ˆ๋ฌด ๋Šฆ์—ˆ์Šต๋‹ˆ๋‹ค
์ผ๋ชฐ ๊ฒฝ๋กœ๋ฅผ ๋”ฐ๋ผ ๋“œ๋ž˜๊ทธํ•ฉ๋‹ˆ๋‹ค.
๊ทธ๋ฆฌ๊ณ  ์–ด๋”˜๊ฐ€ ์Šฌํ”„๊ณ  ์™ธ๋กœ์›Œ
Theorkat์˜ ๋ถˆ์พŒํ•œ ์ •์‹ .

ํ•˜์Šค์ผˆ๋ฆฌ์•ˆ ๋‚˜์ดํŠธ ํ”„๋กฌ๋‚˜๋“œํ•˜์Šค์ผˆ๋ฆฌ์ŠคํŠธ๋Š” ๋ฐค์—๋„ ๋น›๋‚œ๋‹ค
์‹ ์„ฑํ•œ ๋ชจ๋‚˜๋“œ์˜ ๋น›์œผ๋กœ๋ถ€ํ„ฐ,
๊ทธ๋ฆฌ๊ณ  ์ƒ๊ฐ ์†์—๋Š” - ์ˆ˜์ •์ฒ˜๋Ÿผ ์ˆœ์ˆ˜ํ•˜๊ณ  -
๊ทธ๋“ค์€ ๋ฐค ์‚ฐ์ฑ…์„ ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

์ธ„! - ์ง์žฅ ํ†ต์ฆ์œผ๋กœ ์ง€์ณค์Šต๋‹ˆ๋‹ค.
๋ฌผ๊ฑด์„ ์‚ฌ๋ž‘ํ•˜๋Š” ๋™์ง€.
ํ•ด์•ผ ํ•  ๊ฐ€์žฅ ์ค‘์š”ํ•œ ์ผ: ์ง์‚ฌ๊ฐํ˜•,
์•„๋‹ˆ๋ฉด ์‚ฌ๊ฐํ˜•์ด ๋” ๋‚˜์€๊ฐ€์š”?

๋ฌผ์ฒด์—๋Š” ๊ฐ•์ฒ  ํ”„๋ ˆ์ž„์ด ์žˆ๊ณ ,
์ธ๋ฌผ๋“ค์€ ์ฒœ์ƒ์˜ ์‚ถ์˜ ๋ฐฉ์‹์„ ๊ฐ€์ง€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.
์™ผ์ชฝ์ด ์˜ค๋ฅธ์ชฝ์œผ๋กœ ๊ฐ„๋‹ค
๋‹ค์ด์•„๋ชฌ๋“œ ์ปค๋„ฅ์…˜ ํผ๋ ˆ์ด๋“œ.

ํšŒ๊ฐœํ•˜๋ผ! - ๋งˆ์Œ์˜ ๋ชฉ์†Œ๋ฆฌ๊ฐ€ ๋ถ€๋ฆ…๋‹ˆ๋‹ค.
์กฐ์šฉํ•œ! ๋ถ•๊ดด๋Š” ๋ถˆ๊ฐ€ํ”ผํ•˜๋‹ค!
ํ•˜์ง€๋งŒ ๊ทธ๋Š” ๋” ๋งŽ์€ "์งˆ์„œ"๋ฅผ ์›ํ•ฉ๋‹ˆ๋‹ค
์™„์ „ ๋ฏธ์นœ ๋™์ง€.

์ƒ์†์‚ฌ๊ฑด ๋ฐฐ๊ฒฝ
์ด๋Š” ํ›จ์”ฌ ๋” ๋งŽ์€ "๋ณด์ƒ"์„ ์•ฝ์†ํ•ฉ๋‹ˆ๋‹ค.
์ด์ œ ๊ทธ๋Š” ๋น„๋‚œ๋„ ๋ชจ๋ฅด๊ณ 
์‚ฌ๊ฐํ˜•์€ ์›์—์„œ ํŒŒ์ƒ๋ฉ๋‹ˆ๋‹ค.

์ค€๋น„๊ฐ€ ๋œ. ํ•˜์ง€๋งŒ ๋ณด๋ณต์˜ ๋ƒ„์ƒˆ๊ฐ€ ๋‚œ๋‹ค.
๋ถˆ์Œํ•œ ๋™์ง€๋Š” ๊ฑฑ์ •ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.
๊ทธ๋Š” ๋–จ๋ฆฌ๋Š” ์ƒ๋ฌผ์ž…๋‹ˆ๋‹ค.
์šฐ์—ฐ์˜ ์ผ์น˜ํ•˜๋Š” ๊ฐœ์ฒด๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ทธ๋Ÿฐ ์•„ํ””์ด ์—†์–ด์„œ ์–ผ๋งˆ๋‚˜ ์ข‹์€์ง€
๋ชจ๋‚˜๋“œ๊ฐ€ ๋งŽ์€ ๊ทธ ์„ธ๊ณ„์—์„œ๋Š”
์ž์œ ๋กœ์šธ ์ˆ˜ ์žˆ๋Š” ์„ธ์ƒ์—์„œ
๋ฐค ์‚ฐ์ฑ…์„ ์ฆ๊ฒจ๋ณด์„ธ์š”.

๊ทธ๋ฆฌ๊ณ  ๋””์ €ํŠธ๋กœ๋Š” C++ ์‹œ๋ฒ ๋ฆฌ์•„ 2019 ์ปจํผ๋Ÿฐ์Šค์˜ ๊ธฐ์กฐ์—ฐ์„ค์—์„œ ์ฝ์€ C++์— ๊ด€ํ•œ ๋Œ€๊ทœ๋ชจ ์ž‘์—…์ด ์žˆ์Šต๋‹ˆ๋‹ค.

์„ธ ๋ถ€๋ถ„์œผ๋กœ ๊ตฌ์„ฑ๋œ C++ ์ด์•ผ๊ธฐ์™€ ํ•œ ๊ฐ€์ง€ ์ถ”๊ฐ€PART 1. ์ข…๋ฅ˜์™€ ํ‘œํ˜„๋ ฅ

์ €๋…์— ์ผํ•˜์„ธ์š”. ์Šคํฌ๋ฆฐ ๋ผ์ดํŠธ.
์ž ์€ ํ™ฉํ˜ผ์—์„œ ๋‚˜์˜ต๋‹ˆ๋‹ค.
๋‚˜๋Š” ์ˆ ์ง‘์— ๊ฐ€๊ณ  ์‹ถ๋‹ค. ํ•˜์ง€๋งŒ ์•„์ง์€ ์ด๋ฅด๋‹ค
๊ทธ๋ฆฌ๊ณ  ๊ทธ๊ฒƒ์€ ๋‹น์‹ ์ด ์ƒ๊ฐํ•  ํ•„์š”๊ฐ€ ์žˆ๋Š” ๊ฒƒ์ด ์•„๋‹™๋‹ˆ๋‹ค.

๋ฆด๋ฆฌ์Šค๊ฐ€ ๋ถˆํƒ€๊ณ  ์žˆ๊ณ , ๋™๋ฃŒ๋“ค์ด ์šธ๊ณ  ์žˆ๊ณ ,
ํ”„๋กœ๊ทธ๋žจ์ด ์ œ ์‹œ๊ฐ„์— ์ค€๋น„๋˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค...
... ๊ทธ๋ฆฌ๊ณ  ์ƒ๊ฐ์ด ํ˜ผ๋ž€์Šค๋Ÿฝ๊ฒŒ ์ ํ”„ํ•ฉ๋‹ˆ๋‹ค.
ํŒŒ์„  ์‚ฌ์ด.

๋ฆฌํŒฉํ† ๋ง์€ ์‹ ์„ฑํ•œ ์ผ์ด๋‹ค
๊ทธ๋ฆฌ๊ณ  ์ปดํŒŒ์ผ๋Ÿฌ๋Š” ์นœ๊ตฌ๊ฐ€ ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค.
ํ•˜์ง€๋งŒ ๊ทธ๋Ÿฐ ์œ ํ˜•์—๊ฒŒ๋Š” ํ›Œ๋ฅญํ•ฉ๋‹ˆ๋‹ค.
๋ˆ„๊ตฐ๊ฐ€์˜ ์†์„ ๋นผ์•—๋‹ค.

๋‹ค์Œ ์œ ํ˜•์˜ ๊ฒฝ์šฐ ์ƒํ™ฉ์ด ๋ณต์žกํ•ฉ๋‹ˆ๋‹ค.
๋‚ด๊ฐ€ ์–ด๋–ป๊ฒŒ ๊ธฐ๋„ํ•ด๋„, ์–ด๋–ป๊ฒŒ ๊ตฌํ•ด๋„,
ํ‘œํ˜„ํ•  ๋ฐฉ๋ฒ•์ด ์—†๋„ค
๋ชจ๋“  ๊ฒƒ์€ ํ—ˆ์šฉ๋  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

ํ”„๋กœ๊ทธ๋žจ์˜ ๋ชจ๋“  ๋ถ€์ •ํ•œ ๊ฒƒ์— ๋Œ€ํ•ด
์šฐ๋ฆฌ ์ปดํŒŒ์ผ๋Ÿฌ๋Š” ์นจ๋ฌต์„ ์ง€ํ‚ฌ ๊ฒƒ์ž…๋‹ˆ๋‹ค.
์ฝ”๋“œ๋ฅผ ๋””๋ฒ„๊ทธํ•˜๊ณ  ์ง์ ‘ ์ฐพ์•„๋ณด์„ธ์š”.
๋‹น์‹ ์˜ ๊ฒƒ์ด ํƒ€๋ฒ„๋ฆด ๋•Œ๊นŒ์ง€.

2๋ถ€. ๋ฉ€ํ‹ฐ์Šค๋ ˆ๋“œ ์ฝ”๋“œ

๋ˆˆ๋ฉ์ด๊ฐ€ ๊ฒฉ๋ ฌํ•˜๊ณ  ์—ด์ •์ ์œผ๋กœ ํšŒ์ „ํ•˜๊ณ  ์žˆ๋‹ค
XNUMX์›”์˜ ์ถ”์œ„์— ์ฐฝ๋ฐ–.
์ž๋Ÿฌ ๊ฐ€๊ณ  ์‹ถ์€๋ฐ... ์•„์ง์€ ์ด๋ฅธ ์‹œ๊ฐ„์ด๋ผ,
๊ทธ๋ฆฌ๊ณ  ๊ทธ๊ฒƒ์— ๋Œ€ํ•ด ์ƒ๊ฐํ•  ํ•„์š”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค ...

... ๋นŒ์–ด๋จน์„ ๋ฒ„๊ทธ๋กœ ์ธํ•ด ์Šค๋ ˆ๋“œ๊ฐ€ ๋ง๊ฐ€์กŒ์Šต๋‹ˆ๋‹ค.
๋ฐ์ดํ„ฐ๋ฅผ ์ž˜๋ชป ๋ณ€๊ฒฝํ•จ
Dedlock์€ ๊ทธ์˜ ๊ธฐ๋ณธ ์‹ ์กฐ์ž…๋‹ˆ๋‹ค.
๊ทธ๋ฆฌ๊ณ  ์—์–ด์ปจ ๋น„ํ–‰์ด ๊ทธ ๋ฐฐ๋„ˆ์ž…๋‹ˆ๋‹ค.

๊ทธ๋Š” ๊ฐ€๋ณ€ ๋ฌด๊ธฐ๋กœ ๋งŒ๋“ค์–ด์กŒ์Šต๋‹ˆ๋‹ค
ํ‘œ์  ์‚ฌ๊ฒฉ์„ ์‹ค์‹œํ•ฉ๋‹ˆ๋‹ค.
๊ทธ๋ฆฌ๊ณ  ๊ทธ๋Š” ๋”๋Ÿฌ์šด ์œ ๋‹ค๋ฅผ ์›ํ•ฉ๋‹ˆ๋‹ค.
์‹œ๋ƒ‡๋ฌผ์„ ๊ด€์— ๋ฌป์–ด๋‘์„ธ์š”.

๊ทธ๋Š” ์งˆ์„œ์™€ ์ „์Ÿ์„ ํ•˜๊ณ  ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ๊ณ  ์žˆ๋‹ค
๊ตํ™œํ•˜๊ฒŒ ๋ฒ•์ •์ธ ์ฒ™,
๊ทธ๋ฆฌ๊ณ  ์ด๋ฅผ ์›๋งŒํ•œ ํŒ๊ฒฐ๋กœ ๋ฐœํ‘œํ•˜๊ณ ,
"๋ช…๋ น"์— ๋Œ€ํ•œ ์ฑ…์ž„์€ ๋ˆ„๊ตฌ์—๊ฒŒ ์žˆ์Šต๋‹ˆ๊นŒ?

๋ชจ๋ฅด๋Š” ์‚ฌ์ด์— ๋ˆ„๊ฐ€ ๋‹ค๊ฐ€๊ฐ€๋Š”๊ฐ€
์•ˆ์ „ํ•˜์ง€ ์•Š์€ ์บ์ŠคํŠธ๊ฐ€ ๋ชจ๋“  ๊ณณ์„ ๋ฐ€๊ณ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.
์‹ ๊ณผ ๊ฐ™์€ ๊ดด๋ฌผ์„ ํ‚ค์šด ์‚ฌ๋žŒ,
๊ทธ๋ฆฌ๊ณ  ๊ทธ๋Š” ๊ตญ์ˆ˜๋กœ ์•ˆ์ •๊ธฐ๋ฅผ ๋งŒ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค.

๋ถˆ๊ฑด์ „ํ•œ ๊ด‘๊ธฐ์— ๋น ์ง„ ์‚ฌ๋žŒ,
๋ชจ๋“  ๋‹ค๋ฆฌ๋ฅผ ๋ถˆํƒœ์šธ ๋•Œ,
๋ณ€๊ฒฝ ๊ฐ€๋Šฅํ•œ ํ—Œ์žฅ์„ ์‚ฌ์šฉํ–ˆ์Šต๋‹ˆ๋‹ค.
๋‹ค์ค‘ ์Šค๋ ˆ๋“œ ์ˆ˜๋„์›์œผ๋กœ...

...์ด๋Ÿฐ ์ „๋ก€ ์—†๋Š” '์•…ํ•จ'
๋‹น์‹ ์€ ๊ทธ๊ฒƒ์„ ์˜ค๋žซ๋™์•ˆ ๊ฒฝํ—˜ํ•˜์ง€ ๋ชปํ–ˆ์Šต๋‹ˆ๋‹ค.
๋ฌธ์ œ๋Š” ํŒŒ๋ฆฌ์ฒ˜๋Ÿผ ๋Š˜์–ด๋‚ฉ๋‹ˆ๋‹ค
์ฝ”๋“œ๊ฐ€ ๋ฌธ์ œ๋กœ ๋ณ€ํ•ฉ๋‹ˆ๋‹ค.

3๋ถ€. ํŒจํ„ด, OOP ๋ฐ ์ƒ์šฉ๊ตฌ

์‚ฌ์ง„์ด ๊ตํ™œํ•˜๋„ค์š”
์šฐ์‚ฐ์„ ์“ด ์†Œ๋…€๊ฐ€ ์›ƒ๋Š”๋‹ค.
๊ณต์ž‘์ƒˆ์ฒ˜๋Ÿผ ๋ถ€๋ฅด๊ณ  ์†์ง“ํ•ฉ๋‹ˆ๋‹ค.
๊ทธ๋Ÿฌ๋‚˜ ๊ทธ๊ฒƒ์€ ๋‹น์‹ ์ด ์ƒ๊ฐํ•  ํ•„์š”๊ฐ€ ์žˆ๋Š” ๊ฒƒ์ด ์•„๋‹™๋‹ˆ๋‹ค.

์„ฑ๊ณต์˜ ์‹œ๊ฐ„์€ ์•„์ง ๋ฉ€์ง€ ์•Š์•˜๋‹ค.
์ง€๊ธˆ์€ ๋ณผํŠธ๋กœ ์ฐข๊ฒจ์ ธ ์žˆ์ง€๋งŒ,
์ž‘์—…์žฅ์˜ ๊นŠ์€ ๊ณณ์—์„œ ์ œํ’ˆ์ด ์†์ƒ๋ฉ๋‹ˆ๋‹ค.
๋„ˆํŠธ ๋ถˆ์™„์ „์„ฑ์—์„œ.

์ด ๊ณต์žฅ์—์„œ๋Š” ๋ฌผ๊ฑด์„
ํŒŒ์Šคํƒ€๋ณด๋‹ค ๋” ๋ถ€์–ด์˜ค๋ฅด๊ณ ,
๊ทธ๋ฆฌ๊ณ  ๋น„๋ฐ€์ข…ํŒŒ์˜ ์˜ˆ๋ฅผ ๋”ฐ๋ฅด๋ฉด์„œ
๊ธฐํšŒ์ฃผ์˜์ž๊ฐ€ ๊ฑฐ๊ธฐ์— ๋‚ด์žฅ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.

๊ทธ์˜ ์ž„๋ฌด๋Š” ๊ฒฝ๋น„ํ•˜๋Š” ๊ฒƒ์ด๋‹ค.
์ด์„ฑ์— ๊ฐ€๊นŒ์šด ๋ชจ๋“  ๊ฒƒ.
์˜๋ฏธ๊ฐ€ ์žˆ๋Š” ๋ชจ๋“  ๊ฒƒ, ์‹ฌ์ง€์–ด
์˜๋ฏธ๋ฅผ ์‰ฝ๊ฒŒ ์•Œ ์ˆ˜ ์—†๋Š” ๊ณณ.

์•…๋‹น์€ ์˜ค์ปด๊ณผ ์‹ธ์šด๋‹ค
๊ทธ๋ฆฌ๊ณ  ๊ทธ๋Š” ์ž์‹ ์˜ ์žฌ๋Šฅ์— ๋ถˆ์„ ๋ถ™์˜€์Šต๋‹ˆ๋‹ค.
๊ทธ์™€ ํ•จ๊ป˜๋ผ๋ฉด ํ‚ค์Šค๋„ ๋ถ€๋„๋Ÿฌ์šด ์ผ์ด ๋  ๊ฒƒ์ด๋‹ค.
๊ทธ๋ฆฌ๊ณ  ๋งˆ์Œ์€ ๋ฟŒ๋ฆฌ๋ถ€ํ„ฐ ๋ง๊ฐ€์ ธ ์žˆ์Šต๋‹ˆ๋‹ค.

ํฐ ์†Œ๋ฆฌ๋กœ ์„ ํฌํ•˜๋‹ค
๋‹ค์ด์–ด๊ทธ๋žจ์˜ ๋‹ค์–‘์„ฑ,
๊ทธ๋Š” ๋‚ญ๋น„๋˜๋Š” ๋…ธ๋™์— ๋Œ€ํ•ด ์นจ๋ฌตํ•  ๊ฒƒ์ด๋ฉฐ,
๊ทธ๋ฆฌ๊ณ  ์—ฌ๊ธฐ์ €๊ธฐ์„œ ๋ถˆ์ผ์น˜๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

๊ตํ™œํ•œ ๋‚จ์ž๋Š” ๋ฏธ๋„๋Ÿฌ์ง€๋ ค๊ณ  ํ•œ๋‹ค
๋งค์šฐ ๋ณต์žกํ•œ ๋ชจ์–‘์˜ ๋ถ€ํ’ˆ.
๊ทธ์—๊ฒŒ ๋ชจ๋“  ๊ฒƒ์„ ํ˜ผ๋ž€์Šค๋Ÿฝ๊ฒŒ ๋งŒ๋“œ๋Š” ๊ฒƒ์€ ์ผ€์ดํฌ ์กฐ๊ฐ์ž…๋‹ˆ๋‹ค.
๊ทธ๋Š” ์—ฌ๋Ÿฌ ๋ฉด์—์„œ ์ด ๋ถ„์•ผ์˜ ์ „๋ฌธ๊ฐ€์ž…๋‹ˆ๋‹ค...

... ์ด๋ ‡๊ฒŒ ์•…๋‹น์˜ ๋ณ€๋•์—
๋งˆ๋ฒ•์˜ ๋•… OOPea์—์„œ
์„œ์‚ฌ์‹œ๋Š” ์ˆ˜์„ธ๊ธฐ ๋™์•ˆ ์ง€์†๋˜๋ฉฐ,
์ฃผ์š” ์—ญํ• ์ด ๋ง๋„ ์•ˆ๋˜๋Š” ๊ณณ.

๋ง์…ˆ. ๋…น

๊ตฌ์„์—์„œ ๋ฐœ์ด ๋ถ€๋“œ๋Ÿฝ๊ฒŒ ์›€์ง์ธ๋‹ค
๋ฒฝ์‹œ๊ณ„ ๊ณ ์–‘์ด,
๋ผ๋ฐ”๋žจํ”„๊ฐ€ ๊นœ๋นก๊นœ๋นก
๊ทธ๋Ÿฌ๋‚˜ ๊ทธ๊ฒƒ์€ ๋‹น์‹ ์ด ์ƒ๊ฐํ•  ํ•„์š”๊ฐ€ ์žˆ๋Š” ๊ฒƒ์ด ์•„๋‹™๋‹ˆ๋‹ค.

๋ฌด์—‡์„ ์ƒ๊ฐํ•ด์•ผ ํ• ๊นŒ์š”?.. ๋น ์ ธ๋‚˜๊ฐ€๋Š” ์ค‘
๋ฐค์˜ ์–ด๋‘  ์†์œผ๋กœ ์ƒ๊ฐ์˜ ์‹คํƒ€๋ž˜.
ํ˜„์‹ค์€ ๋…น๊ณ  ๋˜ ๋…น๋Š”๋‹ค
๊ทธ๋ฆฌ๊ณ  ๋” ์ด์ƒ ์–ป์„ ์˜๋ฏธ๋„ ์—†์Šต๋‹ˆ๋‹ค.

์ž ์ด ์˜จ๋‹ค.
๊ทธ๋ฆฌ๊ณ  ๊ฑฐ๊ธฐ ์„œ์žˆ์Šต๋‹ˆ๋‹ค
์ƒ์ž,
๋ชจ๋‘ ๋…น์œผ๋กœ ๋’ค๋ฎ์—ฌ ์žˆ์Šต๋‹ˆ๋‹ค.
๋‹ฌ์ฝคํ•˜์ง€๋„ ๋ฌด๋ก€ํ•˜์ง€๋„ ์•Š๊ณ , ์ž‘์ง€๋„ ์•Š๊ณ , ๊ด€๋„ ์•„๋‹ˆ๊ณ ,
์Šคํ…Œ์ดํ”Œ ์ž ๊ธˆ ์žฅ์น˜๊ฐ€ ์žˆ๋Š” ํ๋ธŒ์ฒ˜๋Ÿผ ์ง์„ ์ž…๋‹ˆ๋‹ค.

๊ฐ€์Šด์ด ์—ด๋ ค ์žˆ์Šต๋‹ˆ๋‹ค.
๊ทธ๋ฆฌ๊ณ  ๊ทธ ์•ˆ์—์„œ ์ž๋ž๋‹ˆ๋‹ค.
์ƒˆ๋ฒฝ์ฒ˜๋Ÿผ ์•„๋ฆ„๋‹ค์šด ๊ฝƒ.
์€์€ํ•œ ๋ถˆ๊ฝƒ์œผ๋กœ ๋’ค๋ฎ์—ฌ ์žˆ๊ณ ,
๊ทธ๋ฆฌ๊ณ  ๋ฐ์€ ๋น›์„ ๋ฐœ์‚ฐํ•ฉ๋‹ˆ๋‹ค.

์‹๋ฌผ์ด ํƒ€๋Š” ๋ฐ์—๋Š” ์ด์œ ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.
๊ทธ์˜ ๋ถˆ์˜ ๋Œ€์กฐ๋˜๋Š” ์Œ์ƒ‰
์—ด์ •์œผ๋กœ ๊ฐ€๋“ ์ฐจ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ˆœ์ˆ˜ํ•˜๋‹ค
๊ทธ์˜ ์กฐ์šฉํ•œ ์ˆ˜๋‹ค.

๊ทธ ๋”ฐ๋œปํ•จ์œผ๋กœ ๋…น์•„๋‚ด๋ ค
๊ณตํ—ˆํ•œ ์—ฐ์„ค์— ์ง€์ณค์Šต๋‹ˆ๋‹ค.
๊ทธ๋Š” ๋‹จ์ˆœํ•จ์„ ์ˆญ๋ฐฐํ•œ๋‹ค
๊ทธ๋ฆฌ๊ณ  ์ž‘์€ ๊ฒƒ์˜ ์ผ๊ด€์„ฑ.

๊ทธ๋Š” ๊ฐ€์žฅ์ž๋ฆฌ๋ฅผ ๋ฐœํ‘œํ•ฉ๋‹ˆ๋‹ค.
ํŒŒ๊ดด์ ์ธ ๊ธฐ์ ์ด ์—†๋Š” ๊ณณ.
์•…๋ช… ๋†’์€ ๋งค์ถ˜๋ถ€๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค
ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ค‘๋‹จ๋˜์ง€๋Š” ์•Š์Šต๋‹ˆ๋‹ค.

์•ˆ์ „ํ•จ๊ณผ ํŽธ์•ˆํ•จ์ด ์žˆ๊ณ ,
๊ณ ํ†ต์ด๋‚˜ ์ˆ˜์น˜์‹ฌ์€ ์—†์Šต๋‹ˆ๋‹ค.
ํ–‰๋ณต์€ ๋ฏธ๋ฆฌ ์ง€๋ถˆ๋˜๊ณ ,
๊ทธ๋ฆฌ๊ณ  ๋‚˜์ด๋Š” ๋ฌธ์ œ๊ฐ€ ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์ด์ƒํ•œ ์‚ฌ์ฑ„์—…์ž๋„ ์žˆ๋‹ค
๋‹น์‹ ์—๊ฒŒ ์€์‚ฐ์„ ์ฃผ์‹ค ๊ฒƒ์ž…๋‹ˆ๋‹ค.
๊ทธ๋Š” ๋‚ญ๋น„๊ฐ€ ํฌ์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
๊ทธ๋ฆฌ๊ณ  ์„ ํ•จ์„ ๋ณด์กดํ•จ์œผ๋กœ์จ...

... ๊ทธ๋Ÿฐ ๊ฟˆ์ด์—ˆ์Šต๋‹ˆ๋‹ค. ๋‹น์‹ ์ด ๊นจ์–ด๋‚˜๋ฉด ๋‹น์‹ ์€
๋ฐค์— ์‚ฌ๋ฌด์‹ค๋กœ ๋Œ์•„๊ฐ€์„œ
๊ทธ๋ฆฌ๊ณ  ์ง€๊ธˆ ๋‚˜๋Š” ๊ฟˆ์— ์‚ฌ๋กœ์žกํ˜€ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค
์‹ ๊ฒฝ์‡ ์•ฝ์„ ๊ทน๋ณตํ•˜์„ธ์š”.

๋งˆ์Œ์— ๋“ค์—ˆ๋‹ค๋ฉด ๋™๋ฃŒ๋‚˜ ์นœ๊ตฌ๋“ค์—๊ฒŒ ์•Œ๋ฆฌ์„ธ์š”. ๐Ÿ™‚ ๋‚ด ์›น์‚ฌ์ดํŠธ์—์„œ ๋” ๋งŽ์€ ์—์„ธ์ด๋ฅผ ์ฐพ์•„๋ณด์‹ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ตฌ๋…, ์˜ค์„ธ์š”, ํŒ”๋กœ์šฐํ•˜์„ธ์š”. ๋‚˜๋Š” ๋งค์šฐ ๊ธฐ์  ๊ฒƒ์ด๋‹ค!

์ถœ์ฒ˜ : habr.com

์ฝ”๋ฉ˜ํŠธ๋ฅผ ์ถ”๊ฐ€