´ë·®±¸¸ÅȨ >
ÄÄÇ»ÅÍ/ÀÎÅͳÝ
>
IT Àü¹®¼­

ÆîÃ帱â
ÄÚƲ¸° ÇÔ¼öÇü ÇÁ·Î±×·¡¹Ö : ÄÚƲ¸°À¸·Î Á¦´ë·Î ÇÔ¼öÇü ÇÁ·Î±×·¡¹Ö ÀÍÈ÷±â (¿øÁ¦:Functional Programming in Kotlin)
Á¤°¡ 45,000¿ø
ÆǸŰ¡ 40,500¿ø (10% , 4,500¿ø)
I-Æ÷ÀÎÆ® 2,250P Àû¸³(6%)
ÆǸŻóÅ ÆǸÅÁß
ºÐ·ù IT Àü¹®¼­
ÀúÀÚ Marco Vermeulen , Runar Bjarnason , Paul Chiusano ( ¿ªÀÚ : ¼­Çü±¹, ¿ÀÇö¼® )
ÃâÆÇ»ç/¹ßÇàÀÏ ¿¡ÀÌÄÜÃâÆÇ / 2023.07.31
ÆäÀÌÁö ¼ö 692 page
ISBN 9791161757681
»óÇ°ÄÚµå 356768955
°¡¿ëÀç°í Àç°íºÎÁ·À¸·Î ÃâÆÇ»ç ¹ßÁÖ ¿¹Á¤ÀÔ´Ï´Ù.
 
ÁÖ¹®¼ö·® :
´ë·®±¸¸Å Àü¹® ÀÎÅÍÆÄÅ© ´ë·®ÁÖ¹® ½Ã½ºÅÛÀ» ÀÌ¿ëÇÏ½Ã¸é °ßÀû¿¡¼­ºÎÅÍ ÇàÁ¤¼­·ù±îÁö Æí¸®ÇÏ°Ô ¼­ºñ½º¸¦ ¹ÞÀ¸½Ç ¼ö ÀÖ½À´Ï´Ù.
µµ¼­¸¦ °ßÀûÇÔ¿¡ ´ãÀ¸½Ã°í ½Ç½Ã°£ °ßÀûÀ» ¹ÞÀ¸½Ã¸é ±â´Ù¸®½Ç ÇÊ¿ä¾øÀÌ ÇÒÀιÞÀ¸½Ç ¼ö ÀÖ´Â °¡°ÝÀ» È®ÀÎÇÏ½Ç ¼ö ÀÖ½À´Ï´Ù.
¸ÅÁÖ ¹ß¼ÛÇØ µå¸®´Â ÀÎÅÍÆÄÅ©ÀÇ ½Å°£¾È³» Á¤º¸¸¦ ¹Þ¾Æº¸½Ã¸é »óÇ°ÀÇ ¼±Á¤À» ´õ¿í Æí¸®ÇÏ°Ô ÇÏ½Ç ¼ö ÀÖ½À´Ï´Ù.

 ´ë·®±¸¸ÅȨ  > ÄÄÇ»ÅÍ/ÀÎÅÍ³Ý  > IT Àü¹®¼­

 
