๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
Daily/Today I Learned

201221_TIL

by joooing 2020. 12. 22.
๋ฐ˜์‘ํ˜•

๐ŸŽ ์˜ค๋Š˜ ๋ฐฐ์šด ๊ฒƒ


โœ”๏ธ ์ผ๊ธ‰๊ฐ์ฒด, ๊ณ ์ฐจํ•จ์ˆ˜
์ผ๊ธ‰๊ฐ์ฒด = ๋ณ€์ˆ˜์— ํ• ๋‹น ๊ฐ€๋Šฅ(ํ•จ์ˆ˜ํ‘œํ˜„์‹), ๋‹ค๋ฅธํ•จ์ˆ˜์˜ parameter๋กœ ์ „๋‹ฌ ๊ฐ€๋Šฅ, ๋‹ค๋ฅธํ•จ์ˆ˜์˜ ๊ฒฐ๊ณผ๋กœ return ๊ฐ€๋Šฅ
๊ณ ์ฐจํ•จ์ˆ˜ = ํ•จ์ˆ˜๋ฅผ parameter๋กœ ๋ฐ›๊ฑฐ๋‚˜, ํ•จ์ˆ˜๋ฅผ returnํ•˜๋Š” ํ•จ์ˆ˜

โœ”๏ธ ๋‚ด์žฅ ๊ณ ์ฐจํ•จ์ˆ˜ : filter, map, reduce
filter = ํŠน์ • ์กฐ๊ฑด์„ ๋งŒ์กฑํ•˜๋Š” ๋ชจ๋“  ์š”์†Œ๋ฅผ ๋ชจ์•„ ์ƒˆ๋กœ์šด ๋ฐฐ์—ด๋กœ ๋ฐ˜ํ™˜ํ•˜๋Š” ๋ฉ”์„œ๋“œ
map = ๋ฐฐ์—ด์˜ ๋ชจ๋“  ์š”์†Œ์— ๋™์ผํ•œ ํ•จ์ˆ˜๋ฅผ ์ ์šฉํ•ด ์ƒˆ๋กœ์šด ๋ฐฐ์—ด๋กœ ๋ฐ˜ํ™˜ํ•˜๋Š” ๋ฉ”์„œ๋“œ
reduce = ๋ˆ„์‚ฐ๊ธฐ์— ๊ณ„์‚ฐ์„ ๋ˆ„์ ํ•œ ํ•˜๋‚˜์˜ ๊ฒฐ๊ณผ๊ฐ’์„ ํ• ๋‹นํ•ด ๋ฐ˜ํ™˜ํ•˜๋Š” ๋ฉ”์„œ๋“œ

โœ”๏ธ ์‚ผํ•ญ ์กฐ๊ฑด ์—ฐ์‚ฐ์ž
condition? exprIfTrue : exprIfFalse  ํ˜•ํƒœ๋กœ ์‚ฌ์šฉํ•œ๋‹ค.
condition(์กฐ๊ฑด)์ด true์ด๋ฉด, exprIfTrue์„ ๋ฐ˜ํ™˜ํ•˜๋ฉฐ, ์กฐ๊ฑด์ด false์ด๋ฉด exprIfFalse๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

 

๐ŸŽ ๊ธฐ์–ตํ•  ๊ฒƒ


โœ”๏ธ caller, callbackํ•จ์ˆ˜
๊ณ ์ฐจ ํ•จ์ˆ˜(higher order function)๋Š” ํ•จ์ˆ˜๋ฅผ ์ธ์ž(argument)๋กœ ๋ฐ›๊ฑฐ๋‚˜ ํ•จ์ˆ˜๋ฅผ ๋ฆฌํ„ดํ•˜๋Š” ํ•จ์ˆ˜๋ฅผ ๋งํ•œ๋‹ค. ์ด ๋•Œ ์ธ์ž(arguments)๋ฅผ ๋ฐ›๋Š” ํ•จ์ˆ˜๋ฅผ caller, ์ธ์ž๋กœ ์ „๋‹ฌ๋˜๋Š” ํ•จ์ˆ˜๋ฅผ callback function(์ฝœ๋ฐฑํ•จ์ˆ˜)๋ผ๊ณ  ํ•œ๋‹ค. ๋ง๊ทธ๋Œ€๋กœ ๋ถ€๋ฅด๋Š” ํ•จ์ˆ˜์™€ ๋ถˆ๋ฆฌ๋Š” ํ•จ์ˆ˜! ์ฐธ๊ณ ๋กœ, caller๋Š” ์กฐ๊ฑด์— ๋”ฐ๋ผ ์ฝœ๋ฐฑ ํ•จ์ˆ˜์˜ ์‹คํ–‰ ์—ฌ๋ถ€๋ฅผ ๊ฒฐ์ •ํ•  ์ˆ˜๋„ ์žˆ๊ณ , ์—ฌ๋Ÿฌ ๋ฒˆ ์‹คํ–‰ํ•  ์ˆ˜๋„ ์žˆ๋‹ค.

