|
|
|
 |
ÆÇ¸Å°¡ |
36,000¿ø ¡æ 32,400¿ø 10% |
|
 |
¸¶Àϸ®Áö |
5% 1,800¿ø |
|
 |
¹ßÇàÀÏ |
2017-10-31
|
 |
ISBN |
1161750711 | 9791161750712
|
 |
±âŸÁ¤º¸ |
¹ø¿ª¼ | 620ÂÊ
| ÀϹÝ
|
|
 |
¿¹»óÃâ°íÀÏ
|
2~3ÀÏ À̳» (±Ù¹«ÀϱâÁØ) |
 |
¹è¼Ûºñ |
¹«·á¹è¼Û
|
|
|
|
|
|
|
 |
ÇÁ·Î±×·¡¹Ö
|
|
|
|
|
|
¡Ø NAVER Pay·Î ±¸¸Å½Ã Á¦ÁÖÁö¿ªÀº 5¸¸¿ø ¹Ì¸¸ °áÀçÀÇ °æ¿ì ¹è¼Ûºñ°¡ Ãß°¡ µÉ ¼ö ÀÖ½À´Ï´Ù.
|
|
|
 |
|
¡Ú ¿ä¾à ¡Ú
ÄÚÆ²¸°ÀÌ ¾Èµå·ÎÀÌµå °ø½Ä ¾ð¾î°¡ µÇ¸é¼ °ü½ÉÀÌ Ä¿Á³´Ù. ÀÌ Ã¥Àº ÄÚÆ²¸° ¾ð¾î¸¦ °³¹ßÇÑ Á¬ºê·¹ÀÎÀÇ ÄÚÆ²¸° ÄÄÆÄÀÏ·¯ °³¹ßÀÚµéÀÌ Á÷Á¢ ¾´ ÀÏÁ¾ÀÇ °ø½Ä ¼ÀûÀ̶ó ÇÒ ¼ö ÀÖ´Ù. ÄÚÆ²¸° ¾ð¾îÀÇ °¡Àå Å« Ư¡À̶ó¸é ½Ç¿ë¼ºÀ» µé ¼ö ÀÖÀ» °ÍÀÌ´Ù. ÀÌ Ã¥¿¡¼µµ ½Ç¿ë¼ºÀ» °Á¶ÇÏ´Â ÀÔÀå¿¡¼ ¾²¿´´Ù. ÄÚÆ²¸° ±âÃʸ¦ ¼Ò°³Çϰí, °íÂ÷ÇÔ¼ö, °´Ã¼ÁöÇâ, Á¦³×¸¯½º µîÀÇ ³»¿ëÀ» ¼³¸íÇÑ´Ù. ±×¸®°í ÄÚÆ²¸°ÀÌ ÀÚ¹Ù ¾ð¾î¸¦ ¾î¶»°Ô °³¼±Çß°í ±âÁ¸ ÀÚ¹Ù ÇÁ·ÎÁ§Æ®¿¡¼ ÄÚÆ²¸°À» ÇÔ²² »ç¿ëÇÒ ¶§ ¾î¶² ºÎºÐÀ» Á¶½ÉÇØ¾ß ÇÒÁö¸¦ Áß½ÉÀ¸·Î ÄÚÆ²¸° ¾ð¾î¸¦ ¼³¸íÇÑ´Ù. ÈĹݿ¡´Â ¾Ö³ëÅ×À̼ǰú ¸®Ç÷º¼Ç, DSL¿¡ ´ëÇØ ½ÇÁ¦ ¶óÀ̺귯¸® ¿¹Á¦¸¦ ´Ù·ç¸é¼ ¼³°è ±â¹ý°ú ±¸Çö±â¹ýÀ» ÀÚ¼¼È÷ ¼³¸íÇÑ´Ù. ƯÈ÷ ÀÌ ÁÖÁ¦´Â ÀÌ Ã¥ÀÇ ¹é¹Ì·Î, ´Ù¸¥ ÄÚÆ²¸° Ã¥À̳ª °ø½Ä ¹®¼¿¡¼´Â ã¾Æº¸±â Èûµé¸ç ½ÇÀü¿¡¼ Å©°Ô µµ¿òÀÌ ¹ÞÀ» ¼ö ÀÖ´Ù. Çѱ¹¾îÆÇ ºÎ·Ï¿¡¼´Â ÄÚÆ²¸° ¹öÀü 1.3±îÁöÀÇ º¯È¸¦ Á¤¸®ÇÑ ³»¿ë°ú ÄÚ·çÆ¾¿¡ ´ëÇÑ °£´ÜÇÑ ¼Ò°³¸¦ µ¡ºÙ¿´´Ù.
¡Ú ÃßõÀÇ ±Û ¡Ú ¾ð¾î¸¦ ¸Ç ¹Ø¹Ù´ÚºÎÅÍ ¼³°èÇÏ´Â ÀÏÀº ±× ÀÚü·Îµµ Èûµç ÀÏÀÌ´Ù. ÇÏÁö¸¸ »õ ¾ð¾î°¡ ±âÁ¸ÀÇ ´Ù¸¥ ¾ð¾î¿Í Àß ¾î¿ì·¯Áöµµ·Ï ¼³°èÇÏ´Â ÀÏÀº ÀüÇô ´Ù¸£´Ù. ±âÁ¸ ¾ð¾î¿Í ¾î¿ì·¯Áö´Â ¾ð¾î¸¦ ¼³°èÇÏ´Â °úÁ¤¿¡¼ ¾îµÎÄÄÄÄÇÏ°í ½º»êÇÑ ±«¹° ¼Ò±¼À» ¿©·µ Åë°úÇÏ¸é¼ ¼ö¾øÀÌ ¸¹Àº Èû¼¾ ±«¹°À» ¹°¸®ÃÄ¾ß ÇÑ´Ù. ÀÚ¹Ù »óÈ£¿î¿ë¼ºÀº ÄÚÆ²¸°ÀÇ °¡Àå Áß¿äÇÑ ÁÖÃåµ¹À̶ó ÇÒ ¼ö ÀÖÀ¸¸ç, ÀÌ Ã¥Àº ÀÚ¹Ù ÄÚÆ²¸° »óÈ£¿î¿ë¼º¿¡ ½Å°æÀ» ¸¹ÀÌ ½è´Ù. ÀÌ¹Ì Á¸ÀçÇÏ´Â ÀÚ¹Ù ÇÁ·ÎÁ§Æ®¿¡ ÄÚÆ²¸°À» Á¡ÁøÀûÀ¸·Î µµÀÔÇÒ ¶§ ÀÚ¹Ù ÄÚÆ²¸° »óÈ£¿î¿ë¼ºÀÌ ¸Å¿ì Áß¿äÇÏ´Ù. ½ÉÁö¾î »õ·Î¿î ÇÁ·ÎÁ§Æ®¸¦ ÄÚÆ²¸°¸¸À¸·Î ÀÛ¼ºÇÏ´õ¶óµµ ÀÚ¹Ù·Î ¾²ÀÎ ±¤¹üÀ§ÇÑ ¶óÀ̺귯¸®·Î ÀÌ·ïÁø Ç÷§ÆûÀ̶ó´Â ´õ Å« ±×¸²¿¡ µé¾î¸Â°Ô ÄÚÆ²¸° ¾ð¾î¸¦ ±¸»çÇØ¾ß ÇÑ´Ù. ÀÌ ÃßõÀÇ ±ÛÀ» ¾²´Â µ¿¾È¿¡µµ µÎ °¡Áö Ÿ°Ù Ç÷§ÆûÀ» ´õ °³¹ß ÁßÀÌ´Ù. ÀÌÁ¦ ÄÚÆ²¸°Àº ÀÚ¹Ù½ºÅ©¸³Æ®¸¦ Áö¿øÇϱ⠶§¹®¿¡ Ç® ½ºÅà À¥ °³¹ßÀÌ °¡´ÉÇÏ´Ù. ¶ÇÇÑ ºü¸¥ ½ÃÀÏ ¾È¿¡ Çʿ信 µû¶ó ³×ÀÌÆ¼ºê ÄÚµå·Î ÄÚÆ²¸°À» ÄÄÆÄÀÏÇØ¼ VM¾øÀ̵µ ÄÚÆ²¸° ÇÁ·Î±×·¥À» ½ÇÇàÇÒ ¼ö ÀÖ°Ô ÇÒ ¿¹Á¤ÀÌ´Ù. µû¶ó¼ ÇöÀç ÀÌ Ã¥Àº JVM¿¡ ÁÖ·Î ÃÊÁ¡À» ¸ÂÃßÁö¸¸ ¾ÕÀ¸·Î´Â ÀÌ Ã¥¿¡¼ ¹è¿î ³»¿ëÀ» ¿©·¯ ´Ù¸¥ ½ÇÇà ȯ°æ¿¡ Àû¿ëÇÒ ¼ö ÀÖÀ» °ÍÀÌ´Ù. ÀúÀÚµéÀº ÃʱâºÎÅÍ ÄÚÆ²¸° ÆÀÀÇ ÀÏ¿øÀ̾ú±â ¶§¹®¿¡ ÄÚÆ²¸° ¾ð¾î¿Í ±× ³»ºÎ ±¸Á¶¿¡ ´ëÇØ Àß ¾Ë°í ÀÖ´Ù. ±×µéÀº °¢Á¾ ÄÁÆÛ·±½º³ª ¿öÅ©¼ó ¹ßÇ¥, ÄÚÆ²¸° ±³À° °úÁ¤ µîÀ» ÅëÇØ ÄÚÆ²¸°À» ´õ Àß ¼³¸íÇÒ ¼ö ÀÖ°Ô µÆ°í, »ç¶÷µéÀÌ ÀÚÁÖ ÇÏ´Â Áú¹®À̳ª ÈçÈ÷ ÀúÁö¸£´Â ½Ç¼ö¿¡ ´ëÇØ ´õ ¸¹ÀÌ ¾Ë°Ô µÆ´Ù. ÀÌ Ã¥Àº ÄÚÆ²¸° ¾ð¾îÀÇ Æ¯¼ºÀ» µÞ¹ÞħÇÏ´Â °í¼öÁØ °³³äÀ» ¼³¸íÇϸ鼵µ µ¶Àڵ鿡°Ô ÇÊ¿äÇÑ ¸¸Å °¢ Ư¼ºÀÇ ¼¼ºÎ »çÇ×À» Á¦½ÃÇÑ´Ù. ³ª´Â µ¶ÀÚ ¿©·¯ºÐÀÌ ÀÌ Ã¥À» ÀÐÀ¸¸é¼ ÄÚÆ²¸°°ú ÇÔ²² Áñ°Å¿î ½Ã°£À» º¸³»±â ¹Ù¶õ´Ù. ³»°¡ Á¾Á¾ ÄÚÆ²¸° Ä¿¹Â´ÏƼ¿¡ Æ÷½ºÆÃÇÏ¸é¼ ¾²´Â Àλ縻·Î ÃßõÀÇ ±ÛÀ» ¸¶Ä£´Ù. ÄÚÆ²¸°°ú ÇÔ²² ÁÁÀº ½Ã°£ µÇ¼¼¿ä! ¾Èµå·¹ÀÌ ºê·¹½º¶óÇÁ Á¨ºê·¹ÀÎ ÄÚÆ²¸° ¸®µå µðÀÚÀÌ³Ê ¡Ú ÀÌ Ã¥ÀÇ ´ë»ó µ¶ÀÚ ¡Ú ¾î´À Á¤µµ ÀÚ¹Ù °æÇèÀÌ ÀÖ´Â °³¹ßÀÚ¸¦ ÁÖ¿ä ´ë»óÀ¸·Î ÇÑ´Ù. ÄÚÆ²¸°Àº ÀÚ¹Ù¿¡ ÀÖ´Â ¿©·¯ °³³ä°ú ±â¹ý À§¿¡ ¸¸µé¾îÁ³°í, ÀÌ Ã¥Àº µ¶ÀÚµéÀÌ ÄÚÆ²¸°À» ºü¸£°Ô ¹è¿ï ¼ö ÀÖµµ·Ï µ¶ÀÚµéÀÇ ±âÁ¸ Áö½ÄÀ» Ȱ¿ëÇÑ´Ù. ÀÚ¹Ù¸¦ ¹è¿î Áö ¾ó¸¶ µÇÁö ¾Ê¾Ò°Å³ª C#À̳ª ÀÚ¹Ù ½ºÅ©¸³Æ®¿Í °°Àº ´Ù¸¥ ¾ð¾î¿¡ ´ëÇÑ °æÇèÀº ÀÖÁö¸¸ ÀÚ¹Ù¸¦ Àß ¸ð¸£´Â µ¶ÀÚµéÀº ÄÚÆ²¸°°ú JVMÀÇ »óÈ£ÀÛ¿ëÀÇ º¹ÀâÇÑ Ãø¸éÀ» ÀÌÇØÇϱâ À§ÇØ ´Ù¸¥ ÀÚ·á°¡ ÇÊ¿äÇÒ °ÍÀÌ´Ù. ÇÏÁö¸¸ ±×·± µ¶ÀÚ¶óµµ ¿©ÀüÈ÷ ÀÌ Ã¥À» »ç¿ëÇØ ÄÚÆ²¸°À» ¹è¿ï ¼ö ÀÖ´Ù. ¿ì¸®´Â ÄÚÆ²¸° ¾ð¾î Àüü¸¦ ´Ù·ç¸ç, Ưº°È÷ ±¸Ã¼ÀûÀÎ ¿µ¿ª¿¡ ÃÊÁ¡À» ¸ÂÃßÁö´Â ¾Ê´Â´Ù. µû¶ó¼ ÀÌ Ã¥Àº ¼¹ö °³¹ßÀÚ³ª ¾Èµå·ÎÀÌµå °³¹ßÀÚ, ¶Ç´Â JVM¿¡¼ ½ÇÇàµÉ ÇÁ·ÎÁ§Æ®¸¦ ±¸ÃàÇÏ´Â ¸ðµç °³¹ßÀÚ¿¡°Ô µµ¿òÀÌ µÉ °ÍÀÌ´Ù. ¡Ú ÀÌ Ã¥ÀÇ ±¸¼º ¡Ú
ÀÌ Ã¥Àº 2ºÎ·Î ±¸¼ºÇß°í, 1ºÎ¿¡¼´Â ÄÚÆ²¸°À» ±âÁ¸ ¶óÀ̺귯¸®³ª API¿Í ÇÔ²² »ç¿ëÇÏ´Â ¹æ¹ýÀ» ¼³¸íÇÑ´Ù.
1ºÎ´Â ÄÚÆ²¸°À» ±âÁ¸ ¶óÀ̺귯¸®³ª API¿Í ÇÔ²² »ç¿ëÇÏ´Â ¹æ¹ýÀ» ¼³¸íÇÑ´Ù. 1ÀåÀº ÄÚÆ²¸°ÀÇ ÇÙ½É ¸ñÇ¥, °¡Ä¡, Àû¿ë ¿µ¿ª¿¡ ´ëÇØ ¾Ë·ÁÁØ´Ù. ¶ÇÇÑ ÄÚÆ²¸° Äڵ带 ½ÇÇàÇÏ´Â ¿©·¯ °¡Áö ¹æ¹ýÀ» º¸¿©ÁØ´Ù. 2ÀåÀº ¸ðµç ÄÚÆ²¸° ÇÁ·Î±×·¥ÀÇ ÇÙ½É ¿ä¼ÒÀÎ Á¦¾î ±¸Á¶, º¯¼ö, ÇÔ¼ö ¼±¾ð µîÀ» ¼³¸íÇÑ´Ù. 3ÀåÀº ÄÚÆ²¸°¿¡¼ ÇÔ¼ö¸¦ Á¤ÀÇÇÏ´Â ¹æ¹ýÀ» ÀÚ¼¼È÷ ´Ù·ç°í, È®Àå ÇÔ¼ö(extension function)¿Í ÇÁ·ÎÆÛƼ(property) °³³äÀ» ¼Ò°³ÇÑ´Ù. 4ÀåÀº Ŭ·¡½º ¼±¾ð¿¡ ÃÊÁ¡À» ¸ÂÃç ¼³¸íÇϰí, µ¥ÀÌÅÍ Å¬·¡½º(data class)¿Í µ¿¹Ý °´Ã¼(companion object)¿¡ ´ëÇØ ´Ù·é´Ù. 5ÀåÀº ÄÚÆ²¸° ¶÷´Ù(lambda) »ç¿ë¹ýÀ» ¼³¸íÇÏ°í ¶÷´Ù¸¦ »ç¿ëÇÏ´Â ÄÚÆ²¸° Ç¥ÁØ ¶óÀ̺귯¸® ÇÔ¼ö¸¦ ¸î °¡Áö º¸¿©ÁØ´Ù. 6ÀåÀº ÄÚÆ²¸° ŸÀÔ ½Ã½ºÅÛ¿¡ ´ëÇØ ´Ù·é´Ù. ƯÈ÷ ³Î °¡´É¼º(nullability)°ú Ä÷º¼Ç¿¡ ÃÊÁ¡À» ¸ÂÃç ¼³¸íÇÑ´Ù.
2ºÎ´Â ¿©·¯ºÐ ÀÚ½ÅÀÌ ÄÚÆ²¸°À» Ȱ¿ëÇØ API¸¦ ¼±¾ðÇϰí Ãß»óȸ¦ Á¤ÀÇÇÏ´Â ¹æ¹ýÀ» ¾Ë·ÁÁÖ°í, ÄÚÆ²¸° ¾ð¾îÀÇ ´õ ±íÀº Ư¼ºÀ» ´Ù·é´Ù. 7ÀåÀº °ü·Ê(convention)¶ó´Â ¿ø¸®¸¦ ¼³¸íÇÑ´Ù. °ü·Ê´Â ¹Ì¸® Á¤ÇØÁø À̸§ÀÎ ÇÔ¼ö³ª ÇÁ·ÎÆÛƼ¿¡ Ưº°ÇÑ Àǹ̸¦ ºÎ¿©ÇÑ´Ù. ¶ÇÇÑ À§ÀÓ ÇÁ·ÎÆÛƼ(delegated property)¶ó´Â °³³äÀ» ¼Ò°³ÇÑ´Ù. 8ÀåÀº ÇÔ¼ö¸¦ ÆÄ¶ó¹ÌÅÍ·Î ¹Þ°Å³ª ÇÔ¼ö¸¦ ¹ÝȯÇÏ´Â ÇÔ¼öÀÎ °íÂ÷ ÇÔ¼ö¸¦ ¼±¾ðÇÏ´Â ¹æ¹ýÀ» ¼³¸íÇÑ´Ù. ¶ÇÇÑ ÀζóÀÎ ÇÔ¼ö °³³äÀ» ¼Ò°³ÇÑ´Ù. 9ÀåÀº ÄÚÆ²¸° Á¦³×¸¯½º °³³äÀ» ÀÚ¼¼È÷ ´Ù·é´Ù. ¸ÕÀú ±âº» ¹®¹ýÀ» ¼³¸íÇÏ°í ½ÇüÈÇÑ(reified) ŸÀÔ ÆÄ¶ó¹ÌÅͳª ŸÀÔ º¯¼º(type variance)°ú °°Àº ´õ ¾î·Á¿î ÁÖÁ¦¸¦ ¼³¸íÇÑ´Ù. 10ÀåÀº Á¦ÀÌ۵å(JKid)¶ó´Â ½ÇÀü¿¡ °¡´ÉÇÑ ÀÛÀº JSON Á÷·ÄÈ ¶óÀ̺귯¸®¸¦ ÅëÇØ ¾Ö³ëÅ×À̼ǰú ¸®Ç÷º¼Ç »ç¿ë¹ýÀ» ´Ù·é´Ù. 11ÀåÀº ¿µ¿ª Æ¯È ¾ð¾î DSL °³³äÀ» ¼Ò°³Çϰí, ÄÚÆ²¸°ÀÇ DSL Áö¿ø ±â´ÉÀ» ¼³¸íÇϸç, ¿©·¯ DSL¿¹Á¦¸¦ »ìÆìº»´Ù.
¶ÇÇÑ 4°³ÀÇ ºÎ·ÏÀÌ ÀÖ´Ù. ºÎ·Ï A´Â ±×·¹À̵é(Gradle), ¸ÞÀ̺ì(Maven), ¾ØÆ®(Ant)¿¡¼ ÄÚÆ²¸° Äڵ带 ºôµåÇÏ´Â ¹æ¹ýÀ» ¼³¸íÇÑ´Ù. ºÎ·Ï B´Â ÄÚÆ²¸° ¸ðµâ¿¡ ´ëÇØ ¹®¼È ÁÖ¼®À» »ç¿ëÇÏ´Â ¹æ¹ý°ú API ¹®¼¸¦ »ý¼ºÇÏ´Â ¹æ¹ýÀ» ¾Ë·ÁÁØ´Ù. ºÎ·Ï C´Â ÄÚÆ²¸° ¿¡ÄڽýºÅÛ¿¡ ÀÖ´Â ¿©·¯ ¶óÀ̺귯¸®³ª ÇÁ·¹ÀÓ¿öÅ©¸¦ ¼Ò°³Çϰí ÃֽŠÁ¤º¸¸¦ ¿Â¶óÀο¡¼ ¾ò´Â ¹æ¹ýÀ» ¾Ë·ÁÁØ´Ù. ºÎ·Ï D¿Í E´Â Çѱ¹¾îÆÇ¿¡¸¸ Ãß°¡ÇÑ °ÍÀ¸·Î ÄÚÆ²¸° 1.1ºÎÅÍ 1.3(2018³â 10¿ù ¸±¸®½º)±îÁö º¯È¸¦ °£·«È÷ Á¤¸®Çϰí, ÄÚ·çÆ¾¿¡ ´ëÇØ ¼Ò°³ÇÑ´Ù. ÀÌ Ã¥Àº Àüü¸¦ Â÷·Ê´ë·Î ÀÐÀ» ¶§ °¡Àå È¿°ú°¡ ÁÁ´Ù. ÇÏÁö¸¸ °ü½É ºÐ¾ß¸¦ ´Ù·ç´Â ÀåÀ» ã¾Æ¼ Àаųª Àß ¸ð¸£´Â °³³äÀ» ¸¶ÁÖÄ¥ ¶§ »öÀÎÀ» ÅëÇØ ÇÊ¿äÇÑ ºÎºÐÀ» ã¾Æº¸¸é¼ ÀÌ Ã¥À» Ȱ¿ëÇÏ´Â °Íµµ ÁÁ´Ù.
¡Ú ÁöÀºÀÌÀÇ ¸» ¡Ú ÄÚÆ²¸°(Kotlin) ¾ð¾î¿¡ ´ëÇÑ ¾ÆÀ̵ð¾î´Â 2010³â Á¬ºê·¹Àνº(JetBrains)¿¡¼ »ý°å´Ù. ±× ½ÃÀý Á¬ºê·¹Àνº´Â ÀÚ¹Ù(Java), ÀÚ¹Ù½ºÅ©¸³Æ®(Javascript), C#, ÆÄÀ̽ã(Python), ·çºñ(Ruby) µîÀÇ ´Ù¾çÇÑ PHP ¾ð¾î¿¡ ´ëÇÑ °³¹ß µµ±¸¸¦ Á¦°øÇÏ´Â ³Î¸® ¾Ë·ÁÁø ²Ï ¼º°øÀûÀΠȸ»ç¿´´Ù. Á¬ºê·¹ÀνºÀÇ ´ëÇ¥ Á¦Ç°ÀÎ ÀÚ¹Ù IDE ÀÎÅÚ¸®J ¾ÆÀ̵ð¾î(IntelliJ IDEA)¿¡´Â ½ºÄ®¶ó(Scala)¿Í ±×·çºñ(Groovy) °³¹ßÀ» µ½´Â Ç÷¯±×Àεµ µé¾îÀÖ¾ú´Ù. ÀÌ·¸°Ô ´Ù¾çÇÑ ¾ð¾î¿¡ ´ëÇØ µµ±¸¸¦ °³¹ßÇØ¿Â °æÇèÀ¸·Î ÀÎÇØ ¿ì¸®´Â ÇÁ·Î±×·¡¹Ö ¾ð¾î¶ó´Â ¿µ¿ªÀ» ÀüüÀûÀ¸·Î Á¶¸ÁÇÒ ¼ö ÀÖ´Â µ¶Æ¯ÇÑ ½Ã¾ß¿Í ÀÌÇØ¸¦ °¡Áú ¼ö ÀÖ¾ú´Ù. ±×¸®°í ÀÎÅÚ¸® J ¸¦ Ç÷§ÆûÀ¸·Î ÇÏ´Â IDEµéÀº ÀÎÅÚ¸®J ¾ÆÀ̵ð¾î ÀÚü¸¦ Æ÷ÇÔÇØ ¸ðµÎ ÀÚ¹Ù·Î °³¹ßµÇ°í ÀÖ¾ú´Ù. ¿ì¸®´Â ¸ð´øÇÏ°í °·ÂÇÏ¸ç ºü¸£°Ô ÁøÈÇÏ´Â ¾ð¾îÀÎ C#À¸·Î °³¹ßÀ» ÁøÇàÇÏ´Â ´å³Ý(.Net) ÆÀÀÇ µ¿·áµéÀÌ ³Ê¹« ºÎ·¯¿ü´Ù. ÇÏÁö¸¸ ¿ì¸®´Â ÀÚ¹Ù¸¦ ´ë½ÅÇÒ ¸¸ÇÑ ¾ð¾î¸¦ ãÀ» ¼ö ¾ø¾ú´Ù. ¿ì¸®°¡ ÀÚ¹Ù¸¦ ´ë½ÅÇÒ ¾ð¾î¿¡ ´ëÇØ ¾î¶² ¿ä±¸ »çÇ×À» °®°í ÀÖ¾úÀ»±î? óÀ½ÀÌÀÚ °¡Àå ºÐ¸íÇÑ ¿ä±¸ »çÇ×Àº Á¤Àû ŸÀÔ ÁöÁ¤(static typing)À̾ú´Ù. Á¤Àû ŸÀÔ ÁöÁ¤ ¿Ü¿¡ ¼ö¹é¸¸ ÁÙÀ̳ª µÇ´Â ÄÚµå º£À̽º¸¦ ¹ÌÄ¡Áö ¾Ê°í °³¹ßÇÒ ¼ö ÀÖ´Â ´Ù¸¥ ¹æ¹ýÀº ¾ø´Ù. µÑ°·Î ±âÁ¸ ÀÚ¹Ù ÄÚµå¿Í ¿ÏÀüÈ÷ ȣȯµÇ´Â ¾ð¾î°¡ ÇÊ¿äÇß´Ù. ±âÁ¸ Äڵ庣À̽º´Â Á¨ºê·¹ÀÎÀÇ ¾öû³ª°Ô ±ÍÁßÇÑ ÀÚ»êÀÌ¸ç »óÈ£¿î¿ë¼ºÀÌ ºÎÁ·Çؼ ±×·± ÀÚ»êÀ» ÀÒ¾î¹ö¸®°Å³ª ÀÚ»êÀÇ °¡Ä¡°¡ ÁÙ¾îµå´Â ÀÏÀ» ¿ë³³ÇÒ ¼ö´Â ¾ø¾ú´Ù. ¼Â°·Î ±× ¾ð¾î¸¦ À§ÇÑ µµ±¸ °³¹ßÀÌ ½¬¿ö¾ß¸¸ Çß´Ù. ¿ì¸®´Â µµ±¸ Á¦°ø °¡´É¼ºÀ» ŸÇùÇÏ°í ½ÍÁö ¾Ê¾Ò´Ù. ȸ»ç·Î¼ Á¨ºê·¹Àο¡°Ô °¡Àå Áß¿äÇÑ °¡Ä¡´Â °³¹ß »ý»ê¼ºÀÌ¸ç ³ôÀº »ý»ê¼ºÀ» ¾ò±â À§Çؼ´Â ÈǸ¢ÇÑ µµ±¸°¡ Çʼö´Ù. ¸¶Áö¸·À¸·Î ¹è¿ì±â ½±°í ¶æÀ» ÆÄ¾ÇÇϱ⠽¬¿î ¾ð¾î°¡ ÇÊ¿äÇß´Ù. ¿ì¸® ȸ»ç ³»ºÎ¿¡ ÀÌ·¸°Ô ÃæÁ·µÇÁö ¸øÇÑ ¼ö¿ä°¡ ÀÖ´Ù´Â »ç½ÇÀ» ¹ß°ßÇÏ´ø ÁîÀ½¿¡ ¸î¸î ȸ»çµµ ¿ì¸®¿Í ºñ½ÁÇÑ Ã³Áö¿¡ ÀÖ´Ù´Â »ç½ÇÀ» ¾Ë°Ô µÆ´Ù. µû¶ó¼ Á¨ºê·¹ÀÎ ³»ºÎÀÇ ¼ö¿ä¸¦ ÃæÁ·ÇÒ ¼ö ÀÖ´Â ¼Ö·ç¼ÇÀ» ¸¸µé¸é Á¨ºê·¹ÀÎ ¹Û¿¡¼µµ ´õ ¸¹Àº »ç¿ëÀÚ¸¦ ãÀ» ¼ö ÀÖÀ¸¸®¶ó°í ¿¹»óÇÒ ¼ö ÀÖ¾ú´Ù. À̸¦ ¿°µÎ¿¡ µÎ°í ¿ì¸®´Â »õ·Î¿î ¾ð¾îÀÎ ÄÚÆ²¸°À» ¸¸µå´Â ÇÁ·ÎÁ§Æ®¸¦ ½ÃÀÛÇϱâ·Î °áÁ¤Çß´Ù. ¾ð¾î¸¦ °³¹ßÇÏ´Â °úÁ¤¿¡¼ óÀ½ÀÇ ¿¹»ó°ú ´Þ¸® °³¹ß ±â°£ÀÌ ´õ ´Ã¾î³µ°í ÄÚÆ²¸° 1.0Àº ÃÖÃÊÀÇ ÀúÀå¼Ò Ä¿¹Ô(repository commit) ÀÌÈÄ 5³âÀÌ ³Ñ´Â ½Ã°£ÀÌ Áö³ª¼ ³ª¿Ô´Ù. ÇÏÁö¸¸ ÀÌÁ¦´Â ÄÚÆ²¸°À» ¿øÇÏ´Â »ç¿ëÀÚ¸¦ ã¾Ò´Ù°í È®½ÅÇÒ ¼ö ÀÖ°í ±×·± »ç¿ëÀÚµéÀÌ ¾ÕÀ¸·Îµµ °è¼Ó ÄÚÆ²¸°À» »ç¿ëÇϸ®¶ó È®½ÅÇÑ´Ù. ÄÚÆ²¸°Àº ÄÚÆ²¸° °³¹ß ÆÀÀÌ ´ëºÎºÐ »ì°í ÀÖ´Â ·¯½Ã¾ÆÀÇ »óÆ®ÆäÅ׸£ºÎ¸£Å©(St. Petersburg) ±Ùó¿¡ ÀÖ´Â ¼¶ À̸§ÀÌ´Ù. ¼¶ À̸§À» ¾ð¾î À̸§À¸·Î ¼±ÅÃÇÏ¸é¼ ¿ì¸®´Â ÀÚ¹Ù¿Í ½Ç·Ð(Ceylon) ¾ð¾îÀÇ ÀüÅëÀ» µû¶ú´Ù. ÇÏÁö¸¸ ÀÚ¹Ù³ª ½Ç·Ð ´ë½Å Á» ´õ °íÇâ¿¡ °¡±î¿î ¼¶À» ÅÃÇϱâ·Î °áÁ¤Çß´Ù. ÄÚÆ²¸° Á¤½Ä ¹èÆ÷°¡ °¡±î¿öÁü¿¡ µû¶ó ¿ì¸®´Â ÄÚÆ²¸° ¾ð¾î¸¦ ¼³°èÇÏ´Â °úÁ¤¿¡ °ü¿©Çϰí ÄÚÆ²¸° ¾ð¾îÀÇ Æ¯¼ºÀÌ ¿Ö ÇöÀçÀÇ ¸ð½ÀÀÌ µÇ¾ú´ÂÁö¿¡ ´ëÇØ ÀڽŠÀÖ°Ô ¼³¸íÇÒ ¼ö ÀÖ´Â »ç¶÷µéÀÌ ¾´ Ã¥ÀÌ ÇÑ ±Ç ÀÖ´Ù¸é »ç¶÷µé¿¡°Ô ¸¹Àº µµ¿òÀÌ µÇ¸®¶ó »ý°¢Çß´Ù. ÀÌ Ã¥Àº ±×·± ³ë·ÂÀÇ ÀÏȯÀÌ¸ç µ¶ÀÚ ¿©·¯ºÐÀÌ ÀÌ Ã¥À» ÅëÇØ ÄÚÆ²¸° ¾ð¾î¸¦ ´õ Àß ¹è¿ì°í ÀÌÇØÇϱ⸦ ¹Ù¶õ´Ù. ¿©·¯ºÐÀÇ Çà¿î°ú ¿©·¯ºÐÀÌ Ç×»ó Áñ°Ì°Ô °³¹ß¿¡ ¸ÅÁøÇÒ ¼ö Àֱ⸦ ºó´Ù!
|
 |