ÄÚƲ¸° ÇÔ¼öÇü ÇÁ·Î±×·¡¹Ö 40,500¿ø (10%)
ÆÄÀ̽ã°ú Qt6·Î GUI ¾ÖÇø®ÄÉÀÌ¼Ç ¸¸µé±â 40,500¿ø (10%)
C++ ÇÔ¼öÇü ÇÁ·Î±×·¡¹Ö 27,000¿ø (10%)
The C++ Programming Language 58,500¿ø (10%)
ÆÄÀ̽ãÀ¸·Î Ç®¾îº¸´Â ¼öÇÐ 22,500¿ø (10%)
          
 

 
Ã¥³»¿ë
¢Â ÀÌ Ã¥¿¡¼­ ´Ù·ç´Â ³»¿ë ¢Â ¡ß ½ÇÁ¦ »óȲ¿¡¼­ È°¿ëÇÒ ¼ö ÀÖ´Â ÇÔ¼öÇü ÇÁ·Î±×·¡¹Ö ±â¹ý ¡ß ÇÔ¼öÇü ¼³°è¸¦ ÇÒ ¶§ À¯¿ëÇÑ °øÅë ±¸Á¶¿Í ¼÷¾îµé ¡ß ´Ü¼ø¼º, ¸ðµâ¼º, ¹ö±× °¨¼Ò! ¢Â ÀÌ Ã¥ÀÇ ´ë»ó µ¶ÀÚ ¢Â ÄÚƲ¸° ¾ð¾î ÀÚü¿Í ÄÚƲ¸° ¾ð¾îÀÇ ±â´ÉÀ» ÀÌ¹Ì ÃæºÐÈ÷ ÀÌÇØÇÑ »ç¶÷À» ´ë»óÀ¸·Î ÇÑ´Ù. ¶ÇÇÑ °´Ã¼ÁöÇâ ¼³°è¿¡ Àͼ÷ÇÏ°í Ŭ·¡½º, ÀÎÅÍÆäÀ̽º, ¸Þ¼­µå, º¯¼ö¸¦ Àß ¾Ë¾Æ¾ß ÇÏÁö¸¸, ÇÔ¼öÇü ÇÁ·Î±×·¡¹Ö¿¡ ´ëÇÑ ¼±¼ö Áö½ÄÀ̳ª °æÇèÀº ÇÊ¿äÇÏÁö ¾Ê´Ù. ÀÏÂ÷ÀûÀ¸·Î´Â Çй®ÀûÀΠåÀÌÁö¸¸ ÇÑÆíÀ¸·Î´Â ¸Å¿ì ½Ç¹«ÀûÀΠåÀ̱⵵ ÇÏ´Ù. Àü¹Ý¿¡ °ÉÃÄ ¿©·¯ ÄÚµå ¿¹Á¦¸¦ »ìÆ캸°í, ¹è¿ì´Â °úÁ¤À» °­È­ÇØÁÖ´Â ¿¬½À¹®Á¦¸¦ ´Ù¼ö Á¦°øÇÑ´Ù. ±×·¯¹Ç·Î ÀÎÅÚ¸®Á¦ÀÌ(IntelliJ) IDEA³ª ÄÚƲ¸°À» ¿ÏÀüÈ÷ Áö¿øÇÏ´Â ºñ½ÁÇÑ ´Ù¸¥ IDE¸¦ Àß ÀÌÇØÇÏ°í ÀÖ¾î¾ß ÇÑ´Ù. IDE ´ë½Å ÅؽºÆ® ÆíÁý±â³ª Å͹̳ÎÀ» »ç¿ëÇÏ´Â °Ô ´õ Àͼ÷ÇÏ´Ù¸é ±× ¶ÇÇÑ »ó°ü¾ø´Ù. ¢Â ÀÌ Ã¥ÀÇ ±¸¼º ¢Â 4°³ ºÎ, ÃÑ 15°³ ÀåÀ¸·Î ÀÌ·ïÁ® ÀÖ´Ù. 1ºÎ¿¡¼­´Â ÇÔ¼öÇü ÇÁ·Î±×·¡¹ÖÀ» ¼Ò°³ÇÏ°í ÀÌ Ã¥ Àü¹Ý¿¡ °ÉÃÄ »ç¿ëÇÒ ±âº»ÀûÀÎ ºôµù ºí·ÏÀ» Á¦°øÇÑ´Ù. 1ÀåÀº ÇÔ¼öÇü ÇÁ·Î±×·¡¹ÖÀÇ Àǹ̸¦ ¼³¸íÇÏ°í ÇÔ¼öÇü ÇÁ·Î±×·¡¹ÖÀÇ ÀÌÁ¡¿¡ ´ëÇØ °¨À» Àâµµ·Ï ÇØÁØ´Ù. 2ÀåÀº Àç±Í·Î ÇÔ¼öÇü ·çÇÁ¸¦ ÀÛ¼ºÇÏ´Â ¹æ¹ýÀ̳ª ²¿¸® È£Ãâ Á¦°Å(tail-call elimination), °íÂ÷ ÇÔ¼ö(high-order function), ÇÔ¼öÇü ´ÙÇü¼º(polymorphism) °°Àº ±âº»±â¸¦ ¾Ë·ÁÁØ´Ù. 3ÀåÀº ¸®½ºÆ®(list)¿Í Æ®¸®(tree)¶ó´Â µÎ °¡Áö Ä÷º¼ÇÀ» ¼ø¼ö ÇÔ¼öÇüÀ¸·Î Á¤ÀÇÇÏ°í ´Ù·ç´Â ¹æ¹ýÀ» ¼³¸íÇÑ´Ù. 4ÀåÀº ¿¹¿Ü¸¦ ´øÁöÁö ¾Ê°í È¿°úÀûÀ¸·Î ¿À·ù¸¦ ó¸®ÇÏ´Â ¹æ¹ýÀ» ±íÀÌ »ìÆ캻´Ù. 5ÀåÀº È¿À²ÀûÀÎ Æò°¡¸¦ À§ÇÑ ºñ¾ö°Ý¼º(non-strictness(Áö¿¬¼ºlazinessÀ̶ó°íµµ ÇÑ´Ù))¿¡ ´ëÇØ ³íÀÇÇÏ°í, ½ºÆ®¸² µ¥ÀÌÅÍ Å¸ÀÔµµ ¼Ò°³ÇÑ´Ù. 6ÀåÀº ÀüÀÌ(transition)¶ó°íµµ ÇÏ´Â »óÅ º¯ÀÌ µ¿ÀÛ(state mutation action)À» ÇÔ¼öÇü ÇÁ·Î±×·¥¿¡¼­ ´Ù·ç´Â ¹æ¹ýÀ» ¾Ë·ÁÁָ鼭 1ºÎ¸¦ ¸¶¹«¸®ÇÑ´Ù. 2ºÎ´Â ¸î °¡Áö ÄÞºñ³×ÀÌÅÍ(combinator) ¶óÀ̺귯¸®¸¦ ¼³°èÇÏ´Â °úÁ¤À» ¾ÆÁÖ ´À½¼ÇÏ°Ô ¼³¸íÇÏ´Â ½ºÅ¸ÀÏ·Î µÅ ÀÖ´Ù´Â Á¡¿¡¼­ 1ºÎ¿Í ²Ï ´Ù¸£´Ù. 7ÀåÀº ºñµ¿±â º´·Ä ó¸®(asynchronous parallel processing)¸¦ À§ÇÑ ÇÔ¼öÇü ¶óÀ̺귯¸®¸¦ ¼³°èÇÏ°í ±¸ÃàÇÏ´Â ¹æ¹ýÀ» º¸¿©ÁØ´Ù. 8ÀåÀº ³­¼öÈ­ÇÑ Å×½ºÆ®¸¦ À§ÇÑ ¼Ó¼º ±â¹Ý Å×½ºÆ®(property-based test) ¶óÀ̺귯¸®¸¦ ¼³°èÇÏ´Â ¹æ¹ýÀ» º¸¿©ÁØ´Ù. 9ÀåÀº ÆĽÌ(parsing) ¿µ¿ªÀ¸·Î µé¾î°¡¼­ JSON Æļ­ ÄÞºñ³×ÀÌÅÍ ¶óÀ̺귯¸®ÀÇ ¿ì¾ÆÇÑ ¼³°è¸¦ µµÃâÇÏ´Â ¹æ¹ýÀ» º¸¿©ÁØ´Ù. 3ºÎ¿¡¼­´Â ŸÀÔ ÁöÁ¤ ÇÔ¼öÇü ÇÁ·Î±×·¡¹Ö¿¡ ¼ÓÇÑ ´õ °í±Þ ÁÖÁ¦ÀΠŸÀÔ Å¬·¡½º(type class)¸¦ »ìÆ캻´Ù. ½ÇÁ¦ »óȲ¿¡¼­ »ç¿ëÇÏ´Â ¸î °¡Áö ¼³°è ÆÐÅÏ Ãß»óÈ­¸¦ ´Ù·ç°í ¿©·¯ºÐÀÌ ÀÌ·± Ãß»óÈ­¸¦ »ç¿ëÇÒ ¼ö ÀÖµµ·Ï Áغñ½ÃŲ´Ù. 10ÀåÀº ¿©·¯ °ªÀ» Á¶ÇÕÇÒ ¶§ ¾µ ¼ö ÀÖ´Â Ãß»óÈ­ÀÎ ¸ð³ëÀ̵å(monoid)¸¦ ´Ù·é´Ù. 11ÀåÀº ¾Ç¸í ³ôÀº ¸ð³ªµå(monad)¸¦ »ô»ôÀÌ ´Ù·ç°í ¿¹Á¦¸¦ »ç¿ëÇØ ¸íÈ®È÷ ¼³¸íÇÑ´Ù. 12ÀåÀº Àû¿ë °¡´É ÆãÅÍ(applicative functor)¿Í ¼øȸ °¡´É ÆãÅÍ(traversable functor)¸¦ ¼³¸íÇϸ鼭 Àû¿ë °¡´É(applicative)ÀÇ ¿ä°ÇÀÌ ¹«¾ùÀÎÁö ¼Ò°³ÇÏ°í ¸ð³ªµå¿Í Àû¿ë °¡´ÉÀÇ Â÷À̸¦ º¸¿©ÁØ´Ù. ¸¶Áö¸· 4ºÎ¿¡¼­´Â ¾Õ¼­ ¹è¿î ³»¿ëÀ» ¹ÙÅÁÀ¸·Î ¼ø¼ö ÇÔ¼öÇü Äڵ忡¼­ ºÎ¼ö È¿°ú¸¦ ´Ù·é´Ù. 13ÀåÀº ÀÓº£µðµåµÈ ¸í·ÉÇü DSLÀ» »ç¿ëÇØ È¿°ú°¡ ÀÖ´Â ÄÚµåÀÇ Ç¥ÇöÀ» ´Ü¼øÈ­ÇÏ´Â ¹æ¹ýÀ» º¸¿©ÁÖ±â À§ÇØ I/O ¸ð³ªµå(ÇÁ¸® ¸ð³ªµå)¸¦ ¼Ò°³ÇÑ´Ù. 14ÀåÀº ƯÁ¤ ºÎ¼ö È¿°ú¿Í º¯À̸¦ ¼ø¼ö ÇÔ¼ö ÇÁ·Î±×·¥ ¾È¿¡ Áö¿ªÈ­ÇÏ´Â(¹ÛÀ¸·Î ³ëÃâ½Ãų ¼ö ¾ø°Ô ¸·À¸¸é¼­ ³»Æ÷½ÃÅ°´Â) ¹æ¹ýÀ» ¾Ë·ÁÁØ´Ù. 15ÀåÀº Áö±Ý²¯ ¹è¿î ¸ðµç ³»¿ëÀ» Áý´ë¼ºÇØ, I/O ½ºÆ®¸²À» Á¡ÁøÀûÀ¸·Î ó¸®ÇÒ ¼ö ÀÖ´Â ¸ðµâÈ­ °¡´ÉÇϸç ÇÕ¼º °¡´ÉÇÑ ÇÁ·Î±×·¥À» À§ÇÑ ½ºÆ®¸² API¸¦ °³¹ßÇÑ´Ù. ¢Â ÁöÀºÀÌÀÇ ¸» ¢Â ÁÁÀº ¼ÒÇÁÆ®¿þ¾î¸¦ ÀÛ¼ºÇÏ´Â °ÍÀº °áÄÚ ½±Áö ¾ÊÀº ÀÏÀÌ´Ù. ¿ì¸®´Â ±â°è°¡ ½ÇÇàÇÒ ¼ö ÀÖ´Â ½±°í È¿À²ÀûÀ¸·Î µ¹¾Æ°¡¾ß¸¸ ÇÏ´Â ¸í·ÉÀ» Á¦°øÇÏ°íÀÚ Äڵ带 ÀÛ¼ºÇÑ´Ù. ¿©±â¼­ ´õ Áß¿äÇÑ »ç½ÇÀº Äڵ忡´Â ´Ù¸¥ ±Ùº»ÀûÀÎ ¸ñÀûÀÌ ÀÖ´Ù´Â Á¡ÀÌ´Ù. Áï, ÄÚµå´Â ÇöÀç¿Í ¹Ì·¡¿¡ ¿ì¸® ÄÚµå¿Í »óÈ£ÀÛ¿ëÇÒ »ç¶÷µé°ú ¸íÈ®È÷ ÀÇ»ç¼ÒÅëÇϱâ À§ÇÑ ¼ö´ÜÀ̶ó°í ÇÒ ¼ö ÀÖ´Ù. µû¶ó¼­ ÄÚµå´Â ±â°è¿¡ ¸í·ÉÀ» ³»¸®´Â µµ±¸¶ó´Â ¿ªÇÒÀ» ÃÊ¿ùÇØ, ¿©·¯ »ç¶÷ÀÌ Çù·ÂÇØ ±â°è¿¡ ¸í·ÉÀ» ³»¸®±â À§ÇÑ µµ±¸°¡ µÇ°í ÀÖ´Ù. ³ª´Â »ó´ëÀûÀ¸·Î ¾î¸± ¶§ºÎÅÍ ÄÚµùÀ» ÇØ¿Ô´Ù. ZX ½ºÆåÆ®·³(ZX Spectrum)¿¡¼­ º£ÀÌÁ÷(BASIC) Äڵ带 ÀÛ¼ºÀ» ½ÃÀÛÀ¸·Î, ÀÌÈÄ Äڸ𵵾î 64(Commodore 64)¿¡¼­ ±â°è¾î Äڵ带 ÀÛ¼ºÇß´Ù. ¿À·§µ¿¾È ÀÌ·±Àú·± ÄÄÇ»ÅÍ¿Í ¾ð¾î¸¦ ÀüÀüÇÑ ³¡¿¡ °á±¹ ¿­Á¤ÀûÀÎ ÀÚ¹Ù °³¹ßÀÚ°¡ µÆ´Ù. ±× ½ÃÁ¡±îÁö ³»°¡ ¹è¿ö¿Ô´ø ÇÁ·Î±×·¡¹Ö Áö½ÄÀº ¸ðµÎ ÇÁ·Î½ÃÀú ±â¹ÝÀ̾úÀ¸¸ç, ÄÄÇ»ÅÍ¿¡°Ô ÇÒ ÀÏÀ» Áö½ÃÇÏ´Â ¸í·É¾î ´Ü°è¸¦ ³ª¿­ÇÑ °ÍÀ̾ú´Ù. 2000³â´ë ÃÊ ÀÚ¹Ù°¡ Á¦½ÃÇÑ °´Ã¼ÁöÇâ °³³äÀº ³ª¸¦ ¾ÆÁÖ ³î¶ó°Ô Çß´Ù. ÀÌÁ¦ ÄÄÇ»ÅÍ ¸Þ¸ð¸®»ó¿¡¼­ °´Ã¼¸¦ ÅëÇØ ½ÇÁ¦ ¼¼°èÀÇ °³³äÀ» ¸ðµ¨¸µÇÒ ¼ö ÀÖ°Ô µÆ±â ¶§¹®ÀÌ´Ù! ¶ÇÇÑ ÀÚ¹Ù¸¦ ÅëÇØ ÄÄÆÄÀÏ ½ÃÁ¡¿¡ ƯÁ¤ ±ÔÄ¢À» °­Á¦ÇÔÀ¸·Î½á ½ÇÇà ½ÃÁ¡ÀÇ ¹®Á¦¸¦ ÁÙ¿©ÁÖ´Â Á¤Àû ŸÀÔ ½Ã½ºÅÛÀÇ °¡Ä¡µµ ¹è¿ü´Ù. ½Ã°£ÀÌ Áö³ª¸é¼­ ¼ÒÇÁÆ®¿þ¾î¿¡ ´ëÇØ »ý°¢ÇÏ´Â ´Ù¸¥ ¹æ½ÄÀ» ¹ß°ßÇß´Ù. ÀÌ·± ±ú´ÞÀ½Àº ´Ù¸¥ Á¤Àû ŸÀÔ ¾ð¾îÀÎ ½ºÄ®¶ó·Î ÇÁ·Î±×·¡¹ÖÀ» ½ÃÀÛÇϸ鼭 ³» ¾È¿¡ ÀÚ¸® Àâ±â ½ÃÀÛÇß´Ù. ÇÔ¼öÇü ÇÁ·Î±×·¡¹ÖÀº ¿ÏÀüÈ÷ »õ·Î¿î Æз¯´ÙÀÓÀ¸·Î, ³» ¸¶À½Àº Ŭ·¡½º¿Í °´Ã¼¿¡ ´ëÇØ »ý°¢ÇÏ´Â °Í¿¡¼­ ¹þ¾î³ª Ŭ·¡½º³ª °´Ã¼ ¾È¿¡ ÀÖ´Â ÇÔ¼ö¿Í ¸Þ¼­µå¸¦ °­Á¶ÇÏ´Â °ÍÀ¸·Î À̵¿Çß´Ù. ¿î ÁÁ°Ôµµ ½ºÄ®¶ó¸¦ ¹è¿ï ¶§´Â ³»°Ô ¸î °¡Áö ȯ»óÀûÀÎ ÀÚ·á°¡ ÀÖ¾ú´Ù. ù ¹ø°´Â ÄÚ¼¼¶ó(Coursera)¿¡ ÀÖ´Â ¸¶Æ¾ ¿À´õ½ºÅ°(Martin Odersky)ÀÇ ÈǸ¢ÇÑ ¡®Functional Programming Principles in Scala(½ºÄ®¶ó·Î ¹è¿ì´Â ÇÔ¼öÇü ÇÁ·Î±×·¡¹Ö ¿ø¸®)¡¯¶ó´Â ºñµð¿À ÄÚ½º¿´´Ù. µÎ ¹ø°´Â 2014³â¿¡ Ãâ°£µÈ ¡º½ºÄ®¶ó·Î ¹è¿ì´Â ÇÔ¼öÇü ÇÁ·Î±×·¡¹Ö¡»(Á¦ÀÌÆà, 2015))¿´´Ù. ¡®»¡°£ Ã¥¡¯À¸·Î Àß ¾Ë·ÁÁø ÀÌ Ã¥Àº ·ç³ª¸£ ºñ¾Æ¸£µå³ª¼Õ(Runar Bjarnason)°ú Æú Ä¡¿ì»ç³ë(Paul Chiusano)°¡ ¼ö³â°£ ÀڽŵéÀÇ °æÇè°ú ³ë·ÂÀ» ½ñ¾ÆºÎÀº °á°ú¹°À̾ú´Ù. ÀÌ µÎ °¡Áö´Â ³» »ý°¢À» Çü¼ºÇÏ´Â µ¥ Å©°Ô ±â¿©ÇßÀ¸¸ç, ¿À´Ã³¯ ³»°¡ ÇÁ·Î±×·¡¹ÖÀ» ÀνÄÇÏ´Â ¹æ½ÄÀ» ¹Ù²ã³ù´Ù. ÄÚƲ¸°À» ¹è¿ì±â ½ÃÀÛÇßÀ» ¶§´Â ÄÚƲ¸°ÀÌ ½ºÄ®¶ó¿Í ºñ½ÁÇÑ ¼º´ÉÀ» °¡Á³À½¿¡µµ, ½Ç¿ë¼ºÀ» Ưº°È÷ °­Á¶ÇÏ´Â µ¥ ºñÇØ Å¸ÀÔ ½Ã½ºÅÛÀ» »ç¿ëÇÏ´Â ÇÔ¼öÇü ÇÁ·Î±×·¡¹ÖÀ̶ó´Â Çй®Àû Ãø¸éÀº ±×´ÙÁö °­Á¶ÇÏÁö ¾Ê´Â´Ù´Â »ç½ÇÀ» ±ú´Þ¾Ò´Ù. ¸î¸î Ä£±¸¿Í ÄÚ¼¼¶ó¿¡¼­ ¡®Kotlin for Java Developers(ÀÚ¹Ù °³¹ßÀÚ¸¦ À§ÇÑ ÄÚƲ¸°)¡¯ ÄÚ½º¸¦ ¸¶Ä£ ´ÙÀ½, ¿ì¸®´Â ±× ½ºÅ͵ð ±×·ìÀ» À¯ÁöÇϸ鼭 ÄÚƲ¸°¿¡¼­ ŸÀÔÀ» »ç¿ëÇÏ´Â FP¿¡ ´ëÇØ Å½±¸ÇÏ´Â Åä´ë·Î½á »¡°£ Ã¥ÀÇ ³»¿ëÀ» »ç¿ëÇÏÀÚ°í À̾߱âÇß´Ù. ½½ÇÁ°Ôµµ ÀÌ ¸ðÀÓÀ» ½ÇÁ¦·Î ÁøÇàÇÏÁö´Â ¸øÇßÁö¸¸, ³» ³ª¸§´ë·Î ¿¬±¸¸¦ ´õ ÁøÇàÇؼ­ »õ·Î¿î ÄÚƲ¸° FP Ã¥ÀÇ °³³äÀ» ¸Å´×ÃâÆǻ翡 Á¦¾ÈÇß´Ù. Ãʱ⠾ÆÀ̵ð¾î´Â Æú°ú ·ç³ª¸£ÀÇ Ã¥°ú ¶È°°Àº ³»¿ëÀ» ´Ù·çµÇ ¸ðµç Äڵ带 ½ºÄ®¶ó°¡ ¾Æ´Ñ ÄÚƲ¸°À¸·Î º¯È¯ÇÏ´Â °ÍÀ̾ú´Ù. ÀÌ Á¦¾ÈÀ» ¹Þ¾Æµé¿©Á³À» ¶§ ³ª´Â ¸Å¿ì ±â»¼´Ù. ÇÏÁö¸¸ ÀÏ´Ü ÁýÇÊÀ» ½ÃÀÛÇÏÀÚ Ã¥Àº ±× ÀÚü·Î »ý¸í·ÂÀÌ ÀÖ´Â Á¸Àç°¡ µÆ°í, ±âÁ¸ÀÇ Á¦¾È¿¡¼­ ¸¹Àº °ÍÀÌ(ÄÚµå»Ó ¾Æ´Ï¶ó º»¹®±îÁöµµ) ´Þ¶óÁ³´Ù. ±×·³¿¡µµ ÀÌ Ã¥Àº ¿øº»ÀÎ »¡°£ Ã¥ÀÇ ±¸Á¶¸¦ ¸Å¿ì Ãæ½ÇÈ÷ µû¸£°í ÀÖ´Ù. ÄÚƲ¸° °³¹ßÀÚ¸¦ À§ÇØ ÀÌ Ã¥À» ¾²¸é¼­ ³ª Àڽŵµ ¾öû³ª°Ô ¼ºÀåÇÒ ¼ö ÀÖ¾ú´Ù. ±× °úÁ¤Àº ÈǸ¢ÇÑ ¹è¿òÀÇ °æÇèÀ̱⵵ ÇßÀ¸¸ç, ÀÌÀüº¸´Ù ÀÌ Ã¥ÀÇ °³³äÀ» ´õ ½É¿ÀÇÏ°í dzºÎÇÏ°Ô ÀÌÇØÇÒ ¼ö ÀÖ°Ô µÆ´Ù. ÀÌ Ã¥À» ÅëÇÑ ¿©ÇàÀ» ½ÃÀÛÇÏ´Â ¿©·¯ºÐµµ ³»°¡ °¢°¢ÀÇ ÆäÀÌÁö¸¦ ÀûÀ» ¶§¸¶´Ù ´À³¢°í ¹è¿ü´ø ³»¿ëÀ» ÃÖ´ëÇÑ ¸¹ÀÌ ¾ò¾î°¡±æ ¹Ù¶õ´Ù. ¼Ò°³ÇÏ´Â °³³äÀ» ÀÌÇØÇϸé, ¿©·¯ºÐÀÌ Äڵ带 ÀÛ¼ºÇÏ´Â ¹æ½Ä°ú ±× ¾ÆÀ̵ð¾î¸¦ ¿©·¯ºÐÀÇ ¹ßÀÚ±¹À» µû¶ó¿À´Â ´Ù¸¥ »ç¶÷µé¿¡°Ô Á¦½ÃÇÏ´Â ¹æ¹ýÀ» ¿µ¿øÈ÷ ¹Ù²ãÁÙ °ÍÀÌ´Ù. ÀÌ Ã¥ÀÌ ³»°Ô È¿°ú°¡ ÀÖ¾úµíÀÌ ¿©·¯ºÐ¿¡°Ôµµ È¿°ú°¡ ÀÖ±æ ¹Ù¶õ´Ù. ¹«¾ùº¸´Ù ³»°¡ ±×·¨´ø °Íó·³ ¿©·¯ºÐµµ ÀÌ Ã¥ÀÇ ¸ðµç ÆäÀÌÁö¿¡¼­ Àç¹Ì¸¦ ´À³¢°í Áñ±â°Ô µÇ±æ ±â´ëÇÑ´Ù. ¢Â ¿Å±äÀÌÀÇ ¸» ¢Â ºòµ¥ÀÌÅÍ ºÕÀÌ ÀÏ ¶§ ½ºÄ®¶ó(Scala)¿Í ½ºÆÄÅ©(Spark)°¡ Àû±ØÀûÀ¸·Î Ä¿¹Â´ÏƼ¿¡ ¹Þ¾Æµé¿©Áö¸é¼­ºÎÅÍ ÇÔ¼öÇü ÇÁ·Î±×·¡¹Ö¿¡ ´ëÇÑ ¼¼°£ÀÇ °ü½ÉÀÌ ±× Àü¿¡ ºñÇØ ±ØÀûÀ¸·Î ´Ã¾î³µ´Ù. ÀÌÁ¦´Â ÀÏ¹Ý °³¹ßÀÚ »çÀÌ¿¡µµ ÇÔ¼öÇü ÇÁ·Î±×·¡¹ÖÀÌ ¾î´À Á¤µµ ÇʼöÀûÀÎ ÇÁ·Î±×·¡¹Ö Æз¯´ÙÀÓÀ¸·Î ¹Þ¾Æµé¿©Áö´Â ºÐÀ§±â´Ù. 2010³â´ë ÀÌÀü°ú ºñ±³Çϸé, ÇÔ¼öÇü ÇÁ·Î±×·¡¹Ö¿¡ ´ëÇÑ Ã¥µµ ¸¹ÀÌ ´Ã¾î³µ°í µ¿¿µ»ó °­Àdzª °ü·Ã ÀÚ·áµµ ÀÎÅͳݿ¡¼­ ¸¹ÀÌ Ã£¾Æº¼ ¼ö ÀÖ°Ô µÆ´Ù. ±×·³¿¡µµ ÇÔ¼öÇü ÇÁ·Î±×·¡¹ÖÀ» Á¤ÅëÀûÀ¸·Î ¾Ë·ÁÁִ åÀº ±×¸® ¸¹Áö ¾Ê´Ù. ¹«¾ùº¸´Ù ÀÏ¹Ý ÇÁ·Î±×·¡¹Ö ¾ð¾î¿¡¼­ ŸÀÔÀ» È°¿ëÇÏ´Â ÇÔ¼öÇü ÇÁ·Î±×·¡¹ÖÀÇ °í°è ŸÀÔÀ» Ç¥ÇöÇÏ·Á¸é ¾î·Á¿î Á¡ÀÌ ¸¹À¸¹Ç·Î, ÇÔ¼öÇü Æз¯´ÙÀÓ°ú º¹ÀâÇÑ Å¸ÀÔ ½Ã½ºÅÛÀ» Àû±ØÀûÀ¸·Î Áö¿øÇÏ´Â ÇϽºÄÌ(Haskell)À̳ª ½ºÄ®¶ó °°Àº ¾ð¾î¸¦ »ç¿ëÇØ ÇÔ¼öÇü ÇÁ·Î±×·¡¹ÖÀÇ °³³äÀ» ¾Ë·ÁÁÖ´Â °æ¿ì°¡ ¸¹´Ù. ´ëÇ¥ÀûÀΠåÀ¸·Î ÇϽºÄÌÀÇ ¡º°¡Àå ½¬¿î ÇϽºÄÌ Ã¥¡»(ºñÁ¦ÀÌÆÛºí¸¯, 2014)À̳ª À̸¥¹Ù ¡®»¡°£ Ã¥¡¯ÀÎ ½ºÄ®¶óÀÇ ¡º½ºÄ®¶ó·Î ¹è¿ì´Â ÇÔ¼öÇü ÇÁ·Î±×·¡¹Ö¡»ÀÌ ÀÖ´Ù. ¹Ý´ë·Î Á¤Àû ŸÀÔÀ» Áö¿øÇÏÁö ¾Ê´Â ¾ð¾î(ÀÚ¹Ù½ºÅ©¸³Æ® µî)¿¡¼­ ÇÔ¼öÇü ÇÁ·Î±×·¡¹ÖÀ» ´Ù·ç´Â Ã¥µµ ¸¹ÀÌ ÀÖÁö¸¸, ŸÀÔ ½Ã½ºÅÛÀ» È°¿ëÇÏÁö ¾Ê±â ¶§¹®¿¡ °í°è ŸÀÔÀÌ ÁÖ´Â ÀåÁ¡À» »ì¸®Áö ¸øÇÑ´Ù´Â ÇÑ°è°¡ ÀÖ´Ù. ÀÌ Ã¥Àº À¯¸íÇÑ ¡®»¡°£ Ã¥¡¯ÀÇ ÄÚƲ¸° ¹öÀüÀ¸·Î, ÄÚƲ¸°À» ¾Ë°í ÀÖ´Â °³¹ßÀÚµéÀÌ ÇÔ¼öÇü ÇÁ·Î±×·¡¹ÖÀÇ °³³äÀ» ±íÀÌ ¹è¿ì°í ¿¬½ÀÇÒ ¼ö ÀÖµµ·Ï ¾²¿´´Ù. »õ·Î¿î Æз¯´ÙÀÓÀ» ¹è¿ì±â À§ÇØ »õ·Î¿î ÇÁ·Î±×·¡¹Ö ¾ð¾î¸¦ ¹è¿ì¸é, ¹éÁö »óÅ¿¡¼­ °³³ä°ú ¾ð¾î¸¦ ÇÔ²² ¹è¿ï ¼ö ÀÖ¾î ¿ÏÀüÈ÷ »õ·Î¿î °üÁ¡¿¡¼­ ¹è¿òÀ» ÁøÇàÇÒ ¼ö ÀÖ´Ù´Â ÀåÁ¡ÀÌ ÀÖ´Ù. ÇÏÁö¸¸ ¾ð¾î¸¦ ¹è¿ì´Â µ¥ µå´Â ³ë·ÂÀ¸·Î ÀÎÇØ °³³äÀ» ÀÌÇØÇϱâ´Â ´õ ¾î·Á¿öÁú ¼öµµ ÀÖ´Ù. ±×·± Á¡¿¡¼­ º¼ ¶§, ÀÌ Ã¥Àº ÄÚƲ¸° ÇÁ·Î±×·¡¹Ö ¾ð¾î¸¦ »ç¿ëÇßÀ¸¹Ç·Î Á» ´õ ½±°Ô ÇÔ¼öÇü ÇÁ·Î±×·¡¹Ö¿¡ Á¢±ÙÇÒ ¼ö ÀÖ´Â ±æÀ» ¿­¾îÁشٰí ÇÒ ¼ö ÀÖÀ» °ÍÀÌ´Ù. ÀÌ Ã¥À» Àаí, ¿¬½À¹®Á¦¸¦ ¸ðµÎ Ç®¾î³ª°¡´Ù º¸¸é ÇÔ¼öÇü ÇÁ·Î±×·¡¹ÖÀÇ °³³äÀ» ÀÌÇØÇÏ°í ´Ù¾çÇÑ ÇÔ¼öÇü ŸÀÔÀ» ¼³°èÇÒ ´É·ÂÀ» Å°¿ö ³ª°¥ ¼ö ÀÖÀ» °ÍÀÌ´Ù. ¶ÇÇÑ, ¸í·ÉÇü Äڵ带 ÀÛ¼ºÇÒ ¶§µµ ÇнÀÇÑ °³³äÀ» È°¿ëÇØ Á» ´õ ¿ì¼öÇÏ°í ¾ÈÀüÇÑ ÇÁ·Î±×·¥À» ÀÛ¼ºÇÒ ¼ö ÀÖ°Ô µÈ´Ù. ºÎµð ÇÔ¼öÇü ÇÁ·Î±×·¡¹Ö¿¡ °ü½ÉÀ» °®°í ÀÌ Ã¥À» Áý¾îµç ¿©·¯ºÐÀÌ Àüü ¿©Á¤À» ¸¶Ä£ ÈÄ Àß ÈÆ·ÃµÈ ÇÔ¼öÇü ÇÁ·Î±×·¡¸Ó·Î °Åµì³ª±æ ±â¿øÇÑ´Ù.
¸ñÂ÷
1ºÎ. ÇÔ¼öÇü ÇÁ·Î±×·¡¹Ö ¼Ò°³ 1Àå. ÇÔ¼öÇü ÇÁ·Î±×·¡¹ÖÀ̶õ? 1.1 FPÀÇ ÀåÁ¡: °£´ÜÇÑ ¿¹Á¦ 1.1.1 ºÎ¼ö È¿°ú°¡ ÀÖ´Â ÇÁ·Î±×·¥ 1.1.2 ÇÔ¼öÇü Çعý: ºÎ¼ö È¿°ú Á¦°ÅÇϱâ 1.2 Á¤È®È÷ (¼ø¼ö) ÇÔ¼ö¶õ ¹«¾ùÀΰ¡? 1.3 ÂüÁ¶ Åõ¸í¼º, ¼ø¼ö¼º, ġȯ ¸ðµ¨ 1.4 ¾ÕÀ¸·Î »ìÆ캼 ³»¿ë ¿ä¾à 2Àå. ÄÚƲ¸°À¸·Î ÇÔ¼öÇü ÇÁ·Î±×·¡¹Ö ½ÃÀÛÇϱâ 2.1 °íÂ÷ ÇÔ¼ö: ÇÔ¼ö¸¦ ÇÔ¼ö¿¡ ³Ñ±â±â 2.1.1 Àá½Ã µ¹¾Æ°¡±â: ·çÇÁ¸¦ ÇÔ¼öÀûÀ¸·Î ÀÛ¼ºÇÏ´Â ¹æ¹ý 2.1.2 ù ¹ø° °íÂ÷ ÇÔ¼ö ÀÛ¼ºÇϱâ 2.2 ´ÙÇüÀû ÇÔ¼ö: ŸÀÔ¿¡ ´ëÇØ Ãß»óÈ­Çϱâ 2.2.1 ´ÙÇüÀû ÇÔ¼ö ¿¹Á¦ 2.2.2 À͸í ÇÔ¼ö¸¦ »ç¿ëÇØ °íÂ÷ ÇÔ¼ö È£ÃâÇϱâ 2.3 ŸÀÔ¿¡ ¸ÂÃç ±¸ÇöÇϱ⠿ä¾à 3Àå. ÇÔ¼öÇü µ¥ÀÌÅÍ ±¸Á¶ 3.1 ÇÔ¼öÇü µ¥ÀÌÅÍ ±¸Á¶ Á¤ÀÇÇϱâ 3.2 ÇÔ¼öÀû µ¥ÀÌÅÍ ±¸Á¶ ´Ù·ç±â 3.2.1 ŸÀÔÀ¸·Î ¸ÅĪÇϱâ À§ÇÑ ¡®when¡¯ 3.2.2 if-else¸¦ ´ë½ÅÇÏ´Â when 3.2.3 ÆÐÅÏ ¸ÅĪÀº ¹«¾ùÀ̸ç ÄÚƲ¸° ¸ÅĪ°ú ¾î¶² Â÷ÀÌ°¡ ÀÖ³ª? 3.3 ÇÔ¼öÇü µ¥ÀÌÅÍ ±¸Á¶ ¾ÈÀÇ µ¥ÀÌÅÍ °øÀ¯ 3.3.1 µ¥ÀÌÅÍ °øÀ¯ÀÇ È¿À² 3.4 ¸®½ºÆ®¿¡ ´ëÇÑ Àç±Í¿Í À̸¦ °íÂ÷ ÇÔ¼ö·Î ÀϹÝÈ­ÇÏ´Â ¹æ¹ý 3.4.1 ¸®½ºÆ®¿¡ ÀÛ¿ëÇÏ´Â ´Ù¸¥ ÇÔ¼öµé 3.4.2 ÄÚƲ¸° Ç¥ÁØ ¶óÀ̺귯¸®ÀÇ ¸®½ºÆ® 3.4.3 ´Ü¼øÇÑ ¿ä¼Òµé·ÎºÎÅÍ ¸®½ºÆ® ÇÔ¼ö¸¦ ÇÕ¼ºÇÏ´Â µ¥ µû¸¥ ºñÈ¿À² 3.5 Æ®¸® ¿ä¾à 4Àå. ¿¹¿Ü¸¦ »ç¿ëÇÏÁö ¾Ê°í ¿À·ù ´Ù·ç±â 4.1 ¿¹¿Ü¸¦ ´øÁö´Â °ÍÀÇ ¹®Á¦Á¡ 4.2 ¿¹¿Ü¿¡ ´ëÇÑ ¹®Á¦°¡ ÀÖ´Â ´ë¾È 4.2.1 ¼¾Æ¼³Ú °ª 4.2.2 µðÆúÆ® °ª Á¦°ø 4.3 OptionÀ¸·Î ¼º°ø »óȲ ÀÎÄÚµùÇϱâ 4.3.1 Option »ç¿ë ÆÐÅÏ 4.3.2 Option ÇÕ¼º, ²ø¾î¿Ã¸®±â ¹× ¿¹¿Ü ±â¹Ý API °¨½Î±â 4.3.3 Option°ú for ÄÄÇÁ¸®Çî¼Ç »ç¿ëÇϱâ 4.4 ¼º°ø°ú ½ÇÆÐ Á¶°ÇÀ» Either·Î ÀÎÄÚµùÇϱâ 4.4.1 Either¸¦ for ÄÄÇÁ¸®Çî¼Ç¿¡¼­ »ç¿ëÇϱ⠿ä¾à 5Àå. ¾ö°Ý¼º°ú Áö¿¬¼º 5.1 ¾ö°ÝÇÑ ÇÔ¼ö¿Í ¾ö°ÝÇÏÁö ¾ÊÀº ÇÔ¼ö 5.2 È®Àå ¿¹Á¦: Áö¿¬ ¸®½ºÆ® 5.2.1 ½ºÆ®¸²À» ¸Þ¸ðÈ­ÇÏ°í Àç°è»ê ÇÇÇϱâ 5.2.2 ½ºÆ®¸² °üÂûÀ» À§ÇÑ µµ¿ì¹Ì ÇÔ¼ö 5.3 ÇÁ·Î±×·¥ ±â¼ú°ú Æò°¡ ºÐ¸®Çϱâ 5.4 °øÀç±Í ÇÔ¼ö¸¦ ÅëÇØ ¹«ÇÑÇÑ µ¥ÀÌÅÍ ½ºÆ®¸² »ý¼ºÇϱâ 5.5 °á·Ð ¿ä¾à 6Àå. ¼ø¼ö ÇÔ¼öÇü »óÅ 6.1 ºÎ¼ö È¿°ú¸¦ »ç¿ëÇØ ³­¼ö »ý¼ºÇϱâ 6.2 ¼ø¼ö ÇÔ¼öÇü ³­¼ö »ý¼º±â 6.3 »óÅ°¡ ÀÖ´Â API¸¦ ¼ø¼ö ÇÔ¼öÇü API·Î ¸¸µé±â 6.4 »óÅ µ¿ÀÛÀ» Àü´ÞÇÏ´Â ¾Ï½ÃÀû Á¢±Ù ¹æ¹ý 6.4.1 »óÅ µ¿ÀÛ Á¶ÇÕÀ» ÅëÇØ ´õ Å« ´É·Â ¹ßÈÖÇϱâ 6.4.2 »óÅ µ¿ÀÛÀ» ³»Æ÷½ÃÄѼ­ Àç±ÍÀûÀ¸·Î Àç½ÃµµÇϱâ 6.4.3 ÄÞºñ³×ÀÌÅÍ API¸¦ Ãʱ⠿¹Á¦¿¡ Àû¿ëÇϱâ 6.5 ÀϹÝÀûÀÎ »óÅ µ¿ÀÛ Å¸ÀÔ 6.6 ¼ø¼ö ÇÔ¼öÇü ¸í·ÉÇü ÇÁ·Î±×·¡¹Ö 6.7 °á·Ð ¿ä¾à 2ºÎ. ÇÔ¼öÇü ¼³°è¿Í ÄÞºñ³×ÀÌÅÍ ¶óÀ̺귯¸® 7Àå. ¼ø¼ö ÇÔ¼öÇü º´·Ä¼º 7.1 µ¥ÀÌÅÍ Å¸ÀÔ°ú ÇÔ¼ö ¼±ÅÃÇϱâ 7.1.1 º´·Ä °è»êÀ» À§ÇÑ µ¥ÀÌÅÍ Å¸ÀÔ 7.1.2 µ¿½Ã¼ºÀ» º¸ÀåÇϱâ À§ÇØ º´·Ä °è»ê Á¶ÇÕÇϱâ 7.1.3 ½ÇÇàÇÒ °è»êÀ» ¸í½ÃÀûÀ¸·Î Ç¥½ÃÇϱâ 7.2 Ç¥Çö ¼±ÅÃÇϱâ 7.3 ÃÖÁ¾ »ç¿ëÀÚ¸¦ ¿°µÎ¿¡ µÎ°í API ´Ùµë±â 7.4 ´ë¼öÀû µî½ÄÀ» »ç¿ëÇØ API¿¡ ´ëÇØ Ãß·ÐÇϱâ 7.4.1 ¸ÅÇÎ ±ÔÄ¢ 7.4.2 ³í¸® ½º·¹µå ºÐ±âÀÇ ¹ýÄ¢ 7.4.3 ³íºí·ÎÅ· ±¸ÇöÀ» À§ÇØ ¾×ÅÍ »ç¿ëÇϱâ 7.5 °¡Àå ÀϹÝÀûÀÎ ÇüÅ·ΠÄÞºñ³×ÀÌÅÍ ´Ùµë±â ¿ä¾à 8Àå. ¼Ó¼º ±â¹Ý Å×½ºÆ® 8.1 ¼Ó¼º ±â¹Ý Å×½ºÆ® ¸Àº¸±â 8.2 µ¥ÀÌÅÍ Å¸ÀÔ°ú ÇÔ¼ö ¼±ÅÃÇϱâ 8.2.1 °¡´ÉÇÑ API¿¡ ´ëÇÑ ÂªÀº Ãʱ⠿¹Á¦ ÄÚµå ¸ðÀ¸±â 8.2.2 ¼Ó¼ºÀÇ ÀÇ¹Ì¿Í API Ž±¸Çϱâ 8.2.3 »ý¼º±âÀÇ API¿Í ÀÇ¹Ì ¹ß°ßÇϱâ 8.2.4 »ý¼ºµÈ °ª¿¡ ÀÇÁ¸ÇÏ´Â »ý¼º±â 8.2.5 ¼Ó¼º µ¥ÀÌÅÍ Å¸ÀÔ ´Ùµë±â 8.3 Å×½ºÆ® ÄÉÀ̽º ÃÖ¼ÒÈ­ 8.4 ¶óÀ̺귯¸®¸¦ »ç¿ëÇÏ°í »ç¿ëÀÚ °æÇè °³¼±Çϱâ 8.4.1 ¸î °¡Áö °£´ÜÇÑ ¿¹Á¦ 8.4.2 º´·Ä °è»ê¿¡ ¾î¿ï¸®´Â Å×½ºÆ® ½ºÀ§Æ® ÀÛ¼ºÇϱâ 8.5 °íÂ÷ ÇÔ¼ö³ª ´Ù¸¥ °¡´É¼º »ý¼ºÇϱâ 8.6 »ý¼º±âÀÇ ¹ýÄ¢ 8.7 °á·Ð ¿ä¾à 9Àå. Æļ­ ÄÞºñ³×ÀÌÅÍ 9.1 ´ë¼ö ¼³°èÇϱâ 9.1.1 ¹®ÀÚ Çϳª¸¦ ÀνÄÇϱâ À§ÇÑ Æļ­ 9.1.2 Àüü ¹®ÀÚ¿­À» ÀνÄÇϱâ À§ÇÑ Æļ­ 9.1.3 ¹Ýº¹À» ÀνÄÇϱâ À§ÇÑ Æļ­ 9.2 ´ë¼ö¸¦ ¼³°èÇÏ´Â ÇÑ °¡Áö Á¢±Ù ¹æ¹ý 9.2.1 ¹®ÀÚ ¹Ýº¹ Ƚ¼ö ¼¼±â 9.2.2 ½½¶óÀ̰̽ú ºñ¾î ÀÖÁö ¾ÊÀº ¹Ýº¹ 9.3 ¹®¸Æ¿¡ ´ëÇÑ ¹Î°¨¼º ó¸®Çϱâ 9.4 JSON Æļ­ ÀÛ¼ºÇϱâ 9.4.1 JSON Æļ­ÀÇ ¿¹»ó µ¿ÀÛ Á¤ÀÇÇϱâ 9.4.2 JSON Çü½Ä Á¤¸® 9.4.3 JSON Æļ­ 9.5 º¸°í¸¦ ÅëÇØ ¿À·ù¸¦ Ç¥¸é¿¡ µå·¯³»±â 9.5.1 ¿À·ù º¸°í ù ¹ø° ½Ãµµ 9.5.2 ¿À·ù ³»Æ÷¸¦ ÅëÇØ ¿À·ù ´©Àû½ÃÅ°±â 9.5.3 ºÐ±â¿Í ¹éÆ®·¡Å· Á¦¾î 9.6 ´ë¼ö ±¸ÇöÇϱâ 9.6.1 Á¡ÁøÀûÀ¸·Î ´ë¼öÀÇ ±¸Çö ±¸ÃàÇϱâ 9.6.2 Æļ­ÀÇ ½ÃÄö½º ó¸®Çϱâ 9.6.3 Æļ­¿¡ ·¹À̺íÀ» ºÙ¿©¼­ ¿À·ù ¸Þ½ÃÁö Àâ¾Æ³»±â 9.6.4 ¿À·ù ȸº¹°ú ¹éÆ®·¡Å· 9.6.5 ¹®¸Æ ¹Î°¨ Æļ­¸¦ ÅëÇØ »óÅ ÀüÆÄÇϱâ 9.7 °á·Ð ¿ä¾à 3ºÎ. ÇÔ¼öÇü ¼³°èÀÇ ÀÏ¹Ý ÆÐÅÏ 10Àå. ¸ð³ëÀ̵å 10.1 ¸ð³ëÀ̵å¶õ ¹«¾ùÀΰ¡? 10.2 ¸ð³ëÀ̵å·Î ¸®½ºÆ® Á¢±â 10.3 °áÇÕ¼º°ú º´·Ä¼º 10.4 ¿¹Á¦: º´·Ä ÆÄ½Ì 10.5 Á¢À» ¼ö ÀÖ´Â µ¥ÀÌÅÍ ±¸Á¶ 10.6 ¸ð³ëÀ̵å ÇÕ¼ºÇϱâ 10.6.1 ´õ º¹ÀâÇÑ ¸ð³ëÀ̵å Á¶¸³Çϱâ 10.6.2 ¼øȸ À¶ÇÕÀ» À§ÇØ ÇÕ¼ºÇÑ ¸ð³ëÀÌµå »ç¿ëÇϱ⠿ä¾à 11Àå. ¸ð³ªµå¿Í ÆãÅÍ 11.1 ÆãÅÍ 11.1.1 map ÇÔ¼ö¸¦ ÀϹÝÈ­ÇØ ÆãÅÍ Á¤ÀÇÇϱâ 11.1.2 ¹ýÄ¢ÀÇ Á߿伺°ú ÆãÅÍ¿¡ ´ëÇÑ °ü°è 11.2 ¸ð³ªµå: flatMap°ú unit ÇÔ¼ö ÀϹÝÈ­Çϱâ 11.2.1 ¸ð³ªµå ÀÎÅÍÆäÀ̽º ¼Ò°³ 11.3 ¸ð³ªµåÀûÀÎ ÄÞºñ³×ÀÌÅÍ 11.4 ¸ð³ªµå ¹ýÄ¢ 11.4.1 °áÇÕ ¹ýÄ¢ 11.4.2 ±¸Ã¼ÀûÀÎ ¸ð³ªµå¿¡ ´ëÇØ °áÇÕ ¹ýÄ¢ Áõ¸íÇϱâ 11.4.3 ¿ÞÂÊ°ú ¿À¸¥ÂÊ Ç×µî ¹ýÄ¢ 11.5 µµ´ëü ¸ð³ªµå¶õ ¹«¾ùÀΰ¡? 11.5.1 Ç×µî ¸ð³ªµå 11.5.2 State ¸ð³ªµå¿Í ºÎºÐÀûÀΠŸÀÔ Àû¿ë ¿ä¾à 12Àå. Àû¿ë °¡´É ÆãÅÍ¿Í ¼øȸ °¡´É ÆãÅÍ 12.1 Àç»ç¿ë¼ºÀ» À§ÇØ ¸ð³ªµå ÀϹÝÈ­Çϱâ 12.2 ¸ð³ªµåÀÇ ´ë¾ÈÀÎ Àû¿ë °¡´É ÆãÅÍ 12.3 ¸ð³ªµå¿Í Àû¿ë °¡´É ÆãÅÍÀÇ Â÷ÀÌ 12.3.1 Option Àû¿ë °¡´É ÆãÅÍ¿Í Option ¸ð³ªµåÀÇ ºñ±³ 12.3.2 Parser Àû¿ë °¡´É ÆãÅÍ¿Í Parser ¸ð³ªµå 12.4 Àû¿ë °¡´É ÆãÅÍÀÇ ÀåÁ¡ 12.4.1 ¸ðµç Àû¿ë °¡´É ÆãÅÍ°¡ ¸ð³ªµå´Â ¾Æ´Ï´Ù 12.5 Àû¿ë °¡´É ¹ýÄ¢À» »ç¿ëÇØ ÇÁ·Î±×·¥¿¡ ´ëÇØ Ãß·ÐÇϱâ 12.5.1 ¿ÞÂÊ°ú ¿À¸¥ÂÊ Ç×µî¿ø ¹ýÄ¢ 12.5.2 °áÇÕ ¹ýÄ¢ 12.5.3 ÀÚ¿¬¼ºÀÇ ¹ýÄ¢ 12.6 ¼øȸ °¡´ÉÀ» »ç¿ëÇØ traverse¿Í sequence Ãß»óÈ­Çϱâ 12.7 TraversableÀ» »ç¿ëÇØ °í·ù ŸÀÔÀ» ¹Ýº¹ÀûÀ¸·Î º¯È¯Çϱâ 12.7.1 ¸ð³ëÀ̵忡¼­ Àû¿ë °¡´É ÆãÅÍ·Î 12.7.2 »óÅ µ¿ÀÛÀ» ÀüÆĽÃÅ°´Â µ¿½Ã¿¡ Ä÷º¼Ç ¼øȸÇϱâ 12.7.3 ¼øȸ °¡´É ±¸Á¶ Á¶ÇÕÇϱâ 12.7.4 ´ÜÀÏ Æнº È¿À²¼ºÀ» À§ÇÑ Æ®¸® À¶ÇÕ 12.7.5 ³»Æ÷µÈ ¼øȸ °¡´É ±¸Á¶¸¦ µ¿½Ã ¼øȸÇϱâ 12.7.6 ¸ð³ªµå ÇÕ¼ºÀÇ ÇÔÁ¤°ú ÇÔÁ¤À» ÇÇÇÏ´Â ¹æ¹ý ¿ä¾à 4ºÎ. È¿°ú¿Í ÀÔÃâ·Â 13Àå. ¿ÜºÎ È¿°ú¿Í I/O 13.1 È¿°ú°¡ ÀÖ´Â ÇÁ·Î±×·¥¿¡¼­ È¿°ú »Ì¾Æ³»±â 13.2 È¿°ú°¡ ÀÖ´Â Äڵ带 ºÐ¸®Çϱâ À§ÇØ IO ŸÀÔ µµÀÔÇϱâ 13.2.1 ÀÔ·Â È¿°ú ó¸®Çϱâ 13.2.2 °£´ÜÇÑ IO ŸÀÔÀÇ Àå´ÜÁ¡ 13.3 ½Çüȭ¿Í Æ®·¥Æú¸°È­¸¦ ÅëÇØ ½ºÅà ¿À¹öÇ÷Π¿À·ù ¹æÁöÇϱâ 13.3.1 µ¥ÀÌÅÍ »ý¼ºÀÚ·Î È帧 Á¦¾î ½ÇüȭÇϱâ 13.3.2 Æ®·¥Æú¸°È­: ½ºÅà ¿À¹öÇ÷ο¡ ´ëÇÑ ÀϹÝÀûÀÎ Çعý 13.4 ´õ ÀûÀýÇÑ ´µ¾Ó½ºÀÇ IO ŸÀÔ 13.4.1 Ÿ´çÇÑ °¡°ÝÀÌ ºÙÀº ¸ð³ªµå 13.4.2 ÄÜ¼Ö I/O¸¸ Áö¿øÇÏ´Â ¸ð³ªµå 13.4.3 ¼ø¼ö Çؼ®±â¸¦ »ç¿ëÇØ ÄÜ¼Ö I/O Å×½ºÆ®Çϱâ 13.5 ³íºí·ÎÅ·°ú ºñµ¿±â I/O 13.6 ¹ü¿ë IO ŸÀÔ 13.6.1 ¼¼°èÀÇ ¹Ý´ëÂÊ¿¡ ÀÖ´Â ÁÖ ÇÁ·Î±×·¥ 13.7 ¿Ö IO ŸÀÔÀÌ ½ºÆ®¸®¹Ö I/O¿¡ ´ëÇØ ºÎÁ·ÇÑ°¡? ¿ä¾à 14Àå. Áö¿ª È¿°ú¿Í °¡º¯ »óÅ 14.1 ¼ø¼ö ÇÔ¼öÇü ÄÚµå ¾È¿¡¼­ »óÅ º¯ÀÌ°¡ ÇÕ¹ýÀûÀÌ´Ù 14.2 ºÎ¼ö È¿°úÀÇ ¿µ¿ªÀ» °­Á¦ÇÏ´Â µ¥ÀÌÅÍ Å¸ÀÔ 14.2.1 ¿µ¿ªÀÌ Á¦ÇÑµÈ º¯À̸¦ À§ÇÑ DSL 14.2.2 °¡º¯ ÂüÁ¶ÀÇ ´ë¼ö 14.2.3 °¡º¯ »óÅ µ¿ÀÛ ½ÇÇàÇϱâ 14.2.4 ST ¸ð³ªµåÀÇ µ¥ÀÌÅÍ Å¸ÀÔÀ¸·Î Ç¥ÇöµÈ °¡º¯ ¹è¿­ 14.2.5 ¼ø¼ö ÇÔ¼öÀûÀÎ ÀÎÇ÷¹À̽º Äü¼ÒÆ® 14.3 ¼ø¼ö¼ºÀº ¸Æ¶ô¿¡ µû¶ó ´Þ¶óÁø´Ù 14.3.1 ¿¹Á¦¸¦ ÅëÇÑ Á¤ÀÇ 14.3.2 ºÎ¼ö È¿°ú·Î Ãë±ÞÇÒ ¼ö ÀÖ´Â °ÍÀº ¹«¾ùÀϱî? ¿ä¾à 15Àå. ½ºÆ®¸² ó¸®¿Í Á¡ÁøÀû I/O 15.1 ¸í·ÉÇü I/OÀÇ ¹®Á¦Á¡: ¿¹Á¦ 15.2 °£´ÜÇÑ Æ®·£½ºµà¼­¸¦ »ç¿ëÇØ ½ºÆ®¸² º¯È¯Çϱâ 15.2.1 ½ºÆ®¸² Æ®·£½ºµà¼­¸¦ ¸¸µé±â À§ÇÑ ÄÞºñ³×ÀÌÅÍ 15.2.2 ÀÌ¾î ºÙÀ̱â¿Í ÇÕ¼ºÀ» »ç¿ëÇØ ¿©·¯ Æ®·£½ºµà¼­ ÇÕÄ¡±â 15.2.3 ÆÄÀÏ Ã³¸®¸¦ À§ÇÑ ½ºÆ®¸² Æ®·£½ºµà¼­ 15.3 ÇÁ·ÎÅäÄÝ ÆĶó¹ÌÅÍÈ­¸¦ À§ÇÑ È®Àå °¡´ÉÇÑ ÇÁ·Î¼¼½º 15.3.1 ½ºÆ®¸² ¹ß»ýÀ» À§ÇÑ ¼Ò½º 15.3.2 ½ºÆ®¸² Æ®·£½ºµà¼­ÀÇ ÀÚ¿ø ¾ÈÀü¼º º¸ÀåÇϱâ 15.3.3 Æ®·£½ºµà¼­¸¦ ´ÜÀÏ ÀÔ·Â ½ºÆ®¸²¿¡ Àû¿ëÇϱâ 15.3.4 ´ÙÁß ÀÔ·Â ½ºÆ®¸² 15.3.5 Ãâ·Â 󸮸¦ À§ÇÑ ½ÌÅ© 15.3.6 È¿°ú°¡ Àִ ä³Î¿¡¼­ È¿°ú ¼û±â±â 15.3.7 µ¿ÀûÀÎ ÀÚ¿ø ÇÒ´ç 15.4 ½ÇÁ¦ ¼¼°è¿¡¼­ÀÇ ½ºÆ®¸² Æ®·£½ºµà¼­ È°¿ë ¿ä¾à ¸¶¹«¸®ÇÏ¸ç ºÎ·Ï A ¿¬½À¹®Á¦ ÈùÆ®¿Í ÆÁ ºÎ·Ï B ¿¬½À¹®Á¦ ÇØ´ä ºÎ·Ï C °í·ù ŸÀÔ ºÎ·Ï D ŸÀÔ Å¬·¡½º