โœ”๏ธ ์ปค๋ฆฌ ํ•จ์ˆ˜(Curry Function)
ํ•จ์ˆ˜๋ฅผ ๋ฆฌํ„ดํ•˜๋Š” ๊ฒฝ์šฐ ์ค‘ 'ํ•จ์ˆ˜๋ฅผ ๋ฆฌํ„ดํ•˜๋Š” ํ•จ์ˆ˜'๋งŒ์„ ์ผ์ปซ๋Š” ์šฉ์–ด์ด๋‹ค. ๊ณ ์ฐจํ•จ์ˆ˜์˜ ์กฐ๊ฑด์ด 1) ํ•จ์ˆ˜๋ฅผ ์ธ์ž(argument)๋กœ ๋ฐ›๊ฑฐ๋‚˜ 2)ํ•จ์ˆ˜๋ฅผ ๋ฆฌํ„ดํ•˜๋Š” ํ•จ์ˆ˜์ด๊ธฐ ๋•Œ๋ฌธ์—, ๊ณ ์ฐจ ํ•จ์ˆ˜๊ฐ€ ์ปค๋ฆฌ ํ•จ์ˆ˜๋ฅผ ํฌํ•จํ•˜๋Š” ๊ด€๊ณ„๋ผ๊ณ  ํ•  ์ˆ˜ ์žˆ๋‹ค.

โœ”๏ธ arguments
 ํ•จ์ˆ˜์— ์ „๋‹ฌ๋˜๋Š” ์ธ์ž๋กœ ์“ฐ๋Š” '๋ฐฐ์—ด ํ˜•ํƒœ์˜ ๊ฐ์ฒด' , ํ˜•์‹์ƒ ๋ฐ›๊ธฐ๋กœ ์„ ์–ธ๋œ ๊ฒƒ๋ณด๋‹ค ๋งŽ์€ ์ธ์ˆ˜๋กœ ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•  ๋•Œ ์‚ฌ์šฉํ•œ๋‹ค!

 

๐ŸŽ ๋” ๊ณต๋ถ€ํ•  ๊ฒƒ


โœ”๏ธ ๋‚ด์žฅ ๊ณ ์ฐจํ•จ์ˆ˜ ์‹ฌํ™”
์˜ค๋Š˜ ์ •๋ฆฌํ•œ filter, map, reduce ์™ธ์—๋„ Each, find, sort, some, every ์— ๋Œ€ํ•ด์„œ๋„ ์ •๋ฆฌํ•ด์„œ ๋ธ”๋กœ๊น…ํ•ด์•ผ๊ฒ ๋‹ค!

โœ”๏ธ ์ต๋ช…ํ•จ์ˆ˜
์–ด์ฉ” ๋•Œ๋Š” ์ด๋ฆ„์„ ๋ถ™์ด๊ณ , ์–ด์ฉ” ๋•Œ๋Š” ์ต๋ช…์œผ๋กœ ํ•จ์ˆ˜๋ฅผ ์„ ์–ธํ•ด๋„ ๋˜๋Š”๊ฑด์ง€, ์™œ ์“ฐ๋Š” ๊ฑด์ง€, ๋ญ๊ฐ€ ๋” ์ข‹์€ ๋ฐฉ๋ฒ•์ธ์ง€ ์ฐพ์•„๋ด์•ผ๊ฒ ๋‹ค.
 
โœ”๏ธ ์ปค๋ง/์ปค๋ง ํ•จ์ˆ˜์˜ ๊ด€๊ณ„, ์ปค๋ง/ํด๋กœ์ €์˜ ์ฐจ์ด ์ดํ•ดํ•˜๊ธฐ
์ปค๋ง๊ณผ ์ปค๋ง ํ•จ์ˆ˜๊ฐ€ ๋น„์Šทํ•œ ๊ฐœ๋…์„ ๋ฐ”ํƒ•์œผ๋กœ ํ•œ๋‹ค๋Š” ๊ฒƒ์€ ์–ด๋ ดํ’‹์ด ์•Œ๊ฒ ๋Š”๋ฐ ์ •ํ™•ํžˆ ์–ด๋–ค ๊ฐœ๋…์„ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•˜๋Š”์ง€, ์–ด๋–ค ๊ด€๋ จ์ด ์žˆ๋Š” ์ง€์— ๋Œ€ํ•ด์„œ ์ข€ ๋” ์ƒ๊ฐํ•ด ๋ณด๋ ค๊ณ  ํ•œ๋‹ค. ์ด์™€  ๋ฐ˜๋Œ€๋กœ ์ปค๋ง๊ณผ  ํด๋กœ์ €๋Š” ์–ด๋–ค ๋ฉด์—์„œ ๋‹ค๋ฅธ์ง€์— ๋Œ€ํ•ด์„œ๋„ ์ดํ•ดํ•ด๋ณด๋„๋ก ํ•ด์•ผ๊ฒ ๋‹ค.

