±¹³»µµ¼
ÄÄÇ»ÅÍ/ÀÎÅͳÝ
IT Àü¹®¼
ÇÁ·Î±×·¡¹Ö °³¹ß ¹æ¹ý·Ð
Kotlin in Action : ÄÚÆ²¸° ÄÄÆÄÀÏ·¯ °³¹ßÀÚ°¡ Á÷Á¢ ¾Ë·ÁÁÖ´Â ÄÚÆ²¸° ¾ð¾î ÇÙ½É
2013³â 9¿ù 9ÀÏ ÀÌÈÄ ´©Àû¼öÄ¡ÀÔ´Ï´Ù.
Á¤°¡ |
36,000¿ø |
---|
32,400¿ø (10%ÇÒÀÎ)
1,800P (5%Àû¸³)
30,600¿ø ~(15%ÇÒÀÎ)
[Ư±Þ]
À̺¥Æ®/±âȹÀü
¿¬°üµµ¼(54)
»çÀºÇ°(2)
ÀÌ»óǰÀÇ ºÐ·ù
ÃâÆÇ»ç ¼Æò
ÄÚÆ²¸°ÀÌ ¾Èµå·ÎÀÌµå °ø½Ä ¾ð¾î°¡ µÇ¸é¼ °ü½ÉÀÌ Ä¿Á³´Ù. ÀÌ Ã¥Àº ÄÚÆ²¸° ¾ð¾î¸¦ °³¹ßÇÑ Á¬ºê·¹ÀνºÀÇ ÄÚÆ²¸° ÄÄÆÄÀÏ·¯ °³¹ßÀÚµéÀÌ Á÷Á¢ ¾´ ÀÏÁ¾ÀÇ °ø½Ä ¼ÀûÀ̶ó ÇÒ ¼ö ÀÖ´Ù. ÄÚÆ²¸° ¾ð¾îÀÇ °¡Àå Å« Ư¡À̶ó¸é ½Ç¿ë¼ºÀ» µé ¼ö ÀÖÀ» °ÍÀÌ´Ù. ÀÌ Ã¥¿¡¼µµ ±×·± ½Ç¿ë¼ºÀ» °Á¶ÇÏ´Â ÀÔÀå¿¡¼ ¾²¿´´Ù. ÄÚÆ²¸° ±âÃʸ¦ ¼Ò°³Çϰí, °íÂ÷ÇÔ¼ö, °´Ã¼ÁöÇâ, Á¦³×¸¯½º µîÀÇ ³»¿ëÀ» ¼³¸íÇÑ´Ù. ±×¸®°í ÄÚÆ²¸°ÀÌ ÀÚ¹Ù ¾ð¾î¸¦ ¾î¶»°Ô °³¼±Çß°í ±âÁ¸ ÀÚ¹Ù ÇÁ·ÎÁ§Æ®¿¡¼ ÄÚÆ²¸°À» ÇÔ²² »ç¿ëÇÒ ¶§ ¾î¶² ºÎºÐÀ» Á¶½ÉÇØ¾ß ÇÒÁö¸¦ Áß½ÉÀ¸·Î ÄÚÆ²¸° ¾ð¾î¸¦ ¼³¸íÇÑ´Ù. ÈĹݿ¡´Â ¾Ö³ëÅ×À̼ǰú ¸®Ç÷º¼Ç, DSL¿¡ ´ëÇØ ½ÇÁ¦ ¶óÀ̺귯¸® ¿¹Á¦¸¦ ´Ù·ç¸é¼ ¼³°è ±â¹ý°ú ±¸Çö±â¹ýÀ» ÀÚ¼¼È÷ ¼³¸íÇÑ´Ù. ƯÈ÷ ÀÌ ÁÖÁ¦´Â ÀÌ Ã¥ÀÇ ¹é¹Ì·Î, ´Ù¸¥ ÄÚÆ²¸° Ã¥À̳ª °ø½Ä ¹®¼¿¡¼´Â ã¾Æº¸±â Èûµé¸ç ½ÇÀü¿¡¼ Å©°Ô µµ¿òÀÌ ¹ÞÀ» ¼ö ÀÖ´Ù.
[ÀÌ Ã¥ÀÇ ´ë»ó µ¶ÀÚ ]
¾î´À Á¤µµ ÀÚ¹Ù °æÇèÀÌ ÀÖ´Â °³¹ßÀÚ¸¦ ÁÖ¿ä ´ë»óÀ¸·Î ÇÑ´Ù. ÄÚÆ²¸°Àº ÀÚ¹Ù¿¡ ÀÖ´Â ¿©·¯ °³³ä°ú ±â¹ý À§¿¡ ¸¸µé¾îÁ³°í, ÀÌ Ã¥Àº µ¶ÀÚµéÀÌ ÄÚÆ²¸°À» ºü¸£°Ô ¹è¿ï ¼ö ÀÖµµ·Ï µ¶ÀÚµéÀÇ ±âÁ¸ Áö½ÄÀ» Ȱ¿ëÇÑ´Ù. ÀÚ¹Ù¸¦ ¹è¿î Áö ¾ó¸¶ µÇÁö ¾Ê¾Ò°Å³ª C#À̳ª ÀÚ¹Ù ½ºÅ©¸³Æ®¿Í °°Àº ´Ù¸¥ ¾ð¾î¿¡ ´ëÇÑ °æÇèÀº ÀÖÁö¸¸ ÀÚ¹Ù¸¦ Àß ¸ð¸£´Â µ¶ÀÚµéÀº ÄÚÆ²¸°°ú JVMÀÇ »óÈ£ÀÛ¿ëÀÇ º¹ÀâÇÑ Ãø¸éÀ» ÀÌÇØÇϱâ À§ÇØ ´Ù¸¥ ÀÚ·á°¡ ÇÊ¿äÇÒ °ÍÀÌ´Ù. ÇÏÁö¸¸ ±×·± µ¶ÀÚ¶óµµ ¿©ÀüÈ÷ ÀÌ Ã¥À» »ç¿ëÇØ ÄÚÆ²¸°À» ¹è¿ï ¼ö ÀÖ´Ù. ¿ì¸®´Â ÄÚÆ²¸° ¾ð¾î Àüü¸¦ ´Ù·ç¸ç, Ưº°È÷ ±¸Ã¼ÀûÀÎ ¿µ¿ª¿¡ ÃÊÁ¡À» ¸ÂÃßÁö´Â ¾Ê´Â´Ù. µû¶ó¼ ÀÌ Ã¥Àº ¼¹ö °³¹ßÀÚ³ª ¾Èµå·ÎÀÌµå °³¹ßÀÚ, ¶Ç´Â JVM¿¡¼ ½ÇÇàµÉ ÇÁ·ÎÁ§Æ®¸¦ ±¸ÃàÇÏ´Â ¸ðµç °³¹ßÀÚ¿¡°Ô µµ¿òÀÌ µÉ °ÍÀÌ´Ù.
[ÀÌ Ã¥ÀÇ ±¸¼º]
ÀÌ Ã¥Àº 2ºÎ·Î ±¸¼ºÇß´Ù.
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´Â Çѱ¹¾îÆÇ¿¡¸¸ Ãß°¡ÇÑ °ÍÀ¸·Î ÄÚÆ²¸° 1.1, 1.2(º£Å¸ ¹öÀü, ÇâÈÄ º¯°æ °¡´É¼º ÀÖÀ½)°ú ±× ÀÌÀü ¹öÀüÀÇ Â÷À̸¦ °£·«È÷ Á¤¸®Çß´Ù.
ÀÌ Ã¥Àº Àüü¸¦ Â÷·Ê´ë·Î ÀÐÀ» ¶§ °¡Àå È¿°ú°¡ ÁÁ´Ù. ÇÏÁö¸¸ °ü½É ºÐ¾ß¸¦ ´Ù·ç´Â ÀåÀ» ã¾Æ¼ Àаųª Àß ¸ð¸£´Â °³³äÀ» ¸¶ÁÖÄ¥ ¶§ »öÀÎÀ» ÅëÇØ ÇÊ¿äÇÑ ºÎºÐÀ» ã¾Æº¸¸é¼ ÀÌ Ã¥À» Ȱ¿ëÇÏ´Â °Íµµ ÁÁ´Ù.
̵̧ȍ
¾ð¾î¸¦ ¸Ç ¹Ø¹Ù´ÚºÎÅÍ ¼³°èÇÏ´Â ÀÏÀº ±× ÀÚü·Îµµ Èûµç ÀÏÀÌ´Ù. ÇÏÁö¸¸ »õ ¾ð¾î°¡ ±âÁ¸ÀÇ ´Ù¸¥ ¾ð¾î¿Í Àß ¾î¿ì·¯Áöµµ·Ï ¼³°èÇÏ´Â ÀÏÀº ÀüÇô ´Ù¸£´Ù. ±âÁ¸ ¾ð¾î¿Í ¾î¿ì·¯Áö´Â ¾ð¾î¸¦ ¼³°èÇÏ´Â °úÁ¤¿¡¼ ¾îµÎÄÄÄÄÇÏ°í ½º»êÇÑ ±«¹° ¼Ò±¼À» ¿©·µ Åë°úÇÏ¸é¼ ¼ö¾øÀÌ ¸¹Àº Èû¼¾ ±«¹°À» ¹°¸®ÃÄ¾ß ÇÑ´Ù. ÀÚ¹Ù »óÈ£¿î¿ë¼ºÀº ÄÚÆ²¸°ÀÇ °¡Àå Áß¿äÇÑ ÁÖÃåµ¹À̶ó ÇÒ ¼ö ÀÖÀ¸¸ç, ÀÌ Ã¥Àº ÀÚ¹Ù ÄÚÆ²¸° »óÈ£¿î¿ë¼º¿¡ ½Å°æÀ» ¸¹ÀÌ ½è´Ù. ÀÌ¹Ì Á¸ÀçÇÏ´Â ÀÚ¹Ù ÇÁ·ÎÁ§Æ®¿¡ ÄÚÆ²¸°À» Á¡ÁøÀûÀ¸·Î µµÀÔÇÒ ¶§ ÀÚ¹Ù ÄÚÆ²¸° »óÈ£¿î¿ë¼ºÀÌ ¸Å¿ì Áß¿äÇÏ´Ù. ½ÉÁö¾î »õ·Î¿î ÇÁ·ÎÁ§Æ®¸¦ ÄÚÆ²¸°¸¸À¸·Î ÀÛ¼ºÇÏ´õ¶óµµ ÀÚ¹Ù·Î ¾²ÀÎ ±¤¹üÀ§ÇÑ ¶óÀ̺귯¸®·Î ÀÌ·ïÁø Ç÷§ÆûÀ̶ó´Â ´õ Å« ±×¸²¿¡ µé¾î¸Â°Ô ÄÚÆ²¸° ¾ð¾î¸¦ ±¸»çÇØ¾ß ÇÑ´Ù.
ÀÌ ÃßõÀÇ ±ÛÀ» ¾²´Â µ¿¾È¿¡µµ µÎ °¡Áö Ÿ°Ù Ç÷§ÆûÀ» ´õ °³¹ß ÁßÀÌ´Ù. ÀÌÁ¦ ÄÚÆ²¸°Àº ÀÚ¹Ù½ºÅ©¸³Æ®¸¦ Áö¿øÇϱ⠶§¹®¿¡ Ç® ½ºÅà À¥ °³¹ßÀÌ °¡´ÉÇÏ´Ù. ¶ÇÇÑ ºü¸¥ ½ÃÀÏ ¾È¿¡ Çʿ信 µû¶ó ³×ÀÌÆ¼ºê ÄÚµå·Î ÄÚÆ²¸°À» ÄÄÆÄÀÏÇØ¼ VM¾øÀ̵µ ÄÚÆ²¸° ÇÁ·Î±×·¥À» ½ÇÇàÇÒ ¼ö ÀÖ°Ô ÇÒ ¿¹Á¤ÀÌ´Ù. µû¶ó¼ ÇöÀç ÀÌ Ã¥Àº JVM¿¡ ÁÖ·Î ÃÊÁ¡À» ¸ÂÃßÁö¸¸ ¾ÕÀ¸·Î´Â ÀÌ Ã¥¿¡¼ ¹è¿î ³»¿ëÀ» ¿©·¯ ´Ù¸¥ ½ÇÇà ȯ°æ¿¡ Àû¿ëÇÒ ¼ö ÀÖÀ» °ÍÀÌ´Ù.
ÀúÀÚµéÀº ÃʱâºÎÅÍ ÄÚÆ²¸° ÆÀÀÇ ÀÏ¿øÀ̾ú±â ¶§¹®¿¡ ÄÚÆ²¸° ¾ð¾î¿Í ±× ³»ºÎ ±¸Á¶¿¡ ´ëÇØ Àß ¾Ë°í ÀÖ´Ù. ±×µéÀº °¢Á¾ ÄÁÆÛ·±½º³ª ¿öÅ©¼ó ¹ßÇ¥, ÄÚÆ²¸° ±³À° °úÁ¤ µîÀ» ÅëÇØ ÄÚÆ²¸°À» ´õ Àß ¼³¸íÇÒ ¼ö ÀÖ°Ô µÆ°í, »ç¶÷µéÀÌ ÀÚÁÖ ÇÏ´Â Áú¹®À̳ª ÈçÈ÷ ÀúÁö¸£´Â ½Ç¼ö¿¡ ´ëÇØ ´õ ¸¹ÀÌ ¾Ë°Ô µÆ´Ù. ÀÌ Ã¥Àº ÄÚÆ²¸° ¾ð¾îÀÇ Æ¯¼ºÀ» µÞ¹ÞħÇÏ´Â °í¼öÁØ °³³äÀ» ¼³¸íÇϸ鼵µ µ¶Àڵ鿡°Ô ÇÊ¿äÇÑ ¸¸Å °¢ Ư¼ºÀÇ ¼¼ºÎ »çÇ×À» Á¦½ÃÇÑ´Ù.
³ª´Â µ¶ÀÚ ¿©·¯ºÐÀÌ ÀÌ Ã¥À» ÀÐÀ¸¸é¼ ÄÚÆ²¸°°ú ÇÔ²² Áñ°Å¿î ½Ã°£À» º¸³»±â ¹Ù¶õ´Ù. ³»°¡ Á¾Á¾ ÄÚÆ²¸° Ä¿¹Â´ÏƼ¿¡ Æ÷½ºÆÃÇÏ¸é¼ ¾²´Â Àλ縻·Î ÃßõÀÇ ±ÛÀ» ¸¶Ä£´Ù. ÄÚÆ²¸°°ú ÇÔ²² ÁÁÀº ½Ã°£ µÇ¼¼¿ä!
- ¾Èµå·¹ÀÌ ºê·¹½º¶óÇÁ / Á¨ºê·¹ÀÎ ÄÚÆ²¸° ¸®µå µðÀÚÀ̳Ê
¸ñÂ÷
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 ¿ä¾à
º»¹®Áß¿¡¼
ÄÚÆ²¸°(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) ¾ð¾îÀÇ ÀüÅëÀ» µû¶ú´Ù. ÇÏÁö¸¸ ÀÚ¹Ù³ª ½Ç·Ð ´ë½Å Á» ´õ °íÇâ¿¡ °¡±î¿î ¼¶À» ÅÃÇϱâ·Î °áÁ¤Çß´Ù. ÄÚÆ²¸° Á¤½Ä ¹èÆ÷°¡ °¡±î¿öÁü¿¡ µû¶ó ¿ì¸®´Â ÄÚÆ²¸° ¾ð¾î¸¦ ¼³°èÇÏ´Â °úÁ¤¿¡ °ü¿©Çϰí ÄÚÆ²¸° ¾ð¾îÀÇ Æ¯¼ºÀÌ ¿Ö ÇöÀçÀÇ ¸ð½ÀÀÌ µÇ¾ú´ÂÁö¿¡ ´ëÇØ ÀڽŠÀÖ°Ô ¼³¸íÇÒ ¼ö ÀÖ´Â »ç¶÷µéÀÌ ¾´ Ã¥ÀÌ ÇÑ ±Ç ÀÖ´Ù¸é »ç¶÷µé¿¡°Ô ¸¹Àº µµ¿òÀÌ µÇ¸®¶ó »ý°¢Çß´Ù. ÀÌ Ã¥Àº ±×·± ³ë·ÂÀÇ ÀÏȯÀÌ¸ç µ¶ÀÚ ¿©·¯ºÐÀÌ ÀÌ Ã¥À» ÅëÇØ ÄÚÆ²¸° ¾ð¾î¸¦ ´õ Àß ¹è¿ì°í ÀÌÇØÇϱ⸦ ¹Ù¶õ´Ù. ¿©·¯ºÐÀÇ Çà¿î°ú ¿©·¯ºÐÀÌ Ç×»ó Áñ°Ì°Ô °³¹ß¿¡ ¸ÅÁøÇÒ ¼ö Àֱ⸦ ºó´Ù!
('ÁöÀºÀÌÀÇ ¸»' Áß¿¡¼)
Çб³ ƯÈ÷ ´ëÇпø¿¡¼´Â ÄÄÆÄÀÏ·¯¿Í ÇÔ¼öÇü ÇÁ·Î±×·¡¹ÖÀ» ÁÖ·Î °øºÎÇßÁö¸¸ ȸ»ç¿¡ µé¾î¿Â ÈÄ ÀÚ¹Ù¿Í C, C++ °³¹ßÀ» 10¿©³â ÁøÇàÇØ ¿Ô´Ù. È£ÁÖ·Î ¿À°í ³ª¼ ½ºÄ®¶ó¸¦ Á¢Çß°í ÇÔ¼öÇü ÇÁ·Î±×·¡¹ÖÀ̶ó´Â ¸»ÀÌ ¿©·¯ ÇÁ·Î±×·¡¸Ó »çÀÌ¿¡ ȸÀڵǴ ¸ð½ÀÀ» º¸¸é¼ °Ý¼¼Áö°¨À» ´À³¢±â ½ÃÀÛÇß´Ù. ½ºÄ®¶ó¸¦ °øºÎÇÏ¸é¼ 90³â´ë ÃÊÁß¹Ý Çб³¿¡¼ °øºÎÇß´ø ³»¿ëÀ» JVM ȯ°æ¿¡ Àß ¹ö¹«¸° ½ºÄ®¶ó ¾ð¾î Ư¡À» ÁöÄѺ¸¸ç ½ºÄ®¶ó¸¦ ¼³°èÇÑ ¸¶Æ¾ ¿À´õ½ºÅ°¿¡°Ô °æÅºÇß´Ù. ½ºÄ®¶ó°¡ ÁÖ´Â °£°áÇÑ ÄÚµåÀÇ ¸Å·Â¿¡ Ç« ºüÁ® °è¼Ó °øºÎ¸¦ ÇÏ¸é¼ °íÂ÷ ÇÔ¼ö¸¦ ³Ñ¾î¼´Â ŸÀÔ ½Ã½ºÅÛÀ̳ª °í°è ŸÀÔ(higher-kinded type) µîÀ» ½ºÄ®¶ó·Î ±¸ÇöÇÑ ½ºÄ®¶ó Á¦µå³ª CAT µîÀÇ ¶óÀ̺귯¸®µµ »ìÆìºÃ´Ù. ŸÀÔÀ» Ȱ¿ëÇÑ °·ÂÇÑ Ãß»óÈ´Â ÇϽºÄÌÀ̳ª ½ºÄ®¶ó µî ÇϵåÄÚ¾î ÇÔ¼öÇü ÇÁ·Î±×·¡¹Ö ¾ð¾îÀÇ ¸¶¾à°úµµ °°Àº ÀåÁ¡À̱ä ÇÏÁö¸¸, ½Ç¹«¿¡¼ ±×·± ±â´ÉÀ¸·Î ¹ö¹«·Á µÐ Äڵ尡 ¾ó¸¶³ª À¯Áö º¸¼ö¼ºÀÌ ÀÖÀ»±î ÇÏ´Â Àǹ®ÀÌ ¸Ó¸´¼ÓÀ» ¶°³ªÁö ¾Ê¾Ò´Ù. ±â´ÉÀ» Ãß°¡ÇÏ°í ´õ °íÂ÷¿øÀûÀÎ Ãß»óȸ¦ °¡´ÉÄÉ Çϱ⺸´Ù´Â ¿ÀÈ÷·Á ±â´ÉÀ» Á¦¾àÇϰí Ãß»óÈ ¹æ¹ýÀ» Á¦ÇÑÇ쵂 Ãʺ¸ºÎÅÍ °í¼ö±îÁö ´Ù ÀÌÇØÇϱ⠽±°í À¯Áöº¸¼öÇϱ⠽¬¿î ¾ð¾î¸¦ ¸¸µé¾î¾ß ÇÏ´Â °Ô ¾Æ´Ò±î? 2014³â ¾ÖÇÃÀÌ ½ºÀ§ÇÁÆ®¸¦ ¹ßÇ¥Çϰí, ºñ½ÁÇÑ ¶§ ÄÚÆ²¸°À̶ó´Â ¾ð¾î°¡ ¿ì¿¬È÷ ½Ã¾ß¿¡ µé¾î¿Ô´Ù. µÎ ¾ð¾î´Â °¢°¢ ¿ÀºêÁ§Æ¼ºê C¿Í ÀÚ¹Ù¶ó´Â ¾ð¾î¸¦ °³¼±Çϸ鼵µ ½ºÄ®¶óó·³ ³Ê¹« Å« º¯È¸¦ Ãß±¸ÇÏÁö´Â ¾Ê´Â ½Ç¿ëÀûÀÎ Á¢±Ù ¹æ½ÄÀ» ÅÃÇÑ ¾ð¾î¶ó´Â Á¡°ú, ³Î °¡´É¼º ó¸®¿Í ¶÷´Ù ±¸¹® µî¿¡¼ ºñ½ÁÇÑ Á¡ÀÌ ¸¹¾Ò´Ù. ¾î¼¸é ½ºÄ®¶ó°¡ ÅÃÇÑ Á¢±Ù ¹æ¹ýº¸´Ù´Â ½ºÀ§ÇÁÆ®³ª ÄÚÆ²¸°ÀÌ ÅÃÇÑ Á¢±Ù ¹æ¹ýÀÌ Çö½ÇÀûÀ¸·Î Àû¿ëÇϱ⿣ ´õ ½±Áö ¾ÊÀ»±î ÇÏ´Â »ý°¢À¸·Î °ü½ÉÀ» °®°í ÄÚÆ²¸°À» ÁöÄѺôÙ. ƯÈ÷ ¾Èµå·ÎÀ̵å¶ó´Â ȯ°æÀÌ Áß¿äÇÏ°í °³¹ßÀÚµéÀÌ µû·Î °øºÎ¿¡ ÅõÀÚÇÒ ½Ã°£ÀÌ Àý´ëÀûÀ¸·Î ºÎÁ·ÇÑ Çѱ¹ÀÇ Çö½Ç¿¡¼´Â ÄÚÆ²¸°ÀÌ ´õ¿í ¾µ¸ð°¡ ÀÖÀ» °Í °°¾Ò´Ù. ±×¸®°í ÄÚÆ²¸°ÀÌ 2017³â ¾Èµå·ÎÀÌµå °ø½Ä ¾ð¾î°¡ µÇ¸é¼ Çѱ¹¿¡¼µµ ÄÚÆ²¸°¿¡ ´ëÇÑ °ü½ÉÀÌ Æø¹ßÀûÀ¸·Î ´Ã¾î³ª´Â ¸ð½ÀÀ» º¼ ¼ö ÀÖ¾ú´Ù.
¾ð¾îÀûÀ¸·Î º¼ ¶§ ÄÚÆ²¸°Àº ±×´ÙÁö »õ·Î¿î ¾ð¾î°¡ ¾Æ´Ï´Ù. ÄÚÆ²¸°ÀÌ Á¦°øÇÏ´Â ¿©·¯ ±â´ÉÀ» »ìÆìº¸¸é Á¤¸» ÀÚ¹Ù¸¦ °³¼±Çϱâ À§ÇØ ¸¹Àº ºÎºÐ¿¡¼ °í¹ÎÀ» Çß´Ù´Â ´À³¦ÀÌ ¸¹ÀÌ µç´Ù. ÇмúÀûÀ¸·Î °¡Ä¡°¡ Àְųª ¼ÒÀ§ Èü½ºÅÍ ÇÁ·Î±×·¡¸ÓµéÀÇ °ü½ÉÀ» ²ø ¸¸ÇÑ ±â´ÉÀº °ÅÀÇ ¾ø´Ù. ÇÔ¼ö¸¦ Ç¥ÇöÇÏ´Â ÀÎÅÍÆäÀ̽º·Î µ¥ÀÌÅÍ Å¸ÀÔÀ̳ª ÇÔ¼ö¸¦ Ç¥ÇöÇØ¼ °´Ã¼ÁöÇâ°ú ÅëÇÕÇÏ´Â ¹æ¹ý µîÀº ÀÌÁ¦ ´Ù¾çÇÑ ¾ð¾î¿¡¼ ä¿ëÇϰí ÀÖ´Â Àß ¾Ë·ÁÁø ±â¹ýÀÌ´Ù. ¸ð³ªµå¸¦ ½±°Ô Ȱ¿ëÇÒ ¼ö ÀÖ°Ô ÇØÁÖ´Â for ÄÄÇÁ¸®ÇÚ¼ÇÀ̳ª ÆÐÅÏ ¸ÅÄ¡, °í°è ŸÀÔ(higher-kindedtype) µî ÇÔ¼öÇü ÇÁ·Î±×·¡¹Ö ¾ð¾î¿¡¼´Â ´ç¿¬È÷ Á¦°øÇÏ´Â ±â´Éµµ ¾ÆÁ÷ Á¦°øÇÏÁö ¾Ê´Â´Ù. ÇÏÁö¸¸ '¹æ¸ÁÀÌ ±ð´ø ³ëÀÎ'ÀÌ ¹æ¸ÁÀ̸¦ ±ð´ø °Íó·³ ¿©·¯ ÇØ µ¿¾È ½ÇÁ¦ IDE °³¹ß¿¡ ÄÚÆ²¸°À» »ç¿ëÇÏ¸é¼ ¾òÀº Çǵå¹éÀ» ¹ÙÅÁÀ¸·Î ÀÌÇØÇϱ⠽±°í °³¹ßÀÚ ¼Õ¿¡ Âø ´Þ¶óºÙÀ¸¸é¼µµ ±âÁ¸ ÀÚ¹Ù ¼Ò½º¿Í ÇÔ²² »ç¿ëÇÏ±â Æí¸®ÇÑ ¾ð¾î¸¦ ¸¸µé¾î³Â´Ù. ÄÚÆ²¸°ÀÌ ÀÚ¹Ù¿¡ Ãß°¡ÇÑ ¿©·¯ ±â´ÉÀº Ä¿´Ù¶õ Ãß°¡ ·±Å¸ÀÓ ¶óÀ̺귯¸®°¡ ÇÊ¿äÇÒ Á¤µµ·Î ¾çÀÌ ¸¹Áö´Â ¾ÊÁö¸¸, ÀÚ¹ÙÀÇ °¡·Á¿òÀ» ±Ü¾îÁÙ ¸¸ÇÑ ³»¿ëµéÀÌ µé¾îÀÖ´Ù. ±×·¯¸é¼µµ ³Ê¹« º¹ÀâÇϰųª ³Ê¹« ¾î·ÆÁö´Â ¾Ê¾Æ ´Ù¾çÇÑ ¼öÁØÀÇ °³¹ßÀÚ°¡ ÇÔ²² Âü¿©ÇØ¾ß ÇÏ´Â ½ÇÀü ÇÁ·ÎÁ§Æ®¿¡¼ »ç¿ëÇϱ⿡ µü ÁÁ´Ù. °Ô´Ù°¡ ±âÁ¸ ÀÚ¹Ù ¶óÀ̺귯¸®¿ÍÀÇ È£È¯¼ºÀ» Áß½ÃÇÏ¸é¼ °³¹ßÇØ ¿Ô±â ¶§¹®¿¡ »ó´ëÀûÀ¸·Î JVM¿¡¼ ±âÁ¸ ÀÚ¹Ù ¿¡ÄڽýºÅÛÀ» Ȱ¿ëÇϱ⠽±´Ù´Â ÀåÁ¡µµ ÀÖ´Ù. ¾î¼¸é ÄÚÆ²¸°Àº Ãֽоð¾î¶ó°í ºÎ¸£±â¿£ ³Ê¹« ±¸½Ä Ư¼º¸¸À» °¡Áø ¾ð¾îÀÏÁöµµ ¸ð¸¥´Ù. ±×·¯³ª ´ë±Ô¸ð °³¹ß°ú À¯Áö º¸¼ö¼º, ±âÁ¸ ÀÚ¹Ù ½Ã½ºÅÛ°úÀÇ È£È¯¼º µîÀ» °í·ÁÇØº»´Ù¸é °¡Àå °·ÂÇÑ ÀÚ¹Ù ´ëüÀç¶ó°í º¼ ¼ö ÀÖ´Ù.
ÀÌ Ã¥Àº ÄÚÆ²¸° ¾ð¾î¸¦ °³¹ßÇÏ´Â Á¨ºê·¹ÀÎ °³¹ßÀÚ°¡ Á÷Á¢ ¾´ Ã¥ÀÌ´Ù. ¹°·Ð ÀÌ Ã¥Àº ÄÚÆ²¸°¿¡ ´ëÇØ ÀÚ¼¼È÷ ¼³¸íÇÑ´Ù. ±×·±µ¥ ÄÚÆ²¸°ÀÇ Æ¯¼ºÀ» ¼³¸íÇÒ ¶§¸¶´Ù ±× Ư¼ºÀ» ÀÚ¹Ù ÂÊ¿¡¼´Â ¾î¶»°Ô »ç¿ëÇØ¾ß Çϰí, À̶§ ¾î¶² ÁÖÀÇ »çÇ×ÀÌ ÀÖ´ÂÁö ¼³¸íÇÑ´Ù´Â Á¡ÀÌ Æ¯ÀÌÇÏ´Ù. ÀÌ´Â ÄÚÆ²¸°À» ¼³°èÇÑ »ç¶÷µéÀÇ ¸Ó¸´¼Ó¿¡ Àڹ٠ȣȯ¼ºÀÌ ¾ÆÁÖ Áß¿äÇÏ°Ô ÀÚ¸® Àâ°í ÀÖÀ½À» º¸¿©ÁØ´Ù. ÇÑÆí ÀÌ Ã¥Àº ÄÚÆ²¸° ±â´ÉµéÀÌ ¼·Î ¾î¶»°Ô ¿¬°üµÇ°í À̸¦ ¾î¶»°Ô Ȱ¿ëÇÒ ¼ö ÀÖ´ÂÁö ¼³¸íÇØÁØ´Ù. ƯÈ÷ È®Àå ÇÔ¼ö¿Í ¼ö½Å °´Ã¼ ÁöÁ¤ ¶÷´Ù, ±×¸®°í ±×·± ±â´ÉÀ» DSL¿¡ Àû¿ëÇÏ´Â ¸ð½ÀÀ» »ìÆìº¸¸é ÇÑÆíÀÇ ¾Æ¸§´Ù¿î ½Ã¸¦ º¼ ¶§Ã³·³ ¾Æ¸§´Ù¿òÀ» ´À³¥ ¼ö ÀÖ´Ù. ¿©·¯ºÐµµ ÀÌ Ã¥À» ÀÐ°í ³ª¸é ºñ½ÁÇÑ ´À³¦À» ¹ÞÀ» ¼ö ÀÖÀ» °ÍÀÌ´Ù. ¾Æ¹«ÂÉ·Ï ÀÌ Ã¥À» ÅëÇØ ÄÚÆ²¸°ÀÌ ¿©·¯ºÐ ¼Õ¿¡ Âø ´Þ¶óºÙ´Â Á¦´ë·Î ±ðÀº ¹æ¸ÁÀÌó·³ ÀÛ¾÷ÇÒ ¶§ ÆíÇÏ°Ô »ç¿ëÇÒ ¼ö ÀÖ´Â µµ±¸·Î ÀÚ¸® Àâ±æ ¹Ù¶õ´Ù. ±×¸®°í ÄÚÆ²¸°À» ÅëÇØ ´Ã¾î³ »ý»ê¼º¸¸Å µ¶ÀÚ ¿©·¯ºÐÀÌ Á» ´õ ¿©À¯ ÀÖ´Â Àú³áÀÌ ÀÖ´Â »îÀ» ´©¸± ¼ö ÀÖ°Ô µÇ±æ ¹Ù¶õ´Ù.
ºê¸®Áî¹ø¿¡¼
('¿Å±äÀÌÀÇ ¸»' Áß¿¡¼)
ÀúÀÚ¼Ò°³
»ý³â¿ùÀÏ | - |
---|---|
Ãâ»ýÁö | - |
Ãâ°£µµ¼ | 1Á¾ |
ÆÇ¸Å¼ö | 63±Ç |
2003³âºÎÅÍ Á¬ºê·¹Àνº¿¡¼ ÀÏÇØ ¿ÔÀ¸¸ç, ÀÎÅÚ¸®J ¾ÆÀ̵ð¾î, ÆÄÀÌÂü, À¥½ºÅè µîÀÇ ¿©·¯ Á¦Ç° °³¹ß¿¡ Âü¿©Çß´Ù. Ãʱâ ÄÚÆ²¸° ±â¿©ÀÚ Áß Çϳª·Î ÃÖÃÊ ÄÚÆ²¸° ¹ÙÀÌÆ®ÄÚµå »ý¼º±â¸¦ ¸¸µé¾úÀ¸¸ç, Àü ¼¼°è¿¡¼ ÄÚÆ²¸° °ü·Ã ¹ßÇ¥¸¦ ÁøÇàÇØ ¿Ô´Ù. ÇöÀç ÄÚÆ²¸° ÀÎÅÚ¸®J Ç÷¯±×ÀÎÀ» °³¹ßÇÏ´Â ÆÀÀ» À̲ø°í ÀÖ´Ù.
»ý³â¿ùÀÏ | - |
---|---|
Ãâ»ýÁö | - |
Ãâ°£µµ¼ | 1Á¾ |
ÆÇ¸Å¼ö | 63±Ç |
2011³âºÎÅÍ ÄÚÆ²¸° ÆÀÀÇ ÀÏ¿øÀ̾ú´Ù. ÄÚÆ²¸° ÄÄÆÄÀÏ·¯ÀÇ Å¸ÀÔ Ã߷аú ¿À¹ö·Îµå ÇØ°á(overload resolution) ºÎºÐÀ» °³¹ßÇß´Ù. ÇöÀç Å×Å©´ÏÄà ¿¡¹ÝÁ©¸®½ºÆ®(technical evangelist)·Î¼ °¢Á¾ ÄÜÆÛ·±½º¿¡¼ ÄÚÆ²¸°¿¡ ´ëÇØ ¾Ë¸®°í ÄÚÆ²¸° ¿Â¶óÀÎ ÄÚ½º¸¦ °³¹ßÇϰí ÀÖ´Ù.
»ý³â¿ùÀÏ | - |
---|---|
Ãâ»ýÁö | - |
Ãâ°£µµ¼ | 0Á¾ |
ÆÇ¸Å¼ö | 0±Ç |
KAIST¿¡¼ Àü»êÇÐ Çлç¿Í ¼®»ç ÇÐÀ§(ÇÁ·Î±×·¡¹Ö ¾ð¾î ¿¬±¸½Ç)¸¦ ÃëµæÇß´Ù. »ï¼º¸Þµð½¼, ºñÆ®¾ØÆÞ½º µî¿¡¼ UI °³¹ßÀÚ¿Í °³¹ß ÆÀÀåÀ» Áö³Â°í È£ÁÖ¿¡¼ C++/Ç®½ºÅà °³¹ßÀÚ·Î ÀÏÇϰí ÀÖ´Ù. À¥°ú ¸ð¹ÙÀÏ µîÀÇ ºÐ¾ß¿¡¼ °ª Á᫐ ÇÁ·Î±×·¡¹ÖÀ» ÅëÇØ ¿À·ù ¹ß»ý °¡´É¼ºÀÌ ´õ ÀûÀ¸¸é¼ À¯Áöº¸¼ö°¡ ÆíÇÑ ÇÁ·Î±×·¥À» ÀÛ¼ºÇÏ´Â ¹æ¹ý°ú À̸¦ Áö¿øÇÏ´Â ¿©·¯ µµ±¸¸¦ ¸¸µå´Â ÀÏ¿¡ °ü½ÉÀÌ ¸¹´Ù. ÃÖ±Ù¿¡´Â ½ºÄ®¶ó¿Í ÆÄÀ̽ãÀ» »ç¿ëÇÑ ´ë±Ô¸ð º´·Ä 󸮳ª ¾×Å͸¦ Ȱ¿ëÇÑ ºÐ»ê ó¸® µîÀ» °øºÎÇÏ´Â ÁßÀÌ´Ù.
[°í¼º´É ÆÄÀ̽ã], [ÇÁ·Î±×·¡¹Ö ½ºÄ®¶ó](ÀÌ»ó ÇѺû¹Ìµð¾î), [Programming in Scala(3ÆÇ
)], [ÇÔ¼öÇü ÆÄÀ̽ã ÇÁ·Î±×·¡¹Ö], [½ºÄ®¶ó¿Í ±â°è ÇнÀ], [ÆÄÀ̽㠷κ¸Æ½½º], [½ºÄ®¶ó µ¿½Ã¼º ÇÁ·Î±×·¡¹Ö](ÀÌ»ó ¿¡ÀÌÄÜ), [½Ã½ºÅÛ ¼º´É ºÐ¼®°ú ÃÖÀûÈ], [ÆÄÀ̽ã ÀÎ ÇÁ·¢Æ¼½º](ÀÌ»ó À§Å°ºÏ½º) µîÀ» ¹ø¿ªÇß´Ù.
¿ªÀÚÀÇ ´Ù¸¥Ã¥
Àüüº¸±âÁÖ°£·©Å·
´õº¸±â»óǰÁ¤º¸Á¦°ø°í½Ã
À̺¥Æ® ±âȹÀü
ÀÌ »óǰÀÇ ½Ã¸®Áî
¿¡ÀÌÄÜ ¸ð¹ÙÀÏ ÇÁ·Î±×·¡¹Ö ½Ã¸®Áî(ÃÑ 62±Ç / ÇöÀ籸¸Å °¡´Éµµ¼ 55±Ç)
±³È¯/ȯºÒ
±³È¯/ȯºÒ ¹æ¹ý |
¡®¸¶ÀÌÆäÀÌÁö > Ãë¼Ò/¹Ýǰ/±³È¯/ȯºÒ¡¯ ¿¡¼ ½ÅûÇÔ, 1:1 ¹®ÀÇ °Ô½ÃÆÇ ¶Ç´Â °í°´¼¾ÅÍ(1577-2555) ÀÌ¿ë °¡´É |
---|---|
±³È¯/ȯºÒ °¡´É ±â°£ |
°í°´º¯½ÉÀº Ãâ°í¿Ï·á ´ÙÀ½³¯ºÎÅÍ 14ÀÏ ±îÁö¸¸ ±³È¯/ȯºÒÀÌ °¡´ÉÇÔ |
±³È¯/ȯºÒ ºñ¿ë |
°í°´º¯½É ¶Ç´Â ±¸¸ÅÂø¿ÀÀÇ °æ¿ì¿¡¸¸ 2,500¿ø Åùèºñ¸¦ °í°´´ÔÀÌ ºÎ´ãÇÔ |
±³È¯/ȯºÒ ºÒ°¡»çÀ¯ |
¹ÝǰÁ¢¼ö ¾øÀÌ ¹Ý¼ÛÇϰųª, ¿ìÆíÀ¸·Î º¸³¾ °æ¿ì »óǰ È®ÀÎÀÌ ¾î·Á¿ö ȯºÒÀÌ ºÒ°¡ÇÒ ¼ö ÀÖÀ½ |
¼ÒºñÀÚ ÇÇÇØº¸»ó |
¼ÒºñÀÚ ÇÇÇØº¸»óÀÇ ºÐÀïó¸® µî¿¡ °üÇÑ »çÇ×Àº ¼ÒºñÀÚºÐÀïÇØ°á±âÁØ(°øÁ¤°Å·¡À§¿øÈ¸ °í½Ã)¿¡ µû¶ó ºñÇØ º¸»ó ¹ÞÀ» ¼ö ÀÖÀ½ |
±âŸ |
µµ¸Å»ó ¹× Á¦ÀÛ»ç »çÁ¤¿¡ µû¶ó ǰÀý/ÀýÆÇ µîÀÇ »çÀ¯·Î ÁÖ¹®ÀÌ Ãë¼ÒµÉ ¼ö ÀÖÀ½(ÀÌ °æ¿ì ÀÎÅÍÆÄÅ©µµ¼¿¡¼ °í°´´Ô²² º°µµ·Î ¿¬¶ôÇÏ¿© °íÁöÇÔ) |
¹è¼Û¾È³»
ÀÎÅÍÆÄÅ© µµ¼ »óǰÀº Åùè·Î ¹è¼ÛµÇ¸ç, Ãâ°í¿Ï·á 1~2Àϳ» »óǰÀ» ¹Þ¾Æ º¸½Ç ¼ö ÀÖ½À´Ï´Ù
Ãâ°í°¡´É ½Ã°£ÀÌ ¼·Î ´Ù¸¥ »óǰÀ» ÇÔ²² ÁÖ¹®ÇÒ °æ¿ì Ãâ°í°¡´É ½Ã°£ÀÌ °¡Àå ±ä »óǰÀ» ±âÁØÀ¸·Î ¹è¼ÛµË´Ï´Ù.
±ººÎ´ë, ±³µµ¼Ò µî ƯÁ¤±â°üÀº ¿ìü±¹ Åù踸 ¹è¼Û°¡´ÉÇÏ¿©, ÀÎÅÍÆÄÅ© ¿Ü Ÿ¾÷ü ¹è¼Û»óǰÀÎ °æ¿ì ¹ß¼ÛµÇÁö ¾ÊÀ» ¼ö ÀÖ½À´Ï´Ù.
¹è¼Ûºñ
µµ¼(Áß°íµµ¼ Æ÷ÇÔ) ±¸¸Å |
2,000¿ø (1¸¸¿øÀÌ»ó ±¸¸Å ½Ã ¹«·á¹è¼Û) |
---|---|
À½¹Ý/DVD/ÀâÁö/¸¸È ±¸¸Å |
2,000¿ø (2¸¸¿øÀÌ»ó ±¸¸Å ½Ã ¹«·á¹è¼Û) |
µµ¼¿Í À½¹Ý/DVD/ÀâÁö/¸¸È/ |
2,000¿ø (1¸¸¿øÀÌ»ó ±¸¸Å ½Ã ¹«·á¹è¼Û) |
¾÷üÁ÷Á¢¹è¼Û»óǰ ±¸¸Å |
¾÷üº° »óÀÌÇÑ ¹è¼Ûºñ Àû¿ë |