ÀúÀÚ
Marco Vermeulen
20¿©³â ÀÌ»óÀÇ JVM ÇÁ·Î±×·¡¹Ö °æ·ÂÀÌ ÀÖ´Â ÇÁ·Î±×·¡¸ÓÀÌ´Ù.
Runar Bjarnason
Æú Ä¡¿ì»ç³ë(Paul Chiusano)¿Í ÇÔ²² ¡º½ºÄ®¶ó·Î ¹è¿ì´Â ÇÔ¼öÇü ÇÁ·Î±×·¡¹Ö¡»(Á¦ÀÌÆà, 2015)À» Àú¼úÇß´Ù.
Paul Chiusano
·ç³ª¸£ ºñ¾Æ¸£µå³ª¼Õ(Runar Bjarnason)°ú ÇÔ²² ¡º½ºÄ®¶ó·Î ¹è¿ì´Â ÇÔ¼öÇü ÇÁ·Î±×·¡¹Ö¡»(Á¦ÀÌÆà, 2015)À» Àú¼úÇß´Ù.

¿ªÀÚ
¼­Çü±¹
KAIST Àü»êÇаú Çкθ¦ Á¹¾÷ÇÏ°í ¼­°­´ë Á¤º¸Åë½Å´ëÇпø Á¤º¸½Ã½ºÅÛ Àü°øÀ¸·Î ¼®»çÇÐÀ§¸¦ ÃëµæÇß´Ù. ¼ÖÆ®·è½º, ¿ÍÀÌÁî³Ó µîÀÇ °Ë»ö°ú ÅؽºÆ®¸¶ÀÌ´× Àü¹® ±â¾÷¿¡¼­ Å°¿öµå ÃßÃâ±â, ¹®¼­ Ŭ·¯½ºÅ͸µ ¿£Áø, ƯÇã ¼±Çà ±â¼ú °Ë»ö ½Ã½ºÅÛ µîÀ» °³¹ßÇßÀ¸¸ç, ÅؽºÆ® À̸éÀÇ Á¤º¸¸¦ ij³»°í(¸» ±×´ë·Î ¸¶ÀÌ´×ÇÏ´Â) È°¿ëÇÏ´Â µ¥ °ü½ÉÀÌ ¸¹´Ù.
¿ÀÇö¼®
KAIST ´ëÇпø¿¡¼­ ¡®¸Ó½Å·¯´×¡¯ ¿¬±¸½ÇÀ» Á¹¾÷ÇÏ°í, ÇöÀç±îÁö Çö´ëÀÚµ¿Â÷¿¡¼­ ÀÚÀ²ÁÖÇà°ú µö·¯´× ºÐ¾ß¿¡¼­ 7³â ÀÌ»ó È°¹ßÈ÷ ¿¬±¸ È°µ¿À» Áö¼ÓÇÏ°í ÀÖ´Ù. ȸ»ç¿¡¼­´Â µö·¯´× ±â¼úÀ» È°¿ëÇÏ¿© ´õ ¾ÈÀüÇÑ ÀÚÀ²ÁÖÇà ½Ã½ºÅÛÀ» °³¹ßÇÏ´Â ÀÏÀ» ÇÏ°í ÀÖÀ¸¸ç ¿©°¡½Ã°£¿¡´Â ÀΰøÁö´É ºÐ¾ßÀÇ Ä¿¸®¾î¸¦ ½×±â À§ÇØ µö·¯´× ÇÁ·ÎÁ§Æ®¸¦ ¼öÇàÇÏ°í ÀÖ´Ù. º»ÀÎÀÇ ±â¼úÀûÀÎ ¿ª·®À» ¹ßÀü½ÃÅ°´Â °Í»Ó¸¸ ¾Æ´Ï¶ó ´ëÁßµéÀÌ ÀΰøÁö´ÉÀ» ½±°Ô ÀÌÇØÇÒ ¼ö ÀÖµµ·Ï µ½°íÀÚ ÇÏ´Â ¿­Á¤À» °¡Áö°í ÀÖ´Ù. Áö±Ý ÀΰøÁö´ÉÀº ¼¼»óÀ» ¹Ù²Ù´Â Áß¿äÇÑ ÁöÁ¡¿¡ ¿ÍÀÖ´Ù. ÀΰøÁö´ÉÀº ¿ì¸®°¡ ¾ÕÀ¸·Î ¸ÂÀÌÇÒ ¸¹Àº ¹®Á¦µéÀ» ÇØ°áÇÒ ¼ö ÀÖ´Â µµ±¸À̸ç, ±×°ÍÀ» Á¦´ë·Î È°¿ëÇÏ´Â °ÍÀÌ ´õ ³ªÀº ¼¼»óÀ» ¸¸µå´Âµ¥ Áß¿äÇÑ ¿ªÇÒÀ» ÇÒ °ÍÀ̶ó°í ¹Ï°í ÀÖ´Ù. ´õ ³ªÀº ¹Ì·¡¸¦ À§ÇØ ÀΰøÁö´É°ú ÇÔ²² ³ª¾Æ°¥ ¼ö ÀÖ´Â ¹æ¹ýÀ» ¿¬±¸Çϸç, ¿¬±¸ÇÑ ¹Ù¸¦ »ç¶÷µé°ú °øÀ¯Çϸç ÁýÇÊÈ°µ¿µµ Áö¼ÓÇÏ°í ÀÖ´Ù.