|
 |
1Àå. ÄÚÆ²¸°À̶õ ¹«¾ùÀ̸ç, ¿Ö ÇÊ¿äÇѰ¡?
__1.1 ÄÚÆ²¸° ¸Àº¸±â __1.2 ÄÚÆ²¸°ÀÇ ÁÖ¿ä Æ¯¼º ____1.2.1 ´ë»ó Ç÷§Æû: ¼¹ö, ¾Èµå·ÎÀÌµå µî ÀÚ¹Ù°¡ ½ÇÇàµÇ´Â ¸ðµç °÷ ____1.2.2 Á¤Àû ŸÀÔ ÁöÁ¤ ¾ð¾î ____1.2.3 ÇÔ¼öÇü ÇÁ·Î±×·¡¹Ö°ú °´Ã¼ÁöÇâ ÇÁ·Î±×·¡¹Ö ____1.2.4 ¹«·á ¿ÀǼҽº __1.3 ÄÚÆ²¸° ÀÀ¿ë ____1.3.1 ÄÚÆ²¸° ¼¹ö ÇÁ·Î±×·¡¹Ö ____1.3.2 ÄÚÆ²¸° ¾Èµå·ÎÀ̵å ÇÁ·Î±×·¡¹Ö __1.4 ÄÚÆ²¸°ÀÇ Ã¶ÇÐ ____1.4.1½Ç¿ë¼º ____1.4.2°£°á¼º ____1.4.3 ¾ÈÀü¼º ____1.4.4 »óÈ£¿î¿ë¼º __1.5 ÄÚÆ²¸° µµ±¸ »ç¿ë ____1.5.1 ÄÚÆ²¸° ÄÚµå ÄÄÆÄÀÏ ____1.5.2 ÀÎÅÚ¸®J ¾ÆÀ̵ð¾î¿Í ¾Èµå·ÎÀÌµå ½ºÆ©µð¿ÀÀÇ ÄÚÆ²¸° Ç÷¯±×ÀÎ ____1.5.3 ´ëÈÇü ¼Ð ____1.5.4 ÀÌŬ¸³½º Ç÷¯±×ÀÎ ____1.5.5 ¿Â¶óÀÎ ³îÀÌÅÍ ____1.5.6 ÀÚ¹Ù-ÄÚÆ²¸° º¯È¯±â __1.6¿ä¾à
2Àå. ÄÚÆ²¸° ±âÃÊ
__2.1 ±âº» ¿ä¼Ò: ÇÔ¼ö¿Í º¯¼ö ____2.1.1 Hello, World! ____2.1.2 ÇÔ¼ö ____2.1.3 º¯¼ö ____2.1.4 ´õ ½±°Ô ¹®ÀÚ¿ Çü½Ä ÁöÁ¤: ¹®ÀÚ¿ ÅÛÇø´ __2.2 Ŭ·¡½º¿Í ÇÁ·ÎÆÛƼ ____2.2.1 ÇÁ·ÎÆÛƼ ____2.2.2 Ä¿½ºÅÒ Á¢±ÙÀÚ ____2.2.3 ÄÚÆ²¸° ¼Ò½ºÄÚµå ±¸Á¶: µð·ºÅ͸®¿Í ÆÐŰÁö __2.3 ¼±ÅÃÀÇ Ç¥Çö°ú ó¸®: enum°ú when ____2.3.1 enum Ŭ·¡½º Á¤ÀÇ ____2.3.2 whenÀ¸·Î enum Ŭ·¡½º ´Ù·ç±â ____2.3.3 when°ú ÀÓÀÇÀÇ °´Ã¼¸¦ ÇÔ²² »ç¿ë ____2.3.4 ÀÎÀÚ ¾ø´Â when »ç¿ë ____2.3.5 ½º¸¶Æ® ij½ºÆ®: ŸÀÔ °Ë»ç¿Í ŸÀÔ Ä³½ºÆ®¸¦ Á¶ÇÕ ____2.3.6 ¸®ÆÑÅ丵: if¸¦ whenÀ¸·Î º¯°æ ____2.3.7 if¿Í whenÀÇ ºÐ±â¿¡¼ ºí·Ï »ç¿ë __2.4 ´ë»óÀ» ÀÌÅÍ·¹À̼Ç: while°ú for ·çÇÁ ____2.4.1 while ·çÇÁ ____2.4.2 ¼ýÀÚ¿¡ ´ëÇÑ ÀÌÅÍ·¹À̼Ç: ¹üÀ§¿Í ¼ö¿ ____2.4.3 ¸Ê¿¡ ´ëÇÑ ÀÌÅÍ·¹ÀÌ¼Ç ____2.4.4 inÀ¸·Î Ä÷º¼ÇÀ̳ª ¹üÀ§ÀÇ ¿ø¼Ò °Ë»ç __2.5 ÄÚÆ²¸°ÀÇ ¿¹¿Ü ó¸® ____2.5.1 try, catch, finally ____2.5.2 try¸¦ ½ÄÀ¸·Î »ç¿ë __2.6 ¿ä¾à
3Àå. ÇÔ¼ö Á¤ÀÇ¿Í È£Ãâ
__3.1 ÄÚÆ²¸°¿¡¼ Ä÷º¼Ç ¸¸µé±â __3.2 ÇÔ¼ö¸¦ È£ÃâÇϱ⠽±°Ô ¸¸µé±â ____3.2.1 À̸§ ºÙÀÎ ÀÎÀÚ ____3.2.2 µðÆúÆ® ÆÄ¶ó¹ÌÅÍ °ª ____3.2.3 Á¤ÀûÀÎ À¯Æ¿¸®Æ¼ Ŭ·¡½º ¾ø¾Ö±â: ÃÖ»óÀ§ ÇÔ¼ö¿Í ÇÁ·ÎÆÛƼ ____3.3 ¸Þ¼Òµå¸¦ ´Ù¸¥ Ŭ·¡½º¿¡ Ãß°¡: È®Àå ÇÔ¼ö¿Í È®Àå ÇÁ·ÎÆÛƼ ____3.3.1 ÀÓÆ÷Æ®¿Í È®Àå ÇÔ¼ö ____3.3.2 ÀÚ¹Ù¿¡¼ È®Àå ÇÔ¼ö È£Ãâ ____3.3.3 È®Àå ÇÔ¼ö·Î À¯Æ¿¸®Æ¼ ÇÔ¼ö Á¤ÀÇ ____3.3.4 È®Àå ÇÔ¼ö´Â ¿À¹ö¶óÀ̵å ÇÒ ¼ö ¾ø´Ù ____3.3.5 È®Àå ÇÁ·ÎÆÛƼ __3.4 Ä÷º¼Ç ó¸®: °¡º¯ ±æÀÌ ÀÎÀÚ, ÁßÀ§ ÇÔ¼ö È£Ãâ, ¶óÀ̺귯¸® Áö¿ø ____3.4.1 ÀÚ¹Ù Ä÷º¼Ç API È®Àå ____3.4.2 °¡º¯ÀÎÀÚ ÇÔ¼ö: ÀÎÀÚÀÇ °³¼ö°¡ ´Þ¶óÁú ¼ö ÀÖ´Â ÇÔ¼ö Á¤ÀÇ ____3.4.3 °ªÀÇ ½Ö ´Ù·ç±â: ÁßÀ§ È£Ãâ°ú ±¸Á¶ ºÐÇØ ¼±¾ð __3.5 ¹®ÀÚ¿°ú Á¤±Ô½Ä ´Ù·ç±â ____3.5.1 ¹®ÀÚ¿ ³ª´©±â ____3.5.2 Á¤±Ô½Ä°ú 3Áß µû¿ÈÇ¥·Î ¹Àº ¹®ÀÚ¿ ____3.5.3 ¿©·¯ ÁÙ 3Áß µû¿ÈÇ¥ ¹®ÀÚ¿ __3.6 ÄÚµå ´Ùµë±â: ·ÎÄà ÇÔ¼ö¿Í È®Àå __3.7 ¿ä¾à
4Àå. Ŭ·¡½º, °´Ã¼, ÀÎÅÍÆäÀ̽º
__4.1 Ŭ·¡½º °èÃþ Á¤ÀÇ ____4.1.2 ÄÚÆ²¸° ÀÎÅÍÆäÀ̽º ____4.1.2 open, final, abstract º¯°æÀÚ: ±âº»ÀûÀ¸·Î final ____4.1.3 °¡½Ã¼º º¯°æÀÚ: ±âº»ÀûÀ¸·Î °ø°³ ____4.1.4 ³»ºÎ Ŭ·¡½º¿Í ÁßøµÈ Ŭ·¡½º: ±âº»ÀûÀ¸·Î Áßø Ŭ·¡½º ____4.1.5 ºÀÀÎµÈ Å¬·¡½º: Ŭ·¡½º °èÃþ Á¤ÀÇ ½Ã °èÃþ È®Àå Á¦ÇÑ __4.2 »·ÇÏÁö ¾ÊÀº »ý¼ºÀÚ¿Í ÇÁ·ÎÆÛƼ¸¦ °®´Â Ŭ·¡½º ¼±¾ð ____4.2.1 Ŭ·¡½º ÃʱâÈ: ÁÖ »ý¼ºÀÚ¿Í ÃʱâÈ ºí·Ï ____4.2.2 ºÎ »ý¼ºÀÚ: »óÀ§ Ŭ·¡½º¸¦ ´Ù¸¥ ¹æ½ÄÀ¸·Î ÃʱâÈ ____4.2.3 ÀÎÅÍÆäÀ̽º¿¡ ¼±¾ðµÈ ÇÁ·ÎÆÛƼ ±¸Çö ____4.2.4 °ÔÅÍ¿Í ¼¼ÅÍ¿¡¼ µÞ¹ÞħÇÏ´Â Çʵ忡 Á¢±Ù ____4.2.5 Á¢±ÙÀÚÀÇ °¡½Ã¼º º¯°æ __4.3 ÄÄÆÄÀÏ·¯°¡ »ý¼ºÇÑ ¸Þ¼Òµå: µ¥ÀÌÅÍ Å¬·¡½º¿Í Ŭ·¡½º À§ÀÓ ____4.3.1 ¸ðµç Ŭ·¡½º°¡ Á¤ÀÇÇØ¾ß ÇÏ´Â ¸Þ¼Òµå ____4.3.2 µ¥ÀÌÅÍ Å¬·¡½º: ¸ðµç Ŭ·¡½º°¡ Á¤ÀÇÇØ¾ß ÇÏ´Â ¸Þ¼Òµå ÀÚµ¿ »ý¼º ____4.3.3 Ŭ·¡½º À§ÀÓ: by Ű¿öµå »ç¿ë __4.4 object Ű¿öµå: Ŭ·¡½º ¼±¾ð°ú ÀνºÅϽº »ý¼º ____4.4.1 °´Ã¼ ¼±¾ð: ½Ì±ÛÅÏÀ» ½±°Ô ¸¸µé±â ____4.4.2 µ¿¹Ý °´Ã¼: ÆÑÅ͸® ¸Þ¼Òµå¿Í Á¤Àû ¸â¹ö°¡ µé¾î°¥ Àå¼Ò ____4.4.3 µ¿¹Ý °´Ã¼¸¦ ÀÏ¹Ý °´Ã¼Ã³·³ »ç¿ë ____4.4.4 °´Ã¼ ½Ä: ÀÍ¸í ³»ºÎ Ŭ·¡½º¸¦ ´Ù¸¥ ¹æ½ÄÀ¸·Î ÀÛ¼º __4.5 ¿ä¾à
5Àå. ¶÷´Ù·Î ÇÁ·Î±×·¡¹Ö __5.1 ¶÷´Ù ½Ä°ú ¸â¹ö ÂüÁ¶ ____5.1.1 ¶÷´Ù ¼Ò°³: ÄÚµå ºí·ÏÀ» ÇÔ¼ö ÀÎÀÚ·Î ³Ñ±â±â ____5.1.2 ¶÷´Ù¿Í Ä÷º¼Ç ____5.1.3 ¶÷´Ù ½ÄÀÇ ¹®¹ý ____5.1.4 ÇöÀç ¿µ¿ª¿¡ ÀÖ´Â º¯¼ö¿¡ Á¢±Ù ____5.1.5 ¸â¹ö ÂüÁ¶ __5.2 Ä÷º¼Ç ÇÔ¼öÇü API ____5.2.1 ÇʼöÀûÀÎ ÇÔ¼ö: filter¿Í map ____5.2.2 all, any, count, find: Ä÷º¼Ç¿¡ ¼ú¾î Àû¿ë ____5.2.3 groupBy: ¸®½ºÆ®¸¦ ¿©·¯ ±×·ìÀ¸·Î ÀÌ·ïÁø ¸ÊÀ¸·Î º¯°æ ____5.2.4 flatMap°ú flatten: ÁßøµÈ Ä÷º¼Ç ¾ÈÀÇ ¿ø¼Ò ó¸® __5.3 Áö¿¬ °è»ê lazy Ä÷º¼Ç ¿¬»ê ____5.3.1 ½ÃÄö½º ¿¬»ê ½ÇÇà: Áß°£ ¿¬»ê°ú ÃÖÁ¾ ¿¬»ê ____5.3.2 ½ÃÄö½º ¸¸µé±â __5.4 ÀÚ¹Ù ÇÔ¼öÇü ÀÎÅÍÆäÀ̽º Ȱ¿ë ____5.4.1 ÀÚ¹Ù ¸Þ¼Òµå¿¡ ¶÷´Ù¸¦ ÀÎÀÚ·Î Àü´Þ ____5.4.2 SAM »ý¼ºÀÚ: ¶÷´Ù¸¦ ÇÔ¼öÇü ÀÎÅÍÆäÀ̽º·Î ¸í½ÃÀûÀ¸·Î º¯°æ __5.5 ¼ö½Å °´Ã¼ ÁöÁ¤ ¶÷´Ù: with¿Í apply ____5.5.1 withÇÔ¼ö ____5.5.2 applyÇÔ¼ö __5.6 ¿ä¾à
6Àå. ÄÚÆ²¸° ŸÀÔ ½Ã½ºÅÛ
__6.1 ³Î °¡´É¼º ____6.1.1 ³ÎÀÌ µÉ ¼ö Àִ ŸÀÔ ____6.1.2 ŸÀÔÀÇ ÀÇ¹Ì ____6.1.3 ¾ÈÀüÇÑ È£Ãâ ¿¬»êÀÚ: "?." ____6.1.4 ¿¤ºñ½º ¿¬»êÀÚ "?:" ____6.1.5 ¾ÈÀüÇÑ Ä³½ºÆ®: as? ____6.1.6 ³Î ¾Æ´Ô ´Ü¾ð: !! ____6.1.7 letÇÔ¼ö ____6.1.8 ³ªÁß¿¡ ÃʱâÈÇÒ ÇÁ·ÎÆÛƼ ____6.1.9 ³ÎÀÌ µÉ ¼ö Àִ ŸÀÔ È®Àå ____6.1.10 ŸÀÔ ÆÄ¶ó¹ÌÅÍÀÇ ³Î °¡´É¼º ____6.1.11 ³Î °¡´É¼º°ú ÀÚ¹Ù __6.2 ÄÚÆ²¸°ÀÇ ±âº» ŸÀÔ ____6.2.1 ±âº» ŸÀÔ: Int, Boolean µî ____6.2.2 ³ÎÀÌ µÉ ¼ö ÀÖ´Â ±âº» ŸÀÔ: Int?, Boolean? µî ____6.2.3 ¼ýÀÚ º¯È¯ ____6.2.4 Any, Any?: ÃÖ»óÀ§ ŸÀÔ ____6.2.5 Unit ŸÀÔ: ÄÚÆ²¸°ÀÇ void ____6.2.6 Nothing ŸÀÔ: ¡°ÀÌ ÇÔ¼ö´Â °áÄÚ Á¤»óÀûÀ¸·Î ³¡³ªÁö ¾Ê´Â´Ù.¡± __6.3 Ä÷º¼Ç°ú ¹è¿ ____6.3.1 ³Î °¡´É¼º°ú Ä÷º¼Ç ____6.3.2 Àбâ Àü¿ë°ú º¯°æ °¡´ÉÇÑ Ä÷º¼Ç ____6.3.3 ÄÚÆ²¸° Ä÷º¼Ç°ú ÀÚ¹Ù ____6.3.4 Ä÷º¼ÇÀ» Ç÷§Æû ŸÀÔÀ¸·Î ´Ù·ç±â ____6.3.5 °´Ã¼ÀÇ ¹è¿°ú ±âº» ŸÀÔÀÇ ¹è¿ __6.4¿ä¾à
2ºÎ. ÄÚÆ²¸°´ä°Ô »ç¿ëÇϱâ
7Àå. ¿¬»êÀÚ ¿À¹ö·Îµù°ú ±âŸ °ü·Ê
__7.1 »ê¼ú ¿¬»êÀÚ ¿À¹ö·Îµå ____7.1.1 ÀÌÇ× »ê¼ú ¿¬»ê ¿À¹ö·Îµù ____7.1.2 º¹ÇÕ ´ëÀÔ ¿¬»êÀÚ ¿À¹ö·Îµù ____7.1.3 ´ÜÇ× ¿¬»êÀÚ ¿À¹ö·Îµù __7.2 ºñ±³ ¿¬»êÀÚ ¿À¹ö·Îµù ____7.2.1 µ¿µî¼º ¿¬»êÀÚ: "equals" ____7.2.2 ¼ø¼ ¿¬»êÀÚ: compareTo ____7.3 Ä÷º¼Ç°ú ¹üÀ§¿¡ ´ëÇØ ¾µ ¼ö ÀÖ´Â °ü·Ê ____7.3.1 À妽º·Î ¿ø¼Ò¿¡ Á¢±Ù: get°ú set __7.3.3 in°ü·Ê ____7.3.3 rangeTo°ü·Ê ____7.3.4 for ·çÇÁ¸¦ À§ÇÑ iterator °ü·Ê __7.4 ±¸Á¶ ºÐÇØ ¼±¾ð°ú component ÇÔ¼ö ____7.4.1 ±¸Á¶ ºÐÇØ ¼±¾ð°ú ·çÇÁ __7.5 ÇÁ·ÎÆÛƼ Á¢±ÙÀÚ ·ÎÁ÷ ÀçȰ¿ë: À§ÀÓ ÇÁ·ÎÆÛƼ ____7.5.1 À§ÀÓ ÇÁ·ÎÆÛƼ ¼Ò°³ ____7.5.2 À§ÀÓ ÇÁ·ÎÆÛƼ »ç¿ë: by lazy()¸¦ »ç¿ëÇÑ ÇÁ·ÎÆÛƼ ÃʱâÈ Áö¿¬ ____7.5.3 À§ÀÓ ÇÁ·ÎÆÛƼ ±¸Çö ____7.5.4 À§ÀÓ ÇÁ·ÎÆÛƼ ÄÄÆÄÀÏ ±ÔÄ¢ ____7.5.5 ÇÁ·ÎÆÛƼ °ªÀ» ¸Ê¿¡ ÀúÀå ____7.5.6 ÇÁ·¹ÀÓ¿öÅ©¿¡¼ À§ÀÓ ÇÁ·ÎÆÛƼ Ȱ¿ë __7.6 ¿ä¾à
8Àå. °íÂ÷ ÇÔ¼ö: ÆÄ¶ó¹ÌÅÍ¿Í ¹Ýȯ °ªÀ¸·Î ¶÷´Ù »ç¿ë
__8.1 °íÂ÷ ÇÔ¼ö Á¤ÀÇ ____8.1.1 ÇÔ¼ö ŸÀÔ ____8.1.2 ÀÎÀÚ·Î ¹ÞÀº ÇÔ¼ö È£Ãâ ____8.1.3 ÀÚ¹Ù¿¡¼ ÄÚÆ²¸° ÇÔ¼ö ŸÀÔ »ç¿ë ____8.1.4 µðÆúÆ® °ªÀ» ÁöÁ¤ÇÑ ÇÔ¼ö ŸÀÔ ÆÄ¶ó¹ÌÅͳª ³ÎÀÌ µÉ ¼ö ÀÖ´Â ÇÔ¼ö ŸÀÔ ÆÄ¶ó¹ÌÅÍ ____8.1.5 ÇÔ¼ö¸¦ ÇÔ¼ö¿¡¼ ¹Ýȯ ____8.1.6 ¶÷´Ù¸¦ Ȱ¿ëÇÑ Áߺ¹ Á¦°Å __8.2 ÀζóÀÎ ÇÔ¼ö: ¶÷´ÙÀÇ ºÎ°¡ ºñ¿ë ¾ø¾Ö±â ____8.2.1 ÀζóÀÌ´×ÀÌ ÀÛµ¿ÇÏ´Â ¹æ½Ä ____8.2.2 ÀζóÀÎ ÇÔ¼öÀÇ ÇѰè ____8.2.3 Ä÷º¼Ç ¿¬»ê ÀζóÀÌ´× ____8.2.4 ÇÔ¼ö¸¦ ÀζóÀÎÀ¸·Î ¼±¾ðÇØ¾ß ÇÏ´Â °æ¿ì ____8.2.5 ÀÚ¿ø °ü¸®¸¦ À§ÇØ ÀζóÀÎµÈ ¶÷´Ù »ç¿ë __8.3 °íÂ÷ ÇÔ¼ö ¾È¿¡¼ È帧 Á¦¾î ____8.3.1 ¶÷´Ù ¾ÈÀÇ return¹®: ¶÷´Ù¸¦ µÑ·¯½Ñ ÇÔ¼ö·ÎºÎÅÍ ¹Ýȯ ____8.3.2 ¶÷´Ù·ÎºÎÅÍ ¹Ýȯ: ·¹À̺íÀ» »ç¿ëÇÑ return ____8.3.3 ¹«¸í ÇÔ¼ö: ±âº»ÀûÀ¸·Î ·ÎÄà return __8.4 ¿ä¾à
9Àå. Á¦³×¸¯½º
__9.1 Á¦³×¸¯ ŸÀÔ ÆÄ¶ó¹ÌÅÍ ____9.1.1 Á¦³×¸¯ ÇÔ¼ö¿Í ÇÁ·ÎÆÛƼ ____9.1.2 Á¦³×¸¯ Ŭ·¡½º ¼±¾ð ____9.1.3 ŸÀÔ ÆÄ¶ó¹ÌÅÍ Á¦¾à ____9.1.4 ŸÀÔ ÆÄ¶ó¹ÌÅ͸¦ ³ÎÀÌ µÉ ¼ö ¾ø´Â ŸÀÔÀ¸·Î ÇÑÁ¤ __9.2 ½ÇÇà ½Ã Á¦³×¸¯½ºÀÇ µ¿ÀÛ: ¼Ò°ÅµÈ ŸÀÔ ÆÄ¶ó¹ÌÅÍ¿Í ½ÇÃ¼ÈµÈ Å¸ÀÔ ÆÄ¶ó¹ÌÅÍ ____9.2.1 ½ÇÇà ½ÃÁ¡ÀÇ Á¦³×¸¯: ŸÀÔ °Ë»ç¿Í ij½ºÆ® ____9.2.2 ½ÇüÈÇÑ Å¸ÀÔ ÆÄ¶ó¹ÌÅ͸¦ »ç¿ëÇÑ ÇÔ¼ö ¼±¾ð ____9.2.3 ½ÇüÈÇÑ Å¸ÀÔ ÆÄ¶ó¹ÌÅͷΠŬ·¡½º ÂüÁ¶ ´ë½Å ____9.2.4 ½ÇüÈÇÑ Å¸ÀÔ ÆÄ¶ó¹ÌÅÍÀÇ Á¦¾à __9.3 º¯¼º: Á¦³×¸¯°ú ÇÏÀ§ ŸÀÔ ____9.3.1 º¯¼ºÀÌ ÀÖ´Â ÀÌÀ¯: ÀÎÀÚ¸¦ ÇÔ¼ö¿¡ ³Ñ±â±â ____9.3.2 Ŭ·¡½º, ŸÀÔ, ÇÏÀ§ ŸÀÔ ____9.3.3 °øº¯¼º: ÇÏÀ§ ŸÀÔ °ü°è¸¦ À¯Áö ____9.3.4 ¹Ý°øº¯¼º: µÚÁýÈù ÇÏÀ§ ŸÀÔ °ü°è ____9.3.5 »ç¿ë ÁöÁ¡ º¯¼º: ŸÀÔÀÌ ¾ð±ÞµÇ´Â ÁöÁ¡¿¡¼ º¯¼º ÁöÁ¤ ____9.3.6 ½ºÅ¸ ÇÁ·ÎÁ§¼Ç: ŸÀÔ ÀÎÀÚ ´ë½Å * »ç¿ë __9.4 ¿ä¾à
10Àå. ¾Ö³ëÅ×À̼ǰú ¸®Ç÷º¼Ç
__10.1 ¾Ö³ëÅ×ÀÌ¼Ç ¼±¾ð°ú Àû¿ë ____10.1.2 ¾Ö³ëÅ×ÀÌ¼Ç ´ë»ó ____10.1.3 ¾Ö³ëÅ×À̼ÇÀ» Ȱ¿ëÇÑ JSON Á÷·ÄÈ Á¦¾î ____10.1.4 ¾Ö³ëÅ×ÀÌ¼Ç ¼±¾ð ____10.1.5 ¸ÞŸ¾Ö³ëÅ×À̼Ç: ¾Ö³ëÅ×À̼ÇÀ» ó¸®ÇÏ´Â ¹æ¹ý Á¦¾î ____10.1.6 ¾Ö³ëÅ×ÀÌ¼Ç ÆÄ¶ó¹ÌÅͷΠŬ·¡½º »ç¿ë ____10.1.7 ¾Ö³ëÅ×ÀÌ¼Ç ÆÄ¶ó¹ÌÅÍ·Î Á¦³×¸¯ Ŭ·¡½º ¹Þ±â __10.2 ¸®Ç÷º¼Ç: ½ÇÇà ½ÃÁ¡¿¡ ÄÚÆ²¸° °´Ã¼ ³»ºÎ °üÂû ____10.2.1 ÄÚÆ²¸° ¸®Ç÷º¼Ç API: KClass, KCallable, KFunction, KProperty ____10.2.2 ¸®Ç÷º¼ÇÀ» »ç¿ëÇÑ °´Ã¼ Á÷·ÄÈ ±¸Çö ____10.2.3 ¾Ö³ëÅ×À̼ÇÀ» Ȱ¿ëÇÑ Á÷·ÄÈ Á¦¾î ____10.2.4 JSON ÆÄ½Ì°ú °´Ã¼ ¿ªÁ÷·ÄÈ ____10.2.5 ÃÖÁ¾ ¿ªÁ÷·ÄÈ ´Ü°è: callBy(), ¸®Ç÷º¼ÇÀ» »ç¿ëÇØ °´Ã¼ ¸¸µé±â __10.3 ¿ä¾à
11Àå. DSL ¸¸µé±â
__11.1 API¿¡¼ DSL·Î ____11.1.1 ¿µ¿ª Æ¯È ¾ð¾î¶ó´Â °³³ä ____11.1.2 ³»ºÎ DSL ____11.1.3 DSLÀÇ ±¸Á¶ ____11.1.4 ³»ºÎ DSL·Î HTML ¸¸µé±â __11.2 ±¸Á¶ÈµÈ API ±¸Ãà: DSL¿¡¼ ¼ö½Å °´Ã¼ ÁöÁ¤ DSL »ç¿ë ____11.2.1 ¼ö½Å °´Ã¼ ÁöÁ¤ ¶÷´Ù¿Í È®Àå ÇÔ¼ö ŸÀÔ ____11.2.2 ¼ö½Å °´Ã¼ ÁöÁ¤ ¶÷´Ù¸¦ HTML ºô´õ ¾È¿¡¼ »ç¿ë ____11.2.3 ÄÚÆ²¸° ºô´õ: Ãß»óÈ¿Í Àç»ç¿ëÀ» °¡´ÉÇÏ°Ô ÇÏ´Â µµ±¸ __11.3 invoke °ü·Ê¸¦ »ç¿ëÇÑ ´õ À¯¿¬ÇÑ ºí·Ï Áßø ____11.3.1 invoke °ü·Ê: ÇÔ¼öó·³ È£ÃâÇÒ ¼ö ÀÖ´Â °´Ã¼ ____11.3.2 invoke °ü·Ê¿Í ÇÔ¼öÇü ŸÀÔ ____11.3.3 DSLÀÇ invoke °ü·Ê: ±×·¹À̵鿡¼ ÀÇÁ¸°ü°è Á¤ÀÇ __11.4 ½ÇÀü ÄÚÆ²¸° DSL ____11.4.1 ÁßÀ§ È£Ãâ ¿¬¼â: Å×½ºÆ® ÇÁ·¹ÀÓ¿öÅ©ÀÇ should ____11.4.2 ±âº» ŸÀÔ¿¡ ´ëÇÑ È®Àå ÇÔ¼ö Á¤ÀÇ: ³¯Â¥ ó¸® ____11.4.3 ¸â¹ö È®Àå ÇÔ¼ö: SQLÀ» À§ÇÑ ³»ºÎ DSL ____11.4.4 ¾ÈÄÚ: ¾Èµå·ÎÀ̵å UI¸¦ µ¿ÀûÀ¸·Î »ý¼ºÇϱâ __11.5 ¿ä¾à
ºÎ·Ï A. ÄÚÆ²¸° ÇÁ·ÎÁ§Æ® ºôµå
__A.1 ±×·¹À̵é·Î ÄÚÆ²¸° ÄÚµå ºôµå __A.2 ¸ÞÀ̺ìÀ¸·Î ÄÚÆ²¸° ÇÁ·ÎÁ§Æ® ºôµå __A.3 ¾ØÆ®·Î ÄÚÆ²¸° ÄÚµå ºôµå
ºÎ·Ï B. ÄÚÆ²¸° ÄÚµå ¹®¼È
__B.1 ÄÚÆ²¸° ¹®¼È ÁÖ¼® ÀÛ¼º __B.2 API ¹®¼ »ý¼º
ºÎ·Ï C. ÄÚÆ²¸° ¿¡ÄڽýºÅÛ
__C.1 Å×½ºÆÃ __C.2 ÀÇÁ¸°ü°è ÁÖÀÔ __C.3 JSON Á÷·ÄÈ __C.4 HTTP Ŭ¶óÀÌ¾ðÆ® __C.5 À¥ ¾ÖÇø®ÄÉÀÌ¼Ç __C.6 µ¥ÀÌÅͺ£À̽º Á¢±Ù __C.7 À¯Æ¿¸®Æ¼¿Í µ¥ÀÌÅÍ ±¸Á¶ __C.8 µ¥½ºÅ©Å¾ ÇÁ·Î±×·¡¹Ö
ºÎ·Ï D. ÄÚÆ²¸° 1.1°ú 1.2, 1.3 ¼Ò°³
__D.1 ÄÚÆ²¸° 1.1 __D.2 ÄÚÆ²¸° 1.2 __D.3 ÄÚÆ²¸° 1.3
ºÎ·Ï E ÄÚ·çÆ¾°ú Async/Await 575
__E.1 ÄÚ·çÆ¾À̶õ? __E.2 ÄÚÆ²¸°ÀÇ ÄÚ·çÆ¾ Áö¿ø: ÀϹÝÀûÀÎ ÄÚ·çÆ¾ __E.3 suspend Ű¿öµå¿Í ÄÚÆ²¸°ÀÇ ÀϽà Áß´Ü ÇÔ¼ö ÄÄÆÄÀÏ ¹æ¹ý __E.4 ÄÚ·çÆ¾ ºô´õ ¸¸µé±â __E.5 °á·Ð
|
 |