โœ”๏ธMapReduce Model์— ๋Œ€ํ•ด ์•Œ์•„๋ณด๊ธฐ
 ๋งต ๋ฆฌ๋“€์Šค๋Š” map, reduce ๊ณผ์ •์„ ๊ฑฐ์น˜๋Š” ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ์™€ ๊ด€๋ จ๋œ ๊ฐœ๋…์ด๋ผ๋Š” ์ •๋„๋กœ๋งŒ ์•Œ๊ณ  ์žˆ๋Š”๋ฐ, ์˜ค๋Š˜ ๋ฐฐ์› ๋˜ ๋‚ด์žฅ ๊ณ ์ฐจํ•จ์ˆ˜ map๊ณผ reduce๋ฅผ ๋ฐ”ํƒ•์œผ๋กœ ๋งต๋ฆฌ๋“€์Šค์— ๋Œ€ํ•ด ๊ฒ€์ƒ‰ํ•ด ๋ณด๊ณ  ์ •๋ฆฌํ•ด๋ด์•ผ๊ฒ ๋‹ค.

โœ”๏ธ์„ ์–ธํ˜• ํ”„๋กœ๊ทธ๋ž˜๋ฐ(declarative programming) vs ์ ˆ์ฐจํ˜• ํ”„๋กœ๊ทธ๋ž˜๋ฐ(imperative programming)
์„ ์–ธํ˜• ํ”„๋กœ๊ทธ๋ž˜๋ฐ๊ณผ ์ ˆ์ฐจํ˜• ํ”„๋กœ๊ทธ๋ž˜๋ฐ์˜ ์ฐจ์ด์— ๋Œ€ํ•ด ๊ฒ€์ƒ‰ํ•ด๋ณด๊ณ , ์ดํ•ด์— ๋„์›€์ด ๋  ๊ฒƒ ๊ฐ™์€ ๋งํฌ๋“ค์„ ์ •๋ฆฌ๋งŒ ํ•ด๋‘์—ˆ๋Š”๋ฐ, ๋‚ด์ผ์€ ๋ฐฐ์—ด ๋ฉ”์†Œ๋“œ์™€ ๊ด€๋ จ ์ง€์–ด ๋‘ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์˜ ์ฐจ์ด๋ฅผ ์ดํ•ดํ•ด๋ณด๋ ค๊ณ  ํ•œ๋‹ค.

 

 

โœ๏ธ ์˜ค๋Š˜์€ ๋‚ฏ์„  ๊ฐœ๋…์ด๋ž‘ ์šฉ์–ด๋“ค์ด ๋งŽ์ด ๋‚˜์™€์„œ ๊ณ„์† ํ•„๊ธฐํ•ด๋‘”๊ฑธ ์ฐพ์•„๋ณด๋ฉฐ ๊ณต๋ถ€ํ•œ ๊ฒƒ ๊ฐ™๋‹ค. ๊ทธ๋งŒํผ ํ•„๊ธฐ์˜ ์ค‘์š”์„ฑ์„ ๋˜ํ•œ๋ฒˆ ๋Š๋ผ๊ธฐ๋„ ํ–ˆ๊ณ , ์ƒˆ๋กœ์šด ๊ฐœ๋…๋“ค์ด ์ต์ˆ™ํ•ด์งˆ๋•Œ๊นŒ์ง€ ๋ฐ˜๋ณตํ•ด์•ผ๊ฒ ๋‹ค๊ณ  ๋Š๊ผˆ๋‹ค๐Ÿ’ฆ

๋ฐ˜์‘ํ˜•

'Daily > Today I Learned' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

201223_TIL  (2) 2020.12.24
201222_TIL  (0) 2020.12.23
201218_TIL  (2) 2020.12.19
201217_TIL  (0) 2020.12.18
201216_TIL  (0) 2020.12.17

๋Œ“๊ธ€