¦­ºí·Î±×¦­ https://mallard-oh-coding.tistory.com/
¦­±êÇãºê¦­ https://github.com/MallardOh

ÀÌ ÃâÆÇ»çÀÇ °ü·Ã»óÇ°
¾ð¸®¾ó ¿£Áø 5 ¼ÎÀÌ´õ¿Í ÀÌÆåÆ® 2/e | ºê¶óÀ̽º ºê·»¶ó ¶ó¸ð½º,±è±âµ· | ¿¡ÀÌÄÜÃâÆÇ
µ¥ºê¿É½º ÇÚµåºÏ 2/e | Nicole Forsgren,Á¸ Àª¸®½º,Patrick Debois,Jez Humble,Áø Å´ ¿Ü | ¿¡ÀÌÄÜÃâÆÇ
È®·ü·ÐÀû ¸Ó½Å·¯´× | ÀÌÆÇÈ£,Murphy, Kevin P. | ¿¡ÀÌÄÜÃâÆÇ
¾çÀÚ ÄÄÇ»ÆÃÀÇ ÀÌÇØ | ³²±âȯ | ¿¡ÀÌÄÜÃâÆÇ
¸Ö¿þ¾î ºÐ¼®°ú ¸®¹ö½º ¿£Áö´Ï¾î¸µ | Saldanha, Anoop,Mohanta, Abhijit | ¿¡ÀÌÄÜÃâÆÇ