|
 |
µå¹ÌÆ®¸® Á¦¸Þ·ÎÇÁ(Dmitry Jemerov) 2003³âºÎÅÍ Á¬ºê·¹Àνº¿¡¼ ÀÏÇØ ¿ÔÀ¸¸ç, ÀÎÅÚ¸®J ¾ÆÀ̵ð¾î, ÆÄÀÌÂü, À¥½ºÅè µîÀÇ ¿©·¯ Á¦Ç° °³¹ß¿¡ Âü¿©Çß´Ù. Ãʱâ ÄÚÆ²¸° ±â¿©ÀÚ Áß Çϳª·Î ÃÖÃÊ ÄÚÆ²¸° ¹ÙÀÌÆ®ÄÚµå »ý¼º±â¸¦ ¸¸µé¾úÀ¸¸ç, Àü ¼¼°è¿¡¼ ÄÚÆ²¸° °ü·Ã ¹ßÇ¥¸¦ ÁøÇàÇØ ¿Ô´Ù. ÇöÀç ÄÚÆ²¸° ÀÎÅÚ¸®J Ç÷¯±×ÀÎÀ» °³¹ßÇÏ´Â ÆÀÀ» À̲ø°í ÀÖ´Ù. ½ºº£Æ®¶ó³ª ÀÌ»çÄÚ¹Ù(Svetlana Isakova) 2011³âºÎÅÍ ÄÚÆ²¸° ÆÀÀÇ ÀÏ¿øÀ̾ú´Ù. ÄÚÆ²¸° ÄÄÆÄÀÏ·¯ÀÇ Å¸ÀÔ Ã߷аú ¿À¹ö·Îµå ÇØ°á(overload resolution) ºÎºÐÀ» °³¹ßÇß´Ù. ÇöÀç Å×Å©´ÏÄà ¿¡¹ÝÁ©¸®½ºÆ®(technical evangelist)·Î¼ °¢Á¾ ÄÜÆÛ·±½º¿¡¼ ÄÚÆ²¸°¿¡ ´ëÇØ ¾Ë¸®°í ÄÚÆ²¸° ¿Â¶óÀÎ ÄÚ½º¸¦ °³¹ßÇϰí ÀÖ´Ù. ¡Ú ¿Å±äÀÌÀÇ ¸» ¡Ú Çб³ ƯÈ÷ ´ëÇпø¿¡¼´Â ÄÄÆÄÀÏ·¯¿Í ÇÔ¼öÇü ÇÁ·Î±×·¡¹ÖÀ» ÁÖ·Î °øºÎÇßÁö¸¸ ȸ»ç¿¡ µé¾î¿Â ÈÄ ÀÚ¹Ù¿Í C, C++ °³¹ßÀ» 10¿©³â ÁøÇàÇØ ¿Ô´Ù. È£ÁÖ·Î ¿À°í ³ª¼ ½ºÄ®¶ó¸¦ Á¢Çß°í ÇÔ¼öÇü ÇÁ·Î±×·¡¹ÖÀ̶ó´Â ¸»ÀÌ ¿©·¯ ÇÁ·Î±×·¡¸Ó »çÀÌ¿¡ ȸÀڵǴ ¸ð½ÀÀ» º¸¸é¼ °Ý¼¼Áö°¨À» ´À³¢±â ½ÃÀÛÇß´Ù. ½ºÄ®¶ó¸¦ °øºÎÇÏ¸é¼ 90³â´ë ÃÊÁß¹Ý Çб³¿¡¼ °øºÎÇß´ø ³»¿ëÀ» JVM ȯ°æ¿¡ Àß ¹ö¹«¸° ½ºÄ®¶ó ¾ð¾î Ư¡À» ÁöÄѺ¸¸ç ½ºÄ®¶ó¸¦ ¼³°èÇÑ ¸¶Æ¾ ¿À´õ½ºÅ°¿¡°Ô °æÅºÇß´Ù. ½ºÄ®¶ó°¡ ÁÖ´Â °£°áÇÑ ÄÚµåÀÇ ¸Å·Â¿¡ Ç« ºüÁ® °è¼Ó °øºÎ¸¦ ÇÏ¸é¼ °íÂ÷ ÇÔ¼ö¸¦ ³Ñ¾î¼´Â ŸÀÔ ½Ã½ºÅÛÀ̳ª °í°è ŸÀÔ(higher-kinded type) µîÀ» ½ºÄ®¶ó·Î ±¸ÇöÇÑ ½ºÄ®¶ó Á¦µå³ª CAT µîÀÇ ¶óÀ̺귯¸®µµ »ìÆìºÃ´Ù. ŸÀÔÀ» Ȱ¿ëÇÑ °·ÂÇÑ Ãß»óÈ´Â ÇϽºÄÌÀ̳ª ½ºÄ®¶ó µî ÇϵåÄÚ¾î ÇÔ¼öÇü ÇÁ·Î±×·¡¹Ö ¾ð¾îÀÇ ¸¶¾à°úµµ °°Àº ÀåÁ¡À̱ä ÇÏÁö¸¸, ½Ç¹«¿¡¼ ±×·± ±â´ÉÀ¸·Î ¹ö¹«·Á µÐ Äڵ尡 ¾ó¸¶³ª À¯Áö º¸¼ö¼ºÀÌ ÀÖÀ»±î ÇÏ´Â Àǹ®ÀÌ ¸Ó¸´¼ÓÀ» ¶°³ªÁö ¾Ê¾Ò´Ù. ±â´ÉÀ» Ãß°¡ÇÏ°í ´õ °íÂ÷¿øÀûÀÎ Ãß»óȸ¦ °¡´ÉÄÉ Çϱ⺸´Ù´Â ¿ÀÈ÷·Á ±â´ÉÀ» Á¦¾àÇϰí Ãß»óÈ ¹æ¹ýÀ» Á¦ÇÑÇ쵂 Ãʺ¸ºÎÅÍ °í¼ö±îÁö ´Ù ÀÌÇØÇϱ⠽±°í À¯Áöº¸¼öÇϱ⠽¬¿î ¾ð¾î¸¦ ¸¸µé¾î¾ß ÇÏ´Â °Ô ¾Æ´Ò±î? 2014³â ¾ÖÇÃÀÌ ½ºÀ§ÇÁÆ®¸¦ ¹ßÇ¥Çϰí, ºñ½ÁÇÑ ¶§ ÄÚÆ²¸°À̶ó´Â ¾ð¾î°¡ ¿ì¿¬È÷ ½Ã¾ß¿¡ µé¾î¿Ô´Ù. µÎ ¾ð¾î´Â °¢°¢ ¿ÀºêÁ§Æ¼ºê C¿Í ÀÚ¹Ù¶ó´Â ¾ð¾î¸¦ °³¼±Çϸ鼵µ ½ºÄ®¶óó·³ ³Ê¹« Å« º¯È¸¦ Ãß±¸ÇÏÁö´Â ¾Ê´Â ½Ç¿ëÀûÀÎ Á¢±Ù ¹æ½ÄÀ» ÅÃÇÑ ¾ð¾î¶ó´Â Á¡°ú, ³Î °¡´É¼º ó¸®¿Í ¶÷´Ù ±¸¹® µî¿¡¼ ºñ½ÁÇÑ Á¡ÀÌ ¸¹¾Ò´Ù. ¾î¼¸é ½ºÄ®¶ó°¡ ÅÃÇÑ Á¢±Ù ¹æ¹ýº¸´Ù´Â ½ºÀ§ÇÁÆ®³ª ÄÚÆ²¸°ÀÌ ÅÃÇÑ Á¢±Ù ¹æ¹ýÀÌ Çö½ÇÀûÀ¸·Î Àû¿ëÇϱ⿣ ´õ ½±Áö ¾ÊÀ»±î ÇÏ´Â »ý°¢À¸·Î °ü½ÉÀ» °®°í ÄÚÆ²¸°À» ÁöÄѺôÙ. ƯÈ÷ ¾Èµå·ÎÀ̵å¶ó´Â ȯ°æÀÌ Áß¿äÇÏ°í °³¹ßÀÚµéÀÌ µû·Î °øºÎ¿¡ ÅõÀÚÇÒ ½Ã°£ÀÌ Àý´ëÀûÀ¸·Î ºÎÁ·ÇÑ Çѱ¹ÀÇ Çö½Ç¿¡¼´Â ÄÚÆ²¸°ÀÌ ´õ¿í ¾µ¸ð°¡ ÀÖÀ» °Í °°¾Ò´Ù. ±×¸®°í ÄÚÆ²¸°ÀÌ 2017³â ¾Èµå·ÎÀÌµå °ø½Ä ¾ð¾î°¡ µÇ¸é¼ Çѱ¹¿¡¼µµ ÄÚÆ²¸°¿¡ ´ëÇÑ °ü½ÉÀÌ Æø¹ßÀûÀ¸·Î ´Ã¾î³ª´Â ¸ð½ÀÀ» º¼ ¼ö ÀÖ¾ú´Ù. ¾ð¾îÀûÀ¸·Î º¼ ¶§ ÄÚÆ²¸°Àº ±×´ÙÁö »õ·Î¿î ¾ð¾î°¡ ¾Æ´Ï´Ù. ÄÚÆ²¸°ÀÌ Á¦°øÇÏ´Â ¿©·¯ ±â´ÉÀ» »ìÆìº¸¸é Á¤¸» ÀÚ¹Ù¸¦ °³¼±Çϱâ À§ÇØ ¸¹Àº ºÎºÐ¿¡¼ °í¹ÎÀ» Çß´Ù´Â ´À³¦ÀÌ ¸¹ÀÌ µç´Ù. ÇмúÀûÀ¸·Î °¡Ä¡°¡ Àְųª ¼ÒÀ§ Èü½ºÅÍ ÇÁ·Î±×·¡¸ÓµéÀÇ °ü½ÉÀ» ²ø ¸¸ÇÑ ±â´ÉÀº °ÅÀÇ ¾ø´Ù. ÇÔ¼ö¸¦ Ç¥ÇöÇÏ´Â ÀÎÅÍÆäÀ̽º·Î µ¥ÀÌÅÍ Å¸ÀÔÀ̳ª ÇÔ¼ö¸¦ Ç¥ÇöÇØ¼ °´Ã¼ÁöÇâ°ú ÅëÇÕÇÏ´Â ¹æ¹ý µîÀº ÀÌÁ¦ ´Ù¾çÇÑ ¾ð¾î¿¡¼ ä¿ëÇϰí ÀÖ´Â Àß ¾Ë·ÁÁø ±â¹ýÀÌ´Ù. ¸ð³ªµå¸¦ ½±°Ô Ȱ¿ëÇÒ ¼ö ÀÖ°Ô ÇØÁÖ´Â for ÄÄÇÁ¸®ÇÚ¼ÇÀ̳ª ÆÐÅÏ ¸ÅÄ¡, °í°è ŸÀÔ(higher-kindedtype) µî ÇÔ¼öÇü ÇÁ·Î±×·¡¹Ö ¾ð¾î¿¡¼´Â ´ç¿¬È÷ Á¦°øÇÏ´Â ±â´Éµµ ¾ÆÁ÷ Á¦°øÇÏÁö ¾Ê´Â´Ù. ÇÏÁö¸¸ ¡®¹æ¸ÁÀÌ ±ð´ø ³ëÀΡ¯ÀÌ ¹æ¸ÁÀ̸¦ ±ð´ø °Íó·³ ¿©·¯ ÇØ µ¿¾È ½ÇÁ¦ IDE °³¹ß¿¡ ÄÚÆ²¸°À» »ç¿ëÇÏ¸é¼ ¾òÀº Çǵå¹éÀ» ¹ÙÅÁÀ¸·Î ÀÌÇØÇϱ⠽±°í °³¹ßÀÚ ¼Õ¿¡ Âø ´Þ¶óºÙÀ¸¸é¼µµ ±âÁ¸ ÀÚ¹Ù ¼Ò½º¿Í ÇÔ²² »ç¿ëÇÏ±â Æí¸®ÇÑ ¾ð¾î¸¦ ¸¸µé¾î³Â´Ù. ÄÚÆ²¸°ÀÌ ÀÚ¹Ù¿¡ Ãß°¡ÇÑ ¿©·¯ ±â´ÉÀº Ä¿´Ù¶õ Ãß°¡ ·±Å¸ÀÓ ¶óÀ̺귯¸®°¡ ÇÊ¿äÇÒ Á¤µµ·Î ¾çÀÌ ¸¹Áö´Â ¾ÊÁö¸¸, ÀÚ¹ÙÀÇ °¡·Á¿òÀ» ±Ü¾îÁÙ ¸¸ÇÑ ³»¿ëµéÀÌ µé¾îÀÖ´Ù. ±×·¯¸é¼µµ ³Ê¹« º¹ÀâÇϰųª ³Ê¹« ¾î·ÆÁö´Â ¾Ê¾Æ ´Ù¾çÇÑ ¼öÁØÀÇ °³¹ßÀÚ°¡ ÇÔ²² Âü¿©ÇØ¾ß ÇÏ´Â ½ÇÀü ÇÁ·ÎÁ§Æ®¿¡¼ »ç¿ëÇϱ⿡ µü ÁÁ´Ù. °Ô´Ù°¡ ±âÁ¸ ÀÚ¹Ù ¶óÀ̺귯¸®¿ÍÀÇ È£È¯¼ºÀ» Áß½ÃÇÏ¸é¼ °³¹ßÇØ ¿Ô±â ¶§¹®¿¡ »ó´ëÀûÀ¸·Î JVM¿¡¼ ±âÁ¸ ÀÚ¹Ù ¿¡ÄڽýºÅÛÀ» Ȱ¿ëÇϱ⠽±´Ù´Â ÀåÁ¡µµ ÀÖ´Ù. ¾î¼¸é ÄÚÆ²¸°Àº Ãֽоð¾î¶ó°í ºÎ¸£±â¿£ ³Ê¹« ±¸½Ä Ư¼º¸¸À» °¡Áø ¾ð¾îÀÏÁöµµ ¸ð¸¥´Ù. ±×·¯³ª ´ë±Ô¸ð °³¹ß°ú À¯Áö º¸¼ö¼º, ±âÁ¸ ÀÚ¹Ù ½Ã½ºÅÛ°úÀÇ È£È¯¼º µîÀ» °í·ÁÇØº»´Ù¸é °¡Àå °·ÂÇÑ ÀÚ¹Ù ´ëüÀç¶ó°í º¼ ¼ö ÀÖ´Ù. ÀÌ Ã¥Àº ÄÚÆ²¸° ¾ð¾î¸¦ °³¹ßÇÏ´Â Á¨ºê·¹ÀÎ °³¹ßÀÚ°¡ Á÷Á¢ ¾´ Ã¥ÀÌ´Ù. ¹°·Ð ÀÌ Ã¥Àº ÄÚÆ²¸°¿¡ ´ëÇØ ÀÚ¼¼È÷ ¼³¸íÇÑ´Ù. ±×·±µ¥ ÄÚÆ²¸°ÀÇ Æ¯¼ºÀ» ¼³¸íÇÒ ¶§¸¶´Ù ±× Ư¼ºÀ» ÀÚ¹Ù ÂÊ¿¡¼´Â ¾î¶»°Ô »ç¿ëÇØ¾ß Çϰí, À̶§ ¾î¶² ÁÖÀÇ »çÇ×ÀÌ ÀÖ´ÂÁö ¼³¸íÇÑ´Ù´Â Á¡ÀÌ Æ¯ÀÌÇÏ´Ù. ÀÌ´Â ÄÚÆ²¸°À» ¼³°èÇÑ »ç¶÷µéÀÇ ¸Ó¸´¼Ó¿¡ Àڹ٠ȣȯ¼ºÀÌ ¾ÆÁÖ Áß¿äÇÏ°Ô ÀÚ¸® Àâ°í ÀÖÀ½À» º¸¿©ÁØ´Ù. ÇÑÆí ÀÌ Ã¥Àº ÄÚÆ²¸° ±â´ÉµéÀÌ ¼·Î ¾î¶»°Ô ¿¬°üµÇ°í À̸¦ ¾î¶»°Ô Ȱ¿ëÇÒ ¼ö ÀÖ´ÂÁö ¼³¸íÇØÁØ´Ù. ƯÈ÷ È®Àå ÇÔ¼ö¿Í ¼ö½Å °´Ã¼ ÁöÁ¤ ¶÷´Ù, ±×¸®°í ±×·± ±â´ÉÀ» DSL¿¡ Àû¿ëÇÏ´Â ¸ð½ÀÀ» »ìÆìº¸¸é ÇÑÆíÀÇ ¾Æ¸§´Ù¿î ½Ã¸¦ º¼ ¶§Ã³·³ ¾Æ¸§´Ù¿òÀ» ´À³¥ ¼ö ÀÖ´Ù. ¿©·¯ºÐµµ ÀÌ Ã¥À» ÀÐ°í ³ª¸é ºñ½ÁÇÑ ´À³¦À» ¹ÞÀ» ¼ö ÀÖÀ» °ÍÀÌ´Ù. ¾Æ¹«ÂÉ·Ï ÀÌ Ã¥À» ÅëÇØ ÄÚÆ²¸°ÀÌ ¿©·¯ºÐ ¼Õ¿¡ Âø ´Þ¶óºÙ´Â Á¦´ë·Î ±ðÀº ¹æ¸ÁÀÌó·³ ÀÛ¾÷ÇÒ ¶§ ÆíÇÏ°Ô »ç¿ëÇÒ ¼ö ÀÖ´Â µµ±¸·Î ÀÚ¸® Àâ±æ ¹Ù¶õ´Ù. ±×¸®°í ÄÚÆ²¸°À» ÅëÇØ ´Ã¾î³ »ý»ê¼º¸¸Å µ¶ÀÚ ¿©·¯ºÐÀÌ Á» ´õ ¿©À¯ ÀÖ´Â Àú³áÀÌ ÀÖ´Â »îÀ» ´©¸± ¼ö ÀÖ°Ô µÇ±æ ¹Ù¶õ´Ù. ºê¸®Áî¹ø¿¡¼ ¡Ú ¿Å±äÀÌ ¼Ò°³ ¡Ú ¿ÀÇö¼® KAIST¿¡¼ Àü»êÇÐ Çлç¿Í ¼®»ç ÇÐÀ§(ÇÁ·Î±×·¡¹Ö ¾ð¾î ¿¬±¸½Ç)¸¦ ÃëµæÇß´Ù. »ï¼º¸Þµð½¼, ºñÆ®¾ØÆÞ½º µî¿¡¼ UI °³¹ßÀÚ¿Í °³¹ß ÆÀÀåÀ» Áö³Â°í, ÇöÀç È£ÁÖ JNF Soft¿¡¼ C++/Ç®½ºÅà °³¹ßÀÚ ¹× ÄÁ¼³ÅÏÆ®·Î ÀÏÇϰí ÀÖ´Ù. ¸ÅÀÏ µÎ ½Ã°£¾¿ ¹ø¿ª°ú Àú¼úÀ» ÅëÇØ Á¶±ÝÀ̳ª¸¶ µ¿·á ÇÁ·Î±×·¡¸Óµé¿¡°Ô µµ¿òÀ» ÁÖ°íÀÚ ³ë·ÂÇϰí ÀÖ´Ù. À¥À̳ª ¸ð¹ÙÀÏ µîÀÇ ºÐ¾ß¿¡¼ °ª Á᫐ ÇÁ·Î±×·¡¹ÖÀ» ÅëÇØ ¿À·ù ¹ß»ý °¡´É¼ºÀÌ ÀûÀ¸¸é¼ À¯Áö º¸¼ö°¡ ÆíÇÑ ÇÁ·Î±×·¥À» ÀÛ¼ºÇÏ´Â ¹æ¹ý°ú À̸¦ Áö¿øÇÏ´Â ¿©·¯ µµ±¸¸¦ ¸¸µå´Â ÀÏ¿¡ °ü½ÉÀÌ ¸¹´Ù. ÃÖ±Ù¿¡´Â CEF¸¦ ±â¹ÝÀ¸·Î À¥ ÇÁ·ÐÆ®¿£µå¿Í C++ ¹é¿£µå¸¦ °áÇÕÇÑ Èï¹Ì·Î¿î ÇÁ·ÎÁ§Æ®¸¦ ÁøÇà ÁßÀ̸ç, ÇÔ¼öÇü ¸®¾×Ƽºê ÇÁ·Î±×·¡¹ÖÀ» ÀÚ¹Ù½ºÅ©¸³Æ®¿Í C++¿¡ Àû¿ëÇØ Á» ´õ ÆíÇÏ¸é¼ ¿À·ùµµ ÀûÀº Äڵ带 »ý»êÇØ³»´Â ¹æ¹ýÀ» ãÀ¸·Á°í °í¹Î ÁßÀÌ´Ù. ¡ºÄÚ¾î ÆÄÀ̽㠾ÖÇø®ÄÉÀÌ¼Ç ÇÁ·Î±×·¡¹Ö Third Edition¡»(¿¡ÀÌÄÜ, 2014), ¡ºÇÔ¼öÇü ÆÄÀ̽ã ÇÁ·Î±×·¡¹Ö¡» (¿¡ÀÌÄÜ, 2017), ¡ºProgramming in Scala 3/e¡»(¿¡ÀÌÄÜ, 2017), ¡ºÇÔ¼öÇü ¹ÝÀÀÇü ÇÁ·Î±×·¡¹Ö¡»(ÇѺû¹Ìµð¾î, 2017), ¡ºAkka ÄÚµù °øÀÛ¼Ò¡»(±æ¹þ, 2017) µîÀ» ºñ·ÔÇÑ ½Ê¿© ±Ç ÀÌ»óÀÇ Ã¥À» ¹ø¿ªÇß´Ù. |
 |
|
|
|
|
|
|
|
|
|
|