¼ÒÇÁÆ®¿þ¾î ±â¼úÀÇ ¹ß´Þ °úÁ¤°ú

nMLÀÇ ¿ªÇÒ (PDF)


nML ÇÁ·Î±×·¡¹Ö ½Ã½ºÅÛÀº ¼ÒÇÁÆ®¿þ¾î ±â¼úÀÇ ¹ß´Þ°úÁ¤¿¡¼­ Á¦ 2¼¼´ë ±â¼úÀ» Ãæ½ÇÈ÷ °®Ãá ¾ð¾îÀÌ´Ù. ¿©±â¼­ ¼ÒÇÁÆ®¿þ¾î ±â¼úÀÇ ÃÖÁ¾ ¸ñÇ¥°¡ ¹«¾ùÀÌ°í, ±× ±â¼úÀÌ ¿Ö Áß¿äÇϸç, °Ü¿ì `¡®Á¦ 2¼¼´ë'¶ó´Â ¸»ÀÌ ¹«½¼ ¾ê±âÀÎÁö »ìÆ캸µµ·Ï ÇÏÀÚ.


À̱¤±Ù

-ÇÊÀÚ¼Ò°³¿Í ÀüÀÚ¸ÞÀÏ ÁÖ¼Ò´Â Áö³­´Þ°ú µ¿ÀÏ-


¿¬Àç¼ø¼­

1ȸ 2002. 06 : ´Ù¸¥ »ý°¢ÀÇ Æ², °ª Áß½ÉÀÇ ÇÁ·Î±×·¡¹Ö

2ȸ 2002. 07 : ¼ÒÇÁÆ®¿þ¾î ±â¼úÀÇ ¹ß´Þ °úÁ¤°ú nMLÀÇ ¿ªÇÒ

3ȸ : nML ÇÁ·Î±×·¡¹ÖÀÇ ¾²ÀÓ»õ I

4ȸ : nML ÇÁ·Î±×·¡¹ÖÀÇ ¾²ÀÓ»õ II

5ȸ : nML ¾ð´õ±×¶ó¿îµå Äܼ­Æ®


nML·Î °æÇèÇÒ ¼ö ÀÖ´Â ÇÁ·Î±×·¡¹Ö ½Ã½ºÅÛ ±â¼ú Áß¿¡¼­ C³ª Àڹٷδ °Þ¾î º¼ ¼ö ¾ø´Â °ÍÀº ÇÁ·Î±×·¥ÀÇ ¿À·ù¸¦ ÀÚµ¿À¸·Î ã¾Æ³»´Â ±â¼úÀÇ ÇöÀç ¼öÁØÀÌ´Ù. ¼ÒÇÁÆ®¿þ¾îÀÇ ¿À·ù¸¦ ÀÚµ¿À¸·Î ã¾ÆÁÖ´Â ±â¼úÀº Áö±Ý±îÁö 2¼¼´ë ±â¼úÀÌ ¿Ï¼ºµÆ´Âµ¥, C¿Í ÀÚ¹Ù´Â 1¼¼´ë ±â¼ú¸¸À» °®Ãß°í ÀÖÀ» »ÓÀÌ´Ù. 1¼¼´ë ¿À·ù °ËÁõ ±â¼úÀº 1970³â´ë¿¡ ´Þ¼ºµÈ °ÍÀ¸·Î, »ý±ä °ÍÀÌ À߸øµÈ ÇÁ·Î±×·¥À» ÀÚµ¿À¸·Î ã¾Æ³»´Â ±â¼úÀÌ´Ù. ÀÌ ±â¼úÀÌ ¹®¹ý°ËÁõ(parsing) ±â¼úÀÌ°í, ¿ÏÀüÈ÷ ¿Ï¼ºµÇ¾î ¾î´À ÇÁ·Î±×·¡¹Ö ¾ð¾î¿¡¼­³ª Á¦°øµÇ´Â ±â¼úÀÌ´Ù.

´öÅÿ¡, ÇöÀç ´©±¸µµ ¹®¹ý ¿À·ù¸¦ ¼ÕÀ¸·Î ã¾Æ³»´Â °æ¿ì´Â ¾ø´Ù. C³ª ÀÚ¹Ù°¡ ³õÄ¡°í ÀÖ´Â 2¼¼´ë ¹ö±× Àâ´Â ±â¼úÀº 1990³â´ë¿¡ ¿Ï¼ºµÇ±â ½ÃÀÛÇÑ Å¸ÀÔ°ËÁõ(type checking)À̶ó´Â ±â¼úÀÌ´Ù.  ÀÌ ±â¼úÀº ÇÁ·Î±×·¥ÀÌ ½ÇÇà Áß¿¡ À߸øµÈ °ªÀÌ À߸øµÈ °è»ê°úÁ¤¿¡ ÈÛ¾µ¸± ¼ö ÀÖ´Â °æ¿ì°¡ ¾ø´ÂÁö¸¦ ÄÄÆÄÀÏ·¯°¡ ¹Ì¸® ¾ÈÀüÇÏ°Ô È®ÀÎÇØ ÁØ´Ù. C³ª ÀÚ¹Ù¸¸À» »ç¿ëÇÏ´Â ÇÁ·Î±×·¡¸ÓµéÀº ÀÌ·¸°Ô ¹Ì¸® ¾ö¹ÐÇÏ°Ô È®ÀÎÇØ ÁÖ´Â ½Ç¿ëÀûÀÎ ±â¼úÀÌ °¡´ÉÇÏ´Ù´Â »ç½ÇÀ» ¾ËÁö ¸øÇÑ´Ù.

µû¶ó¼­ C³ª ÀÚ¹Ù¸¸À» °íÁýÇÏ´Â ÇÁ·Î±×·¡¸ÓµéÀº ºÒ¾ÈÇØÇØ¾ß ÇÑ´Ù. 2¼¼´ë ¹ö±× Àâ´Â ±â¼úÀ» ¸Àº» ÇÁ·Î±×·¡¸Ó´Â ±×·¯ÇÑ ±â¼úÀÇ °¡´É¼º¸¶Àúµµ ¾ËÁö ¸øÇÏ°í ÀÖ´Â ÇÁ·Î±×·¡¸Ó¸¦ ½±°Ô ´É°¡ÇÒ ¼ö ÀÖ´Â °ÍÀº »·Çϱ⠶§¹®ÀÌ´Ù. »ç½Ç ÀÌÁ¦´Â 3¼¼´ë ¹ö±× Àâ´Â ±â¼ú(»ý±ä ¸ð½Àµµ ¸ÖÂÄÇÏ°í, ½ÇÇà Áß¿¡ À߸øµÈ °ªÀÌ Èê·¯µéÁöµµ ¾ÊÁö¸¸, ½ÇÇà Áß¿¡ °¡Á®¾ßÇÒ Á¤±³ÇÑ Á¶°ÇÀ» ¸¸Á·½Ãų ¼ö ¾ø´Â ÇÁ·Î±×·¥À» ÄÄÆÄÀÏ·¯°¡ °ËÁõÇØ ³»´Â ±â¼ú)ÀÌ ½ÇÇè½Ç ¼öÁØ¿¡¼­ ¼º°øÀ» °ÅµÎ°í ÀÖ±â±îÁö ÇÏ´Ù. ÀÌ·¸°Ô ²ÙÁØÈ÷ ¹ßÀüÇØ°¡´Â ±â¼úÀÇ ÇÙ½ÉÀ» °æÇèÇØ º» ÇÁ·Î±×·¡¸ÓµéÀÇ Àα¸°¡ ¸¹¾ÆÁú¼ö·Ï ¿ì¸®ÀÇ ÇÁ·Î±×·¡¹Ö ±â¼ú ¼öÁØÀÇ Åä¾çÀº ºñ¿ÁÇØ Áú °ÍÀÌ´Ù.


2¼¼´ë ¹ö±× Àâ´Â ±â¼úÀº ¾ÆÁ÷ ³Î¸® ÆÛÁöÁö ¸øÇß´Ù

¾Æ½±°Ôµµ Áö±Ý °¡Àå ³Î¸® ¾²ÀÌ´Â ½Ã½ºÅÛ ÇÁ·Î±×·¡¹Ö ¾ð¾îÀÎ C¿Í ÀÚ¹Ù µîÀÇ ¾ð¾î´Â 2¼¼´ë ¹ö±× Àâ´Â ±â¼úÀ» Á¦´ë·Î °®ÃßÁö ¸øÇÑ »óÅÂÀÌ´Ù. ¡®Á¦´ë·Î °®ÃßÁö ¸øÇß´Ù¡¯'´Â °ÍÀº ¾î´À Á¤µµ´Â ÄÄÆÄÀÏ·¯°¡ °ËÁõÇØ ÁÖÁö¸¸, ¸¹Àº °æ¿ì ¹®Á¦°¡ ÀÖ´Â µ¥µµ ºÒ±¸ÇÏ°í ÄÄÆÄÀÏ·¯´Â ¾Æ¹«·¸Áöµµ ¾Ê°Ô ÇÁ·Î±×·¥À» Åë°ú½ÃŲ´Ù´Â °ÍÀÌ´Ù. ½ÇÇàµÇ¸é¼­ ¹®Á¦°¡ ¹ß»ýÇÏ´Â °ÍÀ» ¹æÄ¡ÇÏ´Â °ÍÀÌ´Ù. ´ÙÀ½ÀÇ C ÇÁ·Î±×·¥ÀÇ ¿¹¸¦ º¸ÀÚ. ¸Þ¸ð¸® Æ÷ÀÎÅÍ(x)¿Í ±× ¸Þ¸ð¸® ºí·°ÀÇ Å©±â(size)¸¦ ¹Þ¾Æ ±× ºí·°À» Á¤¼ö 0À¸·Î ¸ðµÎ ÃʱâÈ­ÇÏ´Â ÇÔ¼öÀÌ´Ù.


int init(int *x, int size) {

   int i;

   for (i=0;i<size;i++)

   {*(x+i) = 0;}

}


ÀÌÁ¦ ´ÙÀ½°ú °°ÀÌ ¾ÕÀÇ ÇÔ¼ö initÀ» »ç¿ëÇÑ´Ù°í ÇÏÀÚ.


init(malloc(sizeof(char)*10), 10);


ÀÌ ÄÚµå´Â ŸÀÔ¿¡ ¸ÂÁöµµ ¾Ê°í À§ÇèÇÑ ÇÁ·Î±×·¥ÀÌ´Ù. ¸Þ¸ð¸® ºí·°ÀÌ Á¤¼ö(int)ÀÇ ºí·°À̾î¾ß Çϴµ¥ ¹®ÀÚ(char) ºí·°ÀÌ°Å´Ï¿Í ´ë°Ô Á¤¼ö¸¦ Ç¥ÇöÇϴµ¥ 4¹ÙÀÌÆ®¸¦ »ç¿ëÇÏ°í, ¹®ÀÚ¸¦ Ç¥ÇöÇϴµ¥ 1¹ÙÀÌÆ®¸¦ »ç¿ëÇϹǷΠÀÌ¿Í °°ÀÌ ¹®ÀÚ 10°³¸¦ º¸°üÇÒ Å©±âÀÇ ¸Þ¸ð¸® ºí·°À» init ÇÔ¼ö¿¡ ´øÁ®ÁÖ¸é ±× ÇÔ¼ö´Â Á¤¼ö Å©±âÀÇ º¸ÆøÀ¸·Î 10¹ß¦ ¿òÁ÷À̸鼭 0À¸·Î ÃʱâÈ­ ½ÃŲ´Ù. ÇÒ´çÇÑ ¸Þ¸ð¸®(10¹ÙÀÌÆ®) ¹Ù±ù ºÎºÐ±îÁö(40¹ÙÀÌÆ®) 0À¸·Î ÃʱâÈ­ ÇÏ´Â ÀÏÀÌ ¹ú¾îÁö°Ô µÇ´Â °ÍÀÌ´Ù. ÀÌ·¯ÇÑ À§ÇèÇÑ C ÇÁ·Î±×·¥¿¡ ´ëÇؼ­ ÄÄÆÄÀÏ·¯´Â ŸÀÔ °ËÁõÀ» Á¦´ë·Î ¸øÇÏ°í °æ°í¸¸ ÁÙ »ÓÀÌ´Ù.


% gcc t.c

   t.c: In function `alloc':

   t.c:11: warning: passing arg 1 of `init' makes pointer from integer

   without a cast


½ÉÁö¾î´Â ÇÁ·Î±×·¡¸Ó°¡ ÀûÀýÈ÷ ŸÀÔÀ» ¿ì±â¸é(type cast) ¾ÕÀÇ °æ°í¸¶Àú ºÒ°¡´ÉÇÏ°Ô ÇÒ ¼ö ÀÖ´Ù.


init((int *)malloc(sizeof(char)*10), 10);


2¼¼´ë ¹ö±× Àâ´Â ±â¼úÀ» Á¦´ë·Î °®Ãá ¾ð¾î¶ó¸é ´ÙÀ½°ú °°¾Æ¾ß ÇÑ´Ù. ÄÄÆÄÀÏ·¯°¡ ÁÖ¾îÁø ÇÁ·Î±×·¥À» °ËÁõÇؼ­ ¹®Á¦°¡ ¾ø´Ù°í Çß´Ù¸é, Á¤¸»·Î ½ÇÇà Áß¿¡ ¹®Á¦°¡ ¾ø´Ù´Â °ÍÀÌ º¸ÀåµÅ¾ß ÇÑ´Ù. ÀÌ¹Ì ÀÌ ±â¼úÀ» È¿°úÀûÀ¸·Î ±¸ÇöÇÑ ½Ç¿ëÀûÀÎ ¾ð¾îµéÀÌ ¼Ó¼Ó ÃâÇöÇÏ°í ÀÖ°í, ±×·¯ÇÑ ºÎ·ùÀÇ ¾ð¾îµéÀÌ ¹Ù·Î MLÀ̳ª Haskell °è¿­ÀÇ ¾ð¾îÀ̸ç, ÀÌ ½Ã¸®Áî¿¡¼­ ¼Ò°³ÇÒ nMLÀÌ ±× ÇÑ ¿¹°¡ µÈ´Ù.

ÀÌ 2¼¼´ë ¹ö±× Àâ´Â ±â¼úÀº ¾ÆÁ÷Àº ¹®¹ý°ËÁõ ±â¼ú¸¸Å­ ¸ðµç ÇÁ·Î±×·¡¸ÓµéÀÌ ´Ã»ó »ç¿ëÇÏ´Â ±â¼ú·Î ³Î¸® ÆÛÁöÁö´Â ¾Ê¾ÒÀ¸³ª ÀÌ·¯ÇÑ ºÐº° ÀÖ´Â ÇÁ·Î±×·¡¹ÖÀÇ ¼¼°è´Â °ð ÆîÃÄÁú °ÍÀ¸·Î º¸ÀδÙ(ÀÌ·¯ÇÑ ¾ð¾îµéÀÌ ½Ç¿ëÀûÀ¸·Î ¾²ÀÌ´Â ¿¹µé¿¡ ´ëÇÑ ±Ã±ÝÁõÀº http://ropas.kaist.ac.kr/~kwang/functional-anger.html¿¡¼­ Ç®¾îº¼ ¼ö ÀÖÀ» °ÍÀÌ´Ù). 2¼¼´ë ¹ö±× Àâ´Â ±â¼úÀÌ ÇÁ·Î±×·¥ Â¥±â¸¦ ¾ó¸¶³ª ½±°Ô ÇØÁÖ´Â Áö¸¦ °æÇèÇÏ·Á¸é ±×·¯ÇÑ ±â¼úÀ» °®Ãá ¾ð¾î·Î ÇÁ·Î±×·¥À» Çغ¸´Â ¼ö¹Û¿¡´Â ¾ø´Ù. ÀÌ¿Í °ü·ÃÇØ ºñ·Ï ÀÛÀº »ùÇÃÀ̱â´Â ÇÏÁö¸¸, 2¼¼´ë ¹ö±× Àâ´Â ±â¼úÀ» °®Ãá nML·Î ÇÁ·Î±×·¥Çϸ鼭 °ÞÀº ÇлýµéÀÇ À̾߱âµéÀÌ http://ropas.kaist.ac.kr/~kwang/320/02/essay/¿¡ ¸ð¾ÆÁ® ÀÖÀ¸´Ï Âü°íÇϱ⠹ٶõ´Ù.

»ç½Ç ÀÌ 2¼¼´ë ¹ö±× Àâ´Â ±â¼ú·Îµµ ¾ÆÁ÷Àº ¹ÌÈíÇÑ ½ÇÁ¤ÀÌ´Ù. ½ÇÇà Áß¿¡ ¸ðµç °ªÀÌ ºÐº° ÀÖ°Ô ÂøÂø Èê·¯µå´Â ÇÁ·Î±×·¥À̶ó°í Çصµ, »ý°¢´ë·Î ÀÛµ¿ÇÏÁö ¾ÊÀ» ¼ö Àֱ⠶§¹®ÀÌ´Ù. ŸÀÔ¿¡ ¸Â´Â´Ù´Â °ÍÀº ½ÇÀº Ãʺ¸ÀûÀÎ Á¶°ÇÀÏ »ÓÀÌ´Ù. ÈÖ¹ßÀ¯¸¸ÀÌ ºñÇà±âÀÇ ¿£Áø¿¡ Èê·¯µç´Ù´Â °ÍÀÌ °ËÁõµÆ´Ù°í Çصµ, ÈÖ¹ßÀ¯ÀÇ Æø¹ß·ÂÀÌ ¼öÁع̴ÞÀÎ °æ¿ì¶ó¸é ºñÇà±â°¡

¶³¾îÁú ¼ö ÀÖ´Ù. ¶ó¸éÀ» ²úÀÌ´Â °è»ê¿¡ Ç×»ó ¶ó¸é°ú ¹°°ú ºÒÀÌ µé¾î¼±´Ù°í Çصµ, ¹°ÀÌ ÇÑ ¹æ¿ï»ÓÀ̰ųª µé¾î¼± ºÒÀÌ Æ÷Ç×Á¦Ã¶ÀÇ ¿ë±¤·Î Á¤µµ¶ó¸é ¶ó¸éÀÇ ¸ÀÀÌ ¸ÁÃÄÁú ¼ö ÀÖ´Ù. ŸÀÔ¿¡ ¸Â°Ô ÄÄÇ»ÅÍ ÇÁ·Î±×·¥ÀÌ ½ÇÇàµÅµµ »ý°¢ÇÑ °Í°ú´Â ´Ù¸£°Ô ÁøÇàµÇ´Â °æ¿ì, ÀÌ·¯ÇÑ ¹ö±×¸¦ ÀÚµ¿À¸·Î °ËÁõÇÏ´Â ±â¼úÀÌ ÇÊ¿äÇÏ´Ù.

Á¦ 3¼¼´ë ¹ö±× Àâ´Â ±â¼úÀº ÀÌ·¸°Ô È®ÀåµÈ ¹ö±×¸¦  °ËÁõÇÏ´Â ±â¼úÀ» ¸ñÇ¥·Î ÇÑ´Ù. »ý±ä ¸ð½Àµµ ¸ÖÂÄÇÏ°í, ½ÇÇà Áß¿¡ À߸øµÈ °ªÀÌ Èê·¯µéÁöµµ ¾ÊÁö¸¸, ½ÇÇà Áß¿¡ °¡Á®¾ßÇÒ Á¤±³ÇÑ Á¶°ÇÀ» ¸¸Á·½Ãų ¼ö ¾ø´Â ÇÁ·Î±×·¥À» Áý¾î³»´Â ±â¼úÀÌ´Ù.

ÀÌ ±â¼úÀÇ ¾ó°³´Â ´ÙÀ½°ú °°´Ù. ÇÁ·Î±×·¥ÀÌ ½ÇÇà Áß¿¡ ¸¸Á·ÇØ¾ß ÇÏ´Â Á¤¹ÐÇÑ ¼Ó»çÁ¤ÀÌ ¾ö¹ÐÇÑ ³í¸®½ÄÀ¸·Î Á¤ÀǵȴÙ. ÁÖ¾îÁø ÇÁ·Î±×·¥ÀÌ ½ÇÇà Áß¿¡ ±× ³í¸®½ÄÀ» °ÅÁþÀ¸·Î ¸¸µé ¼ö ÀÖ´Â °¡´É¼ºÀÌ Á¶±ÝÀÌ¶óµµ ÀÖ´ÂÁö¸¦ °ËÁõÇÑ´Ù. ÀÖÀ¸¸é, ±× ÇÁ·Î±×·¥Àº ¹ö±×°¡ ÀÖÀ» ¼ö ÀÖ´Â °ÍÀÌ°í, ±× °¡´É¼ºÀÌ ÀüÇô ¾ø´Ù°í ÆÇÁ¤µÇ¸é ±× ÇÁ·Î±×·¥Àº ¹ö±×°¡ ÀüÇô ¾ø´Â °ÍÀÌ´Ù. ¡®°¡´É¼ºÀÌ Á¶±ÝÀÌ¶óµµ ÀÖ´ÂÁö¡¯¶ó´Â Ç¥ÇöÀ» ¾´ °ÍÀº ¹ö±×°¡ ¾ø´Âµ¥µµ ºÒ±¸ÇÏ°í ¹ö±×°¡ ÀÖ´Ù°í °á·Ð³»¸®´Â °æ¿ì°¡ »ý±â±â ¶§¹®ÀÌ´Ù(º¸¼öÀûÀÎ °ÍÀÌ´Ù). ÇÏÁö¸¸ ¾ÈÀüÇÑ °ÍÀº º¸ÀåµÈ´Ù. ¹ö±×°¡ ¾ø´Ù°í °á·Ð ³»·ÁÁö¸é, Á¤¸»·Î ¾ø´Ù´Â °ÍÀº º¸ÀåµÈ´Ù. ¾ÈÀüÇϱâ´Â ÇÏÁö¸¸ ¿ÏÀüÇÏÁö´Â ¸øÇÑ °ËÁõÀÌ´Ù. ÇÏÁö¸¸ ¿ì¸®´Â ¿ÏÀüÇÏÁö ¸øÇÏ´Ù´Â °Í¿¡ ¸¸Á·ÇØ¾ß ÇÒ °Í °°´Ù. ¿ÏÀüÇÑ °ËÁõÀÌ ºÒ°¡´ÉÇÏ´Ù´Â °ÍÀº Áõ¸íµÈ »ç½ÇÀ̱⠶§¹®ÀÌ´Ù. ´Ù½Ã ¾ÕÀÇ C ÇÔ¼ö initÀÇ ¿¹¸¦ º¸ÀÚ.


int init(int *x, int size) {

   int i;

   for (i=0;i<size;i++)

   {*(x+i) = 0;}

}


ÀÌ ÇÔ¼ö°¡ Á¦´ë·Î ÀÛµ¿Çϱâ À§ÇÑ Á¶°ÇÀº ´Ü¼øÈ÷ ŸÀÔÀÌ ¸Â¾Æ¾ß ÇÏ´Â °Í»Ó¸¸ ¾Æ´Ï¶ó, x°¡ °¡¸®Å°´Â ¸Þ¸ð¸® ºí·°ÀÇ Å©±â°¡ ÃÖ¼ÒÇÑ ¡®Á¤¼öÅ©±â X size'¿Í °°¾Æ¾ß ÇÑ´Ù.


block-size(x) >= sizeof(int) X size


Á¤¼ö Å©±âÀÇ º¸ÆøÀ¸·Î size¸¸Å­ ¿òÁ÷À̸ç 0À¸·Î ÃʱâÈ­ ½ÃÅ°¹Ç·Î, ¹Þ¾Æ ³õÀº ¸Þ¸ð¸® ºí·°Àº ÀÌ·¯ÇÑ °ÉÀ½°ÉÀ̸¦ ¸ðµÎ Æ÷ÇÔÇÒ Á¤µµ·Î ³Ð¾î¾ß ÇÑ´Ù. ÀÌ Á¶°ÇÀ» È®ÀÎÇϱâ À§Çؼ±, ¾ÕÀÇ ÇÔ¼ö°¡ È£ÃâµÇ´Â °÷ ¸¶´Ù, x¿Í size°¡ ¾Õ Á¶°ÇÀ» ¸¸Á·ÇÏ´Â Áö È®ÀÎÇØ¾ß ÇÑ´Ù. ¸¸ÀÏ¿¡, x°¡ °¡¸®Å°´Â ºí·°ÀÇ Å©±â¸¦ ¹Ì¸® ¾Æ´Â µ¥ ½ÇÆÐÇÑ´Ù¸é, ¾ÕÀÇ Á¶°ÇÀ» È®ÀÎÇÒ ¹æ¹ýÀÌ ¾øÀ¸¹Ç·Î ¹ö±×°¡ ÀÖ´Â ÇÁ·Î±×·¥À¸·Î °£ÁÖÇØ¾ß ¾ÈÀüÇÏ´Ù.

ÇÁ·Î±×·¥ÀÌ º¸ÁõÇØ¾ß ÇÏ´Â ¼ºÁúÀ» °ËÁõÇÒ ¶§, ¡®Àß ¸ð¸£°Ú´Â¡¯ °æ¿ì¸¦ ÃÖ¼ÒÈ­ ½ÃÅ°°í, ±× °ËÁõÀÌ Ç×»ó ÀÚµ¿À¸·Î, ±×¸®°í ÀûÀº ºñ¿ëÀ¸·Î °¡´ÉÇϵµ·Ï ÇÏ´Â ±â¼ú, ÀÌ·¯ÇÑ 3¼¼´ë ¹ö±× Àâ´Â ±â¼úÀÌ ¼º¼÷µÇ´Â ½Ã±â´Â ³«°üÀûÀ¸·Î Àâ¾Æ ¾ÕÀ¸·Î 20³â Á¤µµ ÀÌÈÄ°¡ ¾Æ´Ò±î ½Í´Ù.

±×¶§°¡ µÇ¸é ¸¹Àº »ç¶÷µéÀÌ ¾²´Â ÇÁ·Î±×·¡¹Ö ¾ð¾îµéÀº Àû¾îµµ 2¼¼´ë ¹ö±× Àâ´Â ±â¼úÀº Á¦´ë·Î °®Ãß¾îÁø °ÍµéÀÌ µÉ °ÍÀÌ´Ù. Áö±Ý ¿ì¸®°¡ 1¼¼´ë ¹ö±× Àâ´Â ±â¼úÀ» °®Ãá ¾ð¾î¸¦ ´ç¿¬ÇÑ °ÍÀ¸·Î »ý°¢ÇÏ°í ¾²°í ÀÖµíÀÌ ¸»ÀÌ´Ù.


nMLÀÇ À§Ä¡¿Í Ư¡

ÀÌ·¯ÇÑ ±â¼ú ¹ßÀüÀÇ ¸Æ¶ô¿¡¼­ nML ÇÁ·Î±×·¡¹Ö ¾ð¾î´Â 2¼¼´ë ¹ö±× Àâ´Â ±â¼úÀ» Á¦´ë·Î °®Ãß°í ÀÖ´Â »óÅÂÀÌ°í, 3¼¼´ë ¹ö±× Àâ´Â ±â¼ú¿¡ ´ëÇÑ ¿¬±¸°á°ú¸¦ ½Ç¿ëÀûÀ¸·Î ´ã¾Æ³¾ ´ë»óÀ¸·Î ÁغñÇØ ³õÀº »óŶó°í ÇÒ ¼ö ÀÖ´Ù. ÀÌ·± ¾ð¾î·Î ÇÁ·Î±×·¥À» ÀÛ¼ºÇϸ鼭 ¾òÀ» ¼ö ÀÖ´Â ±âŸ ÀåÁ¡À» Á¤¸®ÇØ º¸¸é ´ÙÀ½°ú °°´Ù.


¡ß ÀÛ°í °£´ÜÇÏ´Ù : ¹®¹ýÀÌ ÀÛ°í °£´ÜÇÒ »Ó¸¸ ¾Æ´Ï¶ó ±× Àṉ̀¸Á¶(semantics) ¶ÇÇÑ °£°áÇÏ´Ù. Áö³­ È£¿¡ ¼Ò°³ÇÑ ¡®°ª Áß½ÉÀÇ ¾ð¾î¡¯°¡ °®°Ô µÇ´Â ¼ºÁúÀÏ °ÍÀÌ´Ù. ±Ø¸íÇÑ ¿¹·Î, MLÀÇ Âü°í¼­µéÀÌ 200ÆäÀÌÁö¿¡¼­ ÃÖ´ë 400ÆäÀÌÁö¸¦ ³ÑÁö   ¾Ê´Â ¹Ý¸é¿¡ ÀÚ¹Ù³ª C++ÀÇ °æ¿ì´Â ´ëºÎºÐ 600ÆäÀÌÁö°¡ ³Ñ´Â´Ù.


¡ß ¾ÈÀüÇÏ´Ù : ¼öÇàÁßÀÎ ÇÁ·Î±×·¥ÀÇ ¿ÏÀüÇÑ ¾ÈÁ¤¼ºÀÌ º¸ÀåµÇ¾î ÀÖ´Ù. Áï, ÄÄÆÄÀÏ·¯¸¦ Åë°úÇÑ ÇÁ·Î±×·¥Àº ½ÇÇà Áß¿¡ ÆÄÇàÀûÀ¸·Î ÁߴܵǴ °æ¿ì°¡(core dump³ª segmentation fault µî) ¹ß»ýÇÏÁö ¾Ê´Â´Ù. ÀÌ°ÍÀº ¾ð¾î °®Ãß°í ÀÖ´Â °­·ÂÇÑ Å¸ÀÔ ½Ã½ºÅÛ ¶§¹®Àε¥, ML(Haskellµµ ¸¶Âù°¡Áö)¿¡¼­´Â ƯÈ÷, ŸÀÔ °Ë»ç¸¦ ŸÀÔ À¯Ã߸¦ ÀÌ¿ëÇØ ÀÚµ¿À¸·Î Çϱ⠶§¹®¿¡ ÇÁ·Î±×·¡¸Ó°¡ º¯¼öÀÇ Å¸ÀÔÀ» Ç¥±âÇÒ ÇÊ¿ä°¡ ¾ø´Ù. ÀÌ ±â¼úÀÌ ¾Õ¼­ ¾ê±âÇÑ 2¼¼´ë ¹ö±× Àâ´Â ±â¼úÀÌ´Ù.


¡ß ŸÀÔ¿¡ ¾ô¸ÅÀÌÁö ¾Ê´Â ÇÔ¼öµµ Á¤ÀÇÇÒ ¼ö ÀÖ´Ù : ÇϳªÀÇ ÇÔ¼ö·Î, ŸÀÔÀº ´Ù¸£Áö¸¸ ÇÏ´Â ÀÏÀÌ °°Àº ÇÔ¼ö¸¦ Ç¥ÇöÇÒ ¼ö Àֱ⠶§¹®¿¡ ÇÁ·Î±×·¥ÇϱⰡ °æÁ¦ÀûÀÌ°í, ŸÀÔ °Ë»ç¸¦ ÇÏ´Â ¾ð¾î°¡ °®´Â °æÁ÷¼ºÀÌ ¾ø´Ù. À̰͵µ ¸¶Âù°¡Áö·Î 2¼¼´ë ¹ö±× Àâ´Â ±â¼ú ´öÅÃÀÌ´Ù. ŸÀÔ °ËÁõÀ» ÇÏ´Â ÆĽºÄ®À̳ª ÀÚ¹Ù°¡ ³õÄ¡´Â ±â¼úÀÌ µÇ°Ú´Ù.


¡ß ÆíÇâµÈ ÇÁ·Î±×·¡¹Ö °ü¼º¿¡¼­ ¹þ¾î³¯ ¼ö ÀÖ´Ù : ÇÔ¼ö°¡ ƯÀÌÇÑ ´ë»óÀÌ ¾Æ´Ï°í, ¿©Å¸ ´Ù¸¥ °ª°ú ±¸ºÐ ¾øÀÌ (higher-order  functions) ´Ù·ç¾îÁø´Ù. C³ª ÀÚ¹Ù µîÀÇ ¾ð¾î¿¡¼­ ¾î´À»õ ¿ì¸®¿¡°Ô ½º¸çµç ÇÁ·Î±×·¡¹Ö °ü¼ºÀº ÇÔ¼ö°¡ ƯÀÌÇؼ­ Á¤¼ö³ª Æ÷ÀÎÅÍ µî°ú ´Þ¸®, ÇÔ¼ö°¡ ÇÔ¼ö¸¦ ¸¸µé¾î ³»°Å³ª ÇÔ¼ö°¡ ÀÚÀ¯·Ó°Ô µ¥ÀÌÅÍ·Î Ãë±ÞµÇÁö ¸øÇÑ´Ù. ÇÔ¼ö¸¦ ÀúÀåÇÏ°í ½ÍÀ¸¸é ÇÔ¼ö Æ÷ÀÎÅ͸¦ ½á¾ß ÇÏ°í, Æ÷ÀÎÅÍ·Î ÀúÀåµÈ ÇÔ¼ö¸¦ ºÎ¸£·Á¸é ƯÀÌÇÏ°Ô ÇØ¾ß ÇÑ´Ù.


¡ß ¸Þ¸ð¸® ÁÖ¼Ò³ª ÁöÁ¤¹®(assignment) µîÀ¸·Î ¹ß»ýÇÏ´Â ¸Þ¸ð¸® ¹ÝÀÀµéµµ(side-effect µµ) ¾Æ¹« ¹®Á¦¾øÀÌ Ç¥ÇöÇÒ ¼ö ÀÖ´Ù.


¡ß Á¤Á¦µÈ ¸ðµâ 󸮱â´ÉÀ» °®Ãß°í ÀÖ´Ù : ´ëÇü ¼ÒÇÁÆ®¿þ¾î °³¹ß¿¡ ²À ÇÊ¿äÇÏ°í ¾ÈÀüÇÑ ºÐ¸® ÄÄÆÄÀÏ ±â´É(separate  compilation)ÀÌ Á¦°øµÇ¾î ÀÖ´Ù. ¸ðµâÀ» µû·Î ÄÄÆÄÀÏÇصµ ÄÄÆÄÀÏ·¯°¡ ŸÀÔ ¿À·ù¸¦ ¾ÈÀüÇÏ°Ô °ËÁõÇØ ÁØ´Ù. ´õ±º´Ù³ª, ¸ðµâÀ» ÀϹÝÈ­ ½ÃÄѼ­(ÆĶó¹ÌÅͶóÀÌÁî, ¸ðµâÀ») Á¤ÀÇÇÒ ¼ö Àֱ⠶§¹®¿¡, ÇϳªÀÇ ¸ðµâÀ» ÇÊ¿ä¿¡ µû¶ó ±¸Ã¼È­Çؼ­ Àç»ç¿ëÇÒ ¼ö ÀÖ´Ù. ¶ÇÇÑ ´ëÇü ÇÁ·Î±×·¥ °³¹ßÀÇ Çʼö ´ö¸ñÀÎ, µû·Îµû·Î Æ÷ÀåÇϱâ(modularity)¿Í ¼Ó ³»¿ëÀ» ½Å°æ¾²Áö ¾Ê°Ô Çϱâ(data abstraction) µîÀ» ÇÁ·Î±×·¡¸Ó°¡ Á¦´ë·Î Àß Àû¿ëÇÏ°í ÀÖ´ÂÁö¸¦ ÄÄÆÄÀÏ·¯°¡ °ËÁõÇØÁØ´Ù. ÇÁ·Î±×·¡¸Ó°¡ ¸ðµâÀ» Á¤ÀÇÇÒ ¶§ ¾ÕÀÇ ´ö¸ñ¿¡ ¸Âµµ·Ï Á¤ÀÇÇÏ°Ô µÇ´Âµ¥, ±× ¸ðµâÀ» »ç¿ëÇÏ´Â ÆÄÆ®¿¡¼­ ´ö¸ñ¿¡ ¾î±ß³ª°Ô »ç¿ëµÇ´Â °æ¿ì°¡ Ȥ½Ã ÀÖ´ÂÁö ÀÚµ¿À¸·Î °ËÁõÇØ ÁØ´Ù. ÀÌ °ËÁõµµ nMLÀÌ °®°í Àִ ŸÀÔ ½Ã½ºÅÛ ´öÅÿ¡ °¡´ÉÇÏ°Ô µÈ´Ù.


¡ß ÀÚµ¿À¸·Î ¸Þ¸ð¸®¸¦ °ü¸®ÇÑ´Ù : È¿À²ÀûÀÎ ¸Þ¸ð¸® ÀçÈ°¿ë ½Ã½ºÅÛ(garbage collection)ÀÌ Á¦°øµÇ±â ¶§¹®¿¡ ÇÁ·Î±×·¡¸Ó°¡ ¸Þ¸ð¸®ÀÇ ºÎÁ·À̳ª Àç»ç¿ë µî¿¡ ´ëÇÑ ºÎ´ã¿¡¼­ ÀÚÀ¯·Ó´Ù.


¡ß ¿¹¿Ü»óȲ °ü¸®(exception handling)°¡ °£´ÜÇÏ´Ù : ÀÌ°ÍÀ» ÀÌ¿ëÇؼ­ ÇÁ·Î±×·¥ÀÇ ½ÇÇà Áß¿¡ ¹ß»ýÇÒ ¼ö ÀÖ´Â ±ä±Þ»óȲÀ»(¿¹¸¦ µé¸é, x/y¿¡¼­ y°ªÀÌ 0ÀÎ °æ¿ì) Á¤È²¿¡ ¸Â°Ô ÇÁ·Î±×·¡¸Ó°¡ ÀûÀýÈ÷ ¹ß»ý½ÃÅ°°í ó¸®ÇÒ ¼ö ÀÖ´Ù. ƯÈ÷ nML¿¡¼­´Â ¹ß»ýÇϴµ¥ 󸮵ÇÁö ¸øÇÒ ¼ö ÀÖ´Â ¿¹¿Ü»óȲÀÌ ¾î¶²  °ÍÀÌ ÀÖ´ÂÁö ÄÄÆÄÀÏ·¯°¡ ÀÚµ¿À¸·Î °ËÁõÇØ ÁØ´Ù. ÀÚ¹Ù¿¡¼­¿Í °°ÀÌ ÇÁ·Î±×·¡¸Ó°¡ ÇÔ¼ö¸¶´Ù ¾î¶² ¿¹¿Ü»óȲÀÌ ¹ß»ýÇÒ ¼ö ÀÖ´ÂÁö ¼±¾ðÇÒ ÇÊ¿ä°¡ ¾ø´Ù.


¡ß Á¤ÇüÀûÀÎ Àṉ̀¸Á¶¸¦ °®Ãß°í ÀÖ´Ù : ÇÁ·Î±×·¥À» ÀÌÇØÇÏ´Â µ¥ ÇÊ¿äÇÑ Á¤È®ÇÑ Á¤ÀÇ°¡ Á¦°øµÇ¾î ÀÖ´Ù. µû¶ó¼­ ÇÁ·Î±×·¥ÀÇ Àǹ̿¡ È¥µ¿ÀÇ ¿©Áö°¡ ¾øÀ¸¹Ç·Î ÇÁ·Î±×·¥À» ºÐ¼®ÇÏ°í °ü¸®ÇÏ´Â ÀÛ¾÷ÀÌ ¿ëÀÌÇÏ´Ù.


¡ß ÇÁ·Î±×·¡¹ÖÀÇ ¹ÌÇÐ : ´ëÇüÀÇ °í³­µµ ÇÁ·Î±×·¥ÀÌ µå·¯³»´Â º¹À⼺À» ´Ù·ê ¼ö ÀÖ´Â ÇÁ·Î±×·¡¹Ö ¿ø¸®¿Í ¹ÌÇÐÀÌ ÀÚ¿¬½º·´°Ô Ç¥ÇöµÈ´Ù. °ª Áß½ÉÀÇ ÇÁ·Î±×·¡¹ÖÀ» Áö¿øÇϱ⠶§¹®¿¡ ÁÖÀåÇÒ ¼ö ÀÖ´Â ´ö¸ñÀÏ °ÍÀÌ´Ù.


Áö³­ È£¿¡ À̾î ÀÌ°ÍÀ¸·Î nML¿¡ ´ëÇÑ ¿ÀÇÁ´×À» ¸¶Ä¡±â·Î ÇÏÀÚ. ª°Ô Á¤¸®ÇØ º¸¸é, nML·Î ÇÁ·Î±×·¥À» Â¥¸é °ª Áß½ÉÀÇ °£´ÜÇÑ »ý°¢À¸·Î ÇÁ·Î±×·¥À» Â¥¸é¼­ ½Ç¿ëÀûÀÎ ÇÁ·Î±×·¥À» ±¸ÃàÇÒ ¼ö ÀÖÀ» »Ó ¾Æ´Ï¶ó, ÇöÀçÀÇ ÇÁ·Î±×·¡¹Ö ±â¼ú¼öÁØ(2¼¼´ë ¹ö±× Àâ´Â ±â¼ú)ÀÇ Á¦´ë·Î µÈ ¸ð½ÀÀ» °æÇèÇÏ°Ô µÉ °ÍÀ̶ó´Â °ÍÀÌ´Ù. ´ÙÀ½ È£ºÎÅÍ´Â º»°ÝÀûÀÎ nML ÇÁ·Î±×·¡¹Ö¿¡ ´ëÇØ ´Ù·ê °ÍÀÌ´Ù.


Á¤¸® : °­°æ¼ö elegy@sbmedia.co.kr


==================================ÀÌÇÏ ¹Ú½º=============================

KAIST 2002³â Àü»ê°ú 3Çг⠴ë»ó ÇÁ·Î±×·¡¹Ö ¾ð¾î ¼ö°­»ýµéÀÇ nML¿¡ ´ëÇÑ ¼Ò°¨

ÇÊÀÚ´Â Áö³­ 2³â°£ nML ÇÁ·Î±×·¡¹Ö ½Ã½ºÅÛÀ» ÀÌ¿ëÇØ KAIST ÇкΠ3Çг⠴ë»óÀÇ ÇÁ·Î±×·¡¹Ö ¾ð¾î °­ÀǸ¦ ¿î¿µÇØ ¿Ô´Âµ¥, ¿©±â¼­ ÇлýµéÀÇ ¼Ò°¨À» ÀÖ´Â ±×´ë·Î ÀüÇÑ´Ù. À̸¦ ÅëÇØ nMLÀÇ Æ¯Â¡À» Àß ¾Ë ¼ö ÀÖÀ» °ÍÀÌ´Ù.


"¿©Å¸ ¾ð¾î·Î´Â ±¸ÇöÇϱâ Èûµç °ÍµéÀÌ nML·Î´Â ½±°Ô ±¸ÇöµÇ´Â °ÍÀ» º¸°í Âü ½Å±âÇß´ø ±â¾ïÀÌ ³³´Ï´Ù"

"¸¸¾à ¾î¶°ÇÑ ÇÁ·Î±×·¡¹Ö ¾ð¾îµµ ¸ð¸£´Â »óÅ¿¡¼­ nMLÀÌ ÀÚ¿¬½º·´°Ô ¹Þ¾ÆÁú ¼ö ÀÖÀ»Áö ¹¯´Â´Ù¸é ¡®Yes¡¯·Î ´ë´äÇÒ °ÍÀÌ´Ù. ´Ù¸¥ ¾ð¾îº¸´Ù ½±°í ¶Ù¾î³ª´Ù´Â °ÍÀº ¾Æ´Ï´Ù."

"´Ù¸¥ °ú¸ñ ¼÷Á¦, ÇÁ·ÎÁ§Æ®¿¡¼­ C³ª ÀڹٷΠ¥¾ß µÇ´Â °É º¸¸é, nML·Î Â¥°í ½Í´Ù´Â »ý°¢ÀÌ µì´Ï´Ù. nML ÇÁ·Î±×·¡¹ÖÀÌ Áö±ÝÀº È®½ÇÈ÷ ÆíÇÏ°í »ý°¢Çϱ⵵ ÆíÇϱ¸¿ä."

"nML ÇÁ·Î±×·¡¹ÖÀº »ý°¢ÇÏ´Â ¹æ½ÄÀÌ ³Ê¹« Àç¹ÌÀÖ½À´Ï´Ù."

"nMLÀº ±²ÀåÈ÷ Àΰ£Áß½É, °³³ä Áß½ÉÀÇ ¾ð¾î¶ó°í ´À²¼½À´Ï´Ù."

"Ãʱ⿡´Â ´çȲÇÏ°í ¾î»öÇÑ Á¡ÀÌ ¸¹¾Ò½À´Ï´Ù. ÇÏÁö¸¸ Çϸé ÇÒ¼ö·Ï, ³»°¡ »ý°¢ÇÏ´Â ¹Ù¸¦ ±×´ë·Î ÇÁ·Î±×·¥À¸·Î ¿Å±æ ¼ö ÀÖ´Ù´Â Å« ÀåÁ¡À» ¹ß°ßÇÒ ¼ö ÀÖ¾ú½À´Ï´Ù."

"C³ª C++ µîÀ» Â¥¸é¼­ »ý°¢ÀÌ Á¡Á¡ º¹ÀâÇÏ°Ô ²¿¿©¼­ ÇÁ·Î±×·¥À» Â¥´Â µ¥ ¾Ö¸Ô´Â °æ¿ì°¡ ¸¹¾Ò´Âµ¥ nMLÀº °£´ÜÇϸ鼭µµ ¿øÇÏ´Â °á°ú¸¦ Á¤È®ÇÏ°Ô ¾ò¾î³»¼­ ÇÁ·Î±×·¡¹Ö ÇϱⰡ ÁÁ¾Ò½À´Ï´Ù."

"nML ÇÁ·Î±×·¡¹ÖÀ» Çϸ鼭 ´À²¼´ø Á¡ Áß¿¡ °¡Àå Àλó ±í¾ú´ø °ÍÀº ÀÏ´Ü ÄÄÆÄÀÏÀ» ¼º°øÇÏ°í, ÇÁ·Î±×·¥ÀÌ µ¹¾Æ°¥ °ÍÀ̶ó ±â´ëÇÏ°í »øÇàÇßÀ» ¶§ Á¤¸» 'Á¦´ë·Î' µ¹¾Æ°¡´Â °æ¿ì°¡ ¸¹¾Ò´Ù´Â Á¡ÀÔ´Ï´Ù. C++ µîÀÇ ¾ð¾î´Â ÄÄÆÄÀÏ ¿¡·¯¸¦ ¸ðµÎ ¾ø¾Ø ÈÄ¿¡, ·±Å¸ÀÓ ¿¡·¯¸¦ ¾ø¾Ö´Â µ¥¿¡µµ ¸¹Àº ½Ã°£ÀÌ ¼ÒºñµÇÁö¸¸, nML ÇÁ·Î±×·¡¹Ö¿¡¼­´Â ÀÏ´Ü ÄÄÆÄÀÏÀÌ ¼º°øÇÏ¸é ´ëºÎºÐ ³» »ý°¢´ë·Î µ¹¾Æ°¡´Ï±î óÀ½¿¡´Â ¸Å¿ì ½Å±âÇß½À´Ï´Ù."

"nMLÀº ¸í·É¾î°¡ ¸¹Áö ¾Ê¾Æ¼­ ½±°Ô ¾Ë ¼ö ÀÖ¾ú½À´Ï´Ù."

"nMLÀ» Çϸ鼭 Á¤¸» ÇÁ·Î±×·¥À» Â¥°í ±ò²ûÇÑ ´À³¦ÀÌ µç´Ù´Â °ÍÀÌ °¡Àå ÀλóÀûÀ̳׿ä. C++ °°Àº °Í¿¡¼± Á» ´À³¢±â Èûµé¾úÁÒ."

"½½½½ C·Î Â¥´Â °Ô ¿Ö ºÒÆíÇÑÁö ´À²¸Áö±âµµ ÇÕ´Ï´Ù."

"¸ÚÁö´Ù. ƯÈ÷ µð¹ö±ëÇÒ ¶§. ¼ÖÁ÷È÷ µð¹ö±ëÇÒ °Íµµ ¾ø°Ô ÇØÁÖ´Â °Í °°Áö¸¸."

"¹«¾ùº¸´Ùµµ nMLÀÌ ¿ì¸®ÀÇ ¾ð¾î¶ó´Â °ÍÀÌ ÀÚ¶û½º·´½À´Ï´Ù!"

"nMLÀ» óÀ½ Á¢ÇßÀ» ¶§ 'Âü ¾î·Æ´Ù ±×¸®°í ÀÌ·± ¾ð¾î¸¦ ¿Ö ¾²³ª'ÇÏ´Â »ý°¢À» Çß½À´Ï´Ù. ÇÏÁö¸¸ ½Ã°£ÀÌ Á¶±Ý¾¿ Áö³ª°í, C++·Î ÇÁ·Î±×·¥À» Â¥´Ùº¸´Ï '¾Æ ÀÌ°Å nML·Î ¾²¸é ÆíÇÒÅÙµ¥'¶ó´Â »ý°¢ÀÌ ÀÚÁÖ µé¾ú½À´Ï´Ù. nMLÀÌ Á» ´õ ÇÁ·Î±×·¡¹Ö ¾ð¾î¿¡ ´ëÇÑ ½Ã°¢À» ³ÐÈ÷´Â µ¥ µµ¿òÀ» ÁÖ¾ú½À´Ï´Ù."

"¹º°¡ µüµü ¸Â¾Æ µé¾î°¡´Â °ÍÀÌ Áö±Ý±îÁö¿Í ´Ù¸¥ ÇÁ·Î±×·¡¹ÖÀÇ ¿ø¸®¸¦ ¹è¿ï ¼ö ÀÖ¾ú½À´Ï´Ù."

"ÆÛÁñÀÌ ¸ÂÃçÁú ¶§ÀÇ Äè°¨°°ÀÌ ÇϳªÇϳª ³» »ý°¢´ë·Î ¿òÁ÷ÀÌ´Â °Ô Àç¹ÌÀÖ¾ú½À´Ï´Ù. nMLÀ̶õ ¾ð¾î´Â Âü ÆíÇÑ°Í °°¾Æ¿ä. óÀ½¿¡´Â Àͼ÷ÇÏÁö ¾Ê¾Æ ÀûÀÀÇϱâ Èûµé¾ú´Âµ¥ Áö±ÝÀº C³ª ÀÚ¹Ùº¸´Ù Æí¸®ÇÏ´Ù´Â °ÍÀÌ ´À²¸Áý´Ï´Ù. C¿¡¼­´Â ³Ê¹« »ý°¢ÇØ¾ß µÉ °ÍÀÌ ¸¹°Åµç¿ä."

"¾ÆÁ÷Àº ºÎÁ·ÇÏÁö¸¸ nMLÀÌ Á¤¸» ¾ÈÁ¤ÀûÀÎ ¾ð¾î¶ó´Â °ÍÀ» ¾Ë¾Ò½À´Ï´Ù. type checking ¶ÇÇÑ Àß µÇ´Â ¾ð¾î¶ó´Â Á¡¿¡¼­ »ó´çÈ÷ ¾ÈÀüÇÑ ¾ð¾îÀÔ´Ï´Ù."

"°ª Áß½ÉÀÇ ÇÁ·Î±×·¡¹Ö. óÀ½¿¡´Â Áö±Ý±îÁö ÈçÈ÷ ¾²´ø assignment°¡ µÇÁö ¾Ê¾Æ¼­ ¸¹ÀÌ Èûµé¾ú½À´Ï´Ù. ÇÏÁö¸¸ nMLÀû ÇÁ·Î±×·¡¹Ö ¹æ¹ýÀÌ ÈξÀ ´õ ¼öÇÐÀû ³í¸®ÀûÀ¸·Î ¸Â´Ù´Â »ç½ÇÀ» ¾Ë°í¼­´Â ¾ÆÁ÷Àº ºÎÁ·ÇÏÁö¸¸ nMLÀÌ Á¤¸» ¾ÈÁ¤ÀûÀÎ ¾ð¾î¶ó´Â °ÍÀ» ¾Ë¾Ò½À´Ï´Ù. type checking ¶ÇÇÑ Àß µÇ´Â ¾ð¾î¶ó´Â Á¡¿¡¼­ »ó´çÈ÷ ¾ÈÀüÇÑ ¾ð¾îÀÔ´Ï´Ù."

"C¿¡ ºñÇØ ¿ùµîÈ÷ »ç¿ëÇϱâ Æí¸®Çß°í, ÁÁ¾Ò½À´Ï´Ù."

"¾ÆÁ÷µµ nML ÇÁ·Î±×·¡¹Ö¿¡ ±×¸® ´É¼÷ÇÏÁö´Â ¾ÊÁö¸¸ óÀ½ nML ÇÁ·Î±×·¡¹ÖÀ» ÇßÀ» ¶§¿¡´Â Á¤¸» »ý¼ÒÇؼ­ ¸¹ÀÌ ¾î·Æ°Ô ´À²¸Á³½À´Ï´Ù. ±×¸®°í óÀ½¿£ C³ª ÀÚ¹Ù¿Í ºñ±³Çؼ­ ÀÌ·¸°Ô ´Ü¼øÇÏ°Ô »ý±ä ¾ð¾î·Î ÃæºÐÈ÷ º¹ÀâÇÑ ÇÁ·Î±×·¡¹ÖÀ» ÇÒ ¼ö ÀÖÀ»Áö Àǹ®½º·¯¿ü½À´Ï´Ù. ±×·¸Áö¸¸ Áö±ÝÀº ¿ÀÈ÷·Á C³ª ÀÚ¹Ùº¸´Ù ´õ °£´ÜÇÏ°Ô ÇÁ·Î±×·¡¹ÖÀ» ÇÒ ¼ö ÀÖÀ» °Í °°Àº »ý°¢ÀÌ µì´Ï´Ù. ÄÄÇ»ÅÍ »çÀ̾𽺸¦ °øºÎÇÏ´Â µ¥ ÀÖ¾î C³ª ÀÚ¹Ùº¸´Ù nMLÀ» ¸ÕÀú Á¢ÇÑ´Ù¸é ´õ µµ¿òÀÌ µÉ °Í °°±âµµ ÇÕ´Ï´Ù."

"¸Å¿ì °£´ÜÇÏ°í ±ò²ûÇÏ°í ³í¸®ÀûÀÎ ¾ð¾î¿´´Ù. ÇÁ·Î±×·¡¹ÖÀÇ ¾Æ¸§´Ù¿òÀ» ´À³¥ ¼ö ÀÖ´Â ±×·± ¾ð¾î¿´´Ù."

"ÀڷᱸÁ¶³ª ¾Ë°í¸®ÁòÀ» ±×´ë·Î Ç¥ÇöÇÒ ¼ö ÀÖ´Ù´Â °Ô Àλó ±í¾ú½À´Ï´Ù. ´Ù¸¥ ¾ð¾î¸¦ ½á¿Â »ç¶÷À̶ó¸é óÀ½¿¡´Â ±âÁ¸ÀÇ ¾ð¾î¿¡ Àͼ÷ÇØÁ® ÀÖ¾î nML µîÀÇ ¾ð¾îÀÇ ÀåÁ¡, À¯¿ëÇÔ µîÀ» ´Ü¹ø¿¡ ¾Ë±â´Â Èûµé °Í °°Áö¸¸ Àͼ÷ÇØÁö°í ´©±¸³ª Æí¸®ÇÏ´Ù°í ´À³¥¸¸ÇÑ ¾ð¾îÀÎ °Í °°¾Æ¿ä. ´Ù¸¥ ¾ð¾î¿¡ ºñÇØ ¸Å¿ì ªÀº Äڵ嵵 ÀλóÀûÀ̾ú½À´Ï´Ù."

"nMLÀº ºÒ°ú ÇÑ´Þ »çÀÌ¿¡ ³ª¸¦ ¸¶¾àó·³ »ç·ÎÀâ¾Æ ¹ö·È´Ù. ¸Þ¸ð¸®µµ ¼ö¸¹Àº º¯¼öµµ ½Å°æ ¾µ ÇÊ¿ä°¡ ¾ø¾ú´Ù. ÇÁ·Î±×·¡¹Ö ³»³» µ¹¾Æ´Ù´Ï´Â °ÍÀº ³í¸® ±× ÀÌ»óµµ ÀÌÇϵµ ¾Æ´Ï¾ú´Ù. »ý°¢ÇÏ´Â °ÍÀ» ¹Ù·Î ±âÈ£·Î ³ªÅ¸³»°í ÄÄÇ»ÅÍ´Â ¹æ±Ý ³»°¡ Çß´ø »ý°¢À» ±×´ë·Î µû¶ó ¿øÇÏ´Â °á°ú °ªÀ» ¾ò¾î³½´Ù. ¾î¶² °ÍÀÌ ÁÁÀº ¾ð¾îÀÎÁö´Â ¸ð¸£Áö¸¸ Àß ¸¸µé¾îÁø ¾ð¾î¶ó´Â ¸»Àº ¹Ù·Î ÀÌ·± °æ¿ì¿¡ ¾²´Â °ÍÀ̶ó´Â ´À³¦ÀÌ µé¾ú´Ù."

"óÀ½¿¡ nML·Î ¼ö¾÷À» ÁøÇàÇÑ´Ù°í ÇßÀ» ¶§ »õ·Î¿î ¾ð¾î¸¦ ¹è¿ö¾ß ÇÏ´Â ºÎ´ã°¨ÀÌ ÀÖ¾ú´ø °ÍÀÌ »ç½ÇÀÔ´Ï´Ù. ÇÏÁö¸¸ ¾ð¾î¸¦ ¹è¿ö°¡¸é¼­ ù ¹ø° ¼÷Á¦¸¦ ¹«³­È÷ ³¡³»°í ³ª¼­´Â ¿ÀÈ÷·Á nMLÀ̶ó´Â ¾ð¾î°¡ ÀÌÀüÀÇ ¾ð¾îº¸´Ù ÈξÀ Àç¹ÌÀÖ¾ú°í, ¼÷Á¦°¡ ±â´Ù·ÁÁ³½À´Ï´Ù. nMLÀ̶ó´Â ¾ð¾î´Â ÀÌÀüÀÇ ¾ð¾î¿Í´Â ´Ù¸£°Ô ÇÁ·Î±×·¡¹ÖÀÌ ½¬¿ì¸é¼­µµ ±× ±â´ÉÀº °­·ÂÇÕ´Ï´Ù. ³»°¡ »ý°¢ÇÏ´Â °ÍÀ» Ç¥ÇöÇÏ°í ³ª¼­, ±× »ý°¢¿¡ ¹®Á¦°¡ ¾ø´Ù¸é »ç»ç·Î¿î ½Ç¼ö µîÀ» Àß Àâ¾ÆÁ־ ÇÁ·Î±×·¡¹ÖÇϱⰡ ¼ö¿ùÇß½À´Ï´Ù."

==============================================================================