ÀÌ ºÐ¾ß ½Å°£ °ü·Ã»óÇ°
´Ù½Ã ²¨³»´Â ¾ÆÀÌÆеå Re:µå·ÎÀ× with ÇÁ·ÎÅ©¸®¿¡ÀÌÆ® | ¾ØÁ¦ÀÌBOOKS
µû¶óÇϸé ÇÕ°ÝÀÌ´Ù! CAT CAD½Ç¹«´É·ÂÆò°¡ 2±Þ | ±èº¸¿µ,ÁÖÇü±Ç | ¿¥µà
2024 SD¿¡µà Win-Q 3DÇÁ¸°ÅÍ¿î¿ë±â´É»ç ½Ç±â ´Ü±âÇÕ°Ý | ¹Úº´¿í | ½Ã´ë°í½Ã±âȹ
2025 SQLD ¸ðµç °Í | Á¶¿ëÇÐ | ¾ÆÀ̸®Æ÷
½Ç¹«¿¡ ¹Ù·Î ¾²´Â ÀÏÀß·¯ÀÇ UiPath ¾÷¹« ÀÚµ¿È­ | ÀÌÁÖ¼® | Á¦ÀÌÆà
 
µµ¼­¸¦ ±¸ÀÔÇϽŠ°í°´ ¿©·¯ºÐµéÀÇ ¼­ÆòÀÔ´Ï´Ù.
ÀÚÀ¯·Î¿î ÀÇ°ß ±³È¯ÀÌ °¡´ÉÇÕ´Ï´Ù¸¸, ¼­ÆòÀÇ ¼º°Ý¿¡ ¸ÂÁö ¾Ê´Â ±ÛÀº »èÁ¦µÉ ¼ö ÀÖ½À´Ï´Ù.

µî·ÏµÈ ¼­ÆòÁß ºÐ¾ß¿Í »ó°ü¾øÀÌ ¸ÅÁÖ ¸ñ¿äÀÏ 5ÆíÀÇ ¿ì¼öÀÛÀ» ¼±Á¤ÇÏ¿©, S-Money 3¸¸¿øÀ» Àû¸³Çص帳´Ï´Ù.
ÃÑ 0°³ÀÇ ¼­ÆòÀÌ ÀÖ½À´Ï´Ù.