Community

๐ŸšŠ Railway-Oriented Programming ์„ ์•„์‹œ๋‚˜์š”?

Railway-Oriented Programming ์€ ์‚ฌ์ด๋“œ ์ดํŽ™ํŠธ๋ฅผ ์ œ์–ดํ•˜๊ธฐ ์œ„ํ•œ ํ•จ์ˆ˜ํ˜• ํŒจ๋Ÿฌ๋‹ค์ž„ ๊ธฐ๋ฐ˜ ๋ฐฉ๋ฒ•๋ก  ์ž…๋‹ˆ๋‹ค. ์ด ๋ฐฉ๋ฒ•๋ก ์€ ์‚ฌ์‹ค ๋„๋ฆฌ ์•Œ๋ ค์ง„ ๋‚ด์šฉ์€ ์•„๋‹™๋‹ˆ๋‹ค๋งŒ, ์ตœ๊ทผ ๊ธ‰๋ถ€์ƒํ•˜๊ณ  ์žˆ๋Š” Rust ์—์„œ try-catch ๋ฌธ๋ฒ•์„ ์ง€์›ํ•˜์ง€ ์•Š๋Š”๋Œ€์‹  ROP ์ฒ ํ•™์„ ์ผ๋ถ€ ๋”ฐ๋ฅด๊ณ  ์žˆ์–ด ์•Œ์•„๋‘๋ฉด ๋‚˜์˜์ง€ ์•Š์€ ๋ฐฉ๋ฒ•๋ก ์ž…๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๊ต‰์žฅํžˆ ๋‹จ์ˆœํ•œ ๋‚ด์šฉ์ด๊ธฐ ๋•Œ๋ฌธ์— ์‹ค์ œ ์ด ๋ฐฉ๋ฒ•๋ก ์„ ๋ชฐ๋ผ๋„ ์ด๋ฏธ ์“ฐ๊ณ  ์žˆ๊ฑฐ๋‚˜ ํ”„๋ ˆ์ž„์›Œํฌ๋‚˜ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์ฝ”๋“œ๋ฅผ ํ†ตํ•ด ์ ‘ํ•ด๋ณด์…จ์„ ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. Railway-Oriented Programming ์„ ๊ฐ„๋‹จํ•˜๊ฒŒ ์š”์•ฝํ•˜๋ฉด, ๋กœ์ง์€ ์„ฑ๊ณต ํ˜น์€ ์‹คํŒจ๋กœ ๋‚˜๋‰˜๊ณ  ๊ทธ์— ๋”ฐ๋ผ ์ƒˆ๋กœ์šด ์„ ๋กœ๋ฅผ ์„ค์น˜ํ•ด์„œ ์‹ ๋ขฐํ•  ์ˆ˜ ์žˆ๋Š” ์†Œํ”„ํŠธ์›จ์–ด๋ฅผ ๊ตฌ์ถ•ํ•œ๋‹ค๋Š” ๋ฐฉ๋ฒ•๋ก ์ž…๋‹ˆ๋‹ค. Railway-Oriented Programming ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ฒ ํ•™์„ ๋”ฐ๋ฆ…๋‹ˆ๋‹ค. ๐Ÿ“Œ ๋ชจ๋“  ๊ธฐ๋Šฅ์€ ์ˆœ์ฐจ์ ์œผ๋กœ ์‹คํ–‰๋œ๋‹ค. ๐Ÿ“Œ ๋ชจ๋“  ๊ธฐ๋Šฅ์€ ์„ฑ๊ณต ํ˜น์€ ์‹คํŒจ๋กœ ๋‚˜๋‰œ๋‹ค. ๐Ÿ“Œ ํ”„๋กœ๊ทธ๋žจ์€ ํŒจ๋‹‰์ด ๋ฐœ์ƒํ•˜๋ฉด ์•ˆ๋œ๋‹ค. Railway-Oriented Programming ์˜ ์ฒ ํ•™์€ ๋‹ค์†Œ ๊ฐ„๋‹จํ•˜์ง€๋งŒ ๊ทธ์— ๋ฐ˜ํ•ด ๋‹ค์Œ๊ณผ ๊ฐ™์€ ํฐ ์žฅ์ ์„ ๊ฐ€์ง€๋Š” ๋ฐฉ๋ฒ•๋ก  ์ž…๋‹ˆ๋‹ค. ํ”„๋กœ๊ทธ๋ž˜๋ฐ์„ ํ•˜๊ฒŒ๋˜๋ฉด ๊ธฐ๋Šฅ์— ๋Œ€ํ•œ ์ถ”์ƒํ™”๋ฅผ ๋งŽ์ด ํ•˜๊ฒŒ ๋ ํ…๋ฐ์š”, Railway-Oriented Programming ์—์„  ๊ธฐ๋Šฅ์„ ์„ ๋กœ์— ๋น—๋Œ€์–ด ์ถ”์ƒํ™”ํ•˜๋ฉฐ ์„ ๋กœ๋ฅผ ๊ตฌ์„ฑํ•˜๋Š” ๊ธฐ๋Šฅ๋“ค์€ ๋ชจ๋‘ ์„ฑ๊ณต ํ˜น์€ ์‹คํŒจ๋กœ ๋‚˜๋ˆ„๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ๊ธฐ๋Šฅ์˜ ๋‹จ์œ„๋ฅผ ์„ฑ๊ณต๊ณผ ์‹คํŒจ๋กœ ๋‚˜๋ˆŒ ์ˆ˜ ์žˆ๋Š” ์ ์ ˆํ•œ ํฌ๊ธฐ๋กœ ๋‚˜๋ˆ„๊ฒŒ ๋˜๋ฏ€๋กœ ๊ตฌํ˜„๊ณผ ๋ฆฌํŒฉํ† ๋ง ํ•˜๋Š” ๊ฒƒ์ด ํŽธํ•ด์ง€๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ๋˜ํ•œ, ๋ชจ๋“  ๊ธฐ๋Šฅ์„ ์ˆœ์ฐจ์ ์œผ๋กœ ์‹คํ–‰ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ํ”„๋กœ๊ทธ๋žจ์˜ ํ๋ฆ„์„ ์ดํ•ดํ•˜๊ธฐ ์‰ฌ์›Œ์ง€๊ณ  ๊ฐ€๋…์„ฑ์ด ์ข‹์•„์ง€๋Š” ์žฅ์ ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๊ณต์œ ๋“œ๋ฆฐ ๊ธ€์—์„œ๋Š” Railway-Oriented Programming ์— ๋Œ€ํ•œ ์ดํ•ด๋ฅผ ๋•๊ธฐ ์œ„ํ•ด ํ•„์š”ํ•œ ๊ฐœ๋…๋“ค์„ ์ž์„ธํžˆ ๋‹ค๋ฃจ๊ณ  ์žˆ์œผ๋‹ˆ ๊ด€์‹ฌ์žˆ์œผ์‹  ๋ถ„๋“ค์€ ํ•œ๋ฒˆ ๋ณด์‹œ๋ฉด ์ข‹๊ฒ ์Šต๋‹ˆ๋‹ค. ๐Ÿ”— ์›๋ฌธ ๋งํฌ: https://kciter.so/posts/railway-oriented-programming

์•Œ๋ฆผ

์•Œ๋ฆผ์ด ์—†์Šต๋‹ˆ๋‹ค