[Áöµð³ÝÄÚ¸®¾Æ]ù ¹øÂ° ÇÁ·Î±×·¡¹Ö ¾ð¾îÀÇ ¼±ÅÃÀº ¾ÆÁÖ Áß¿äÇÏ°íµµ ¹Î°¨ÇÑ ¹®Á¦´Ù. ¸ðµç ÇÁ·Î±×·¡¸Ó´Â Æò»ý µ¿¾È óÀ½ ¹è¿î ÇÁ·Î±×·¡¹Ö ¾ð¾îÀÇ ¿µÇâ¿¡¼ ½±°Ô ¹þ¾î³ªÁö ¸øÇϱ⠶§¹®ÀÌ´Ù. ÀÌ´Â Çѱ¹¿¡¼ ž Çѱ¹¾î¸¦ ù ¹øÂ° ¾ð¾î·Î ¹è¿î »ç¶÷ÀÌ ¿µ¾î³ª ÀϺ»¾î µîÀ» ¹è¿ï ¶§ ÀÚ½ÅÀÌ Ã³À½ Á¢ÇÑ ¾ð¾îÀÎ Çѱ¹¾î¸¦ ±âº»À¸·Î ±×°Í°ú ºñ±³ÇÏ°Ô µÇ´Â °Í°ú °°Àº ÀÌÄ¡ÀÌ´Ù.
ù ¹øÂ° ¹è¿î ÇÁ·Î±×·¡¹Ö ¾ð¾î´Â ÇÁ·Î±×·¡¸Ó »ç°íÀÇ ±âƲÀÌ µÈ´Ù. ¶ÇÇÑ ÇÁ·Î±×·¡¹ÖÀº ºÐ¾ßº° Ư¼ºÀ» °¨¾ÈÇÑ ±¸Ã¼ÀûÀÎ ½Ç¿ë¼ºÀ» ³í¿Ü·Î ÇÏ´õ¶óµµ âÀÇÀû »ç°í¸¦ ÈÆ·ÃÇÏ´Â ÀϹÝÀûÀÎ ±³À° ¼ö´ÜÀ¸·Î¼ÀÇ °¡Ä¡µµ ÀÖ´Ù. ¸ðµç °æ¿ì¿¡ 'ù ¹øÂ°'¶ó´Â ¾îÈÖ°¡ °®´Â Àǹ̴ ±× µÚ¿¡ µû¸£´Â °°Àº ¼ö´ÜÀÌÁö¸¸ ´Ù¸¥ µµ±¸ ¶Ç´Â °´Ã¼¸¦ »ç¿ëÇÏ´Â ºñ½ÁÇÑ Àϵé°ú´Â ´Ù¸¥ Àǹ̸¦ °¡Áö°Ô µÇ°í, ÇÁ·Î±×·¡¹Ö ¾ð¾î¿¡ À־ ±× ¼±ÅÃÀÇ ºñÁßÀÌ ¸Å¿ì Å©´Ù°í ÇÒ ¼ö ÀÖ´Ù. ±×·¸´Ù¸é óÀ½ ¹è¿ì´Â ÇÁ·Î±×·¡¹Ö ¾ð¾î·Î ¾î¶°ÇÑ ¾ð¾î¸¦ ¼±ÅÃÇÏ´Â °ÍÀÌ ÁÁÀ»±î? ÇÁ·Î±×·¡¹Ö ¾ð¾îÀÇ ÆÐ·¯´ÙÀÓÀ» ¸Å°³·Î ÇÏ¿© ±× ÇØ´äÀ» ã¾Æº¸ÀÚ.
¸ðµç À̰¡ ÇÁ·Î±×·¡¹ÖÀ» ¹è¿ö¾ß ÇÏ´Â ÀÌÀ¯?
ÇÁ·Î±×·¡¹Ö ÇнÀÀº ¹®Á¦ÀÇ ÇØ¹ý ±× ÀÚüº¸´Ù´Â ¿Ã¹Ù¸¥ ÇØ¹ýÀ» ¼³°èÇÏ´Â ÀýÂ÷¸¦ ¿À·ù ¾øÀÌ ±â¼úÇØ³¾ ¼ö ÀÖ´Â »ç°í¸¦ °Á¶Çϸç, ¼¼úµÈ ¹®Á¦·ÎºÎÅÍ ÇØ¹ýÀÇ ¸ðÇüÀ» ¸¸µé°í ¸ðÇüÀÇ Å¸´ç¼ºÀ» °ËÁõÇÏ´Â °úÁ¤¿¡¼ âÀǼº ¹× ºñÆÇÀû »ç°í¿Í Ãß·Ð ´É·ÂÀ» ÈÆ·ÃÇÏ´Â È¿°ú°¡ ÀÖ´Ù(ÀÌ´Â ±¹³»¿ÜÀÇ ´Ù¾çÇÑ ±³À°°úÁ¤ ¹× °ü·Ã ¿¬±¸¸¦ ÅëÇØ Ÿ´ç¼ºÀÌ ÀÔÁõµÇ¾î ¿Ô´Ù).
±×¸®°í ÇÁ·Î±×·¡¹Ö ±â¼úÀº ºÐ¾ßº° Àü¹®¼º°ú »ý»ê¼ºÀ» ÇÑ Â÷¿ø ³ôÀº ¼öÁØÀ¸·Î ²ø¾î¿Ã¸®±â À§ÇØ ±â°è Áß½ÉÀÇ »ç°í¿¡¼ ¹þ¾î³ª Àü¹® ÀÀ¿ë ºÐ¾ßº° »ç°í·Â°ú Ç¥Çö·ÂÀ» Çâ»ó½ÃŰ´Â ÂÊÀ¸·Î ¹ßÀüÇØ¿Ô´Ù. ÇÁ·Î±×·¡¹Ö ±â¼úÀÌ ÀÌ¿Í °°Àº ¹æÇâÀ¸·Î Áøº¸Çϰí ÀÖ´Ù´Â °ÍÀº ÇÁ·Î±×·¡¹Ö ÀÛ¾÷ÀÌ ÀüÅëÀûÀÎ ¼öÇàÀû ÇàÀ§¿¡ ±ÙÁ¢Çذ¡°í ÀÖ´Ù´Â °ÍÀ» ÀÔÁõÇÏ´Â °ÍÀ̱⵵ ÇÏ´Ù.
ÇÁ·Î±×·¡¹Ö ¾ð¾î´Â Àü»êÇÐÀ̳ª ÄÄÇ»ÅͰøÇÐ °°Àº ƯÁ¤ ºÐ¾ß¸¦ Àü°øÇϰųª ÁýÁßÀûÀÎ ±³À°À» À̼öÇÑ Àü¹®Àθ¸ÀÌ È°¿ëÇÒ ¼ö ÀÖ´Â µµ±¸ÀÇ ±â¼ú¿¡¼ ÀÌ¹Ì ¹þ¾î³µ°í, ¸ðµç ºÐ¾ßÀÇ Àü¹® ÀηÂÀÌ ÀÚ½ÅÀÇ ºÐ¾ß¿¡¼ ¹ß»ýÇÏ´Â ´Ù¾çÇÑ ¹®Á¦ Ç®À̸¦ À§ÇØ ±× ºÐ¾ß Àü¹®°¡µéÀÇ Áö½ÄÀ» °øÀ¯Çϰí ÇØ¹ýÀ» ³ª´©±â À§ÇÑ »ç°íÀÇ ¼ö´ÜÀ¸·Î ÀÚ¸®¸Å±èÇϰí ÀÖ´Ù. ÀÌÁ¦ ÇÁ·Î±×·¡¹Ö ¾ð¾î´Â Àü¹® ÇÁ·Î±×·¡¸ÓµéÀÇ ÀüÀ¯¹°¿¡¼ ¹þ¾î³ª°í ÀÖ´Â °ÍÀÌ´Ù.
CAD¸¦ »ç¿ëÇÏ´Â °ÇÃà ¶Ç´Â Á¶¼± ¼³°è Àü¹®°¡°Ç, ÄÄÇ»ÅͰøÇÐÀ» Àü°øÇÏ¿© Àü¹® ÇÁ·Î±×·¡¸Ó·ÎÀÇ ±æÀ» ¿øÇÏ´Â ÇлýÀ̰Ç, °æ¿µÇÐÀ̳ª À¯ÅëÇÐÀ» °øºÎÇØ¼ ±â¾÷ °æ¿µÀ» ²Þ²Ù´Â °æ¿µÇеµ°Ç, ¿ù¸»À̸é Á÷¿øµéÀÇ ±Þ¿©¸¦ °è»êÇϱâ À§ÇØ ¿¢¼¿À» »ç¿ëÇÏ´Â °æ¸®ºÎ¼ÀÇ Á÷¿øÀÌ°Ç ¸ðµÎ ¾Ë°Ô ¸ð¸£°Ô ÇÁ·Î±×·¡¹Ö ¾ð¾î¸¦ »ç¿ëÇϰí ÀÖ´Ù.
ÀÌ·¸°Ô »ç¶÷µéÀÌ ¿øÇÏ´Â ÇØ´äÀ» ã±â À§ÇØ ¹®Á¦¸¦ Ç®¾î°¡´Â ¹æ½ÄÀº ÇÁ·Î±×·¡¹Ö ¾ð¾î¸¦ »ç¿ëÇÏ¿© ¹®Á¦¸¦ ÇØ°áÇÏ´Â ±â¹ý°ú ´à¾Æ°¡°í ÀÖ´Ù. º¹ÀâÇÑ ÀÌ·ÐÀ» ¼³¸íÇϰųª ³í¹®ÀÇ ¿¹¸¦ µéÁö ¾Ê´õ¶óµµ ÀÌ´Â ÇöÀç ÈÁ¦°¡ µÇ°í ÀÖ´Â ¹®Á¦À̸ç, °á·ÐÀûÀ¸·Î ¿äÁò ¼¼»ó¿¡¼ µÚÃÄÁöÁö ¾ÊÀ¸·Á¸é ´©±¸³ª ÇÁ·Î±×·¡¹Ö ¾ð¾î¸¦ ¹è¿ö¾ß ÇÑ´Ù´Â °ÍÀÌ´Ù.
ÇÁ·Î±×·¡¹ÖÀº ¿©·¯ ¹®Á¦ÀÇ ÇØ¹ýÀ» ã¾Æ³»°í ÇØ¹ýÀ» Á¶ÇÕÇØ¼ ´õ Å« ¹®Á¦ÀÇ ÇØ´äÀ» ã¾Æ³»´Â ´É·ÂÀ» ¿ä±¸ÇÑ´Ù. ¿¢¼¿À» »ç¿ëÇÏ´Â ´É·ÂÀ» ±â¸£°í ½Í´Ù°í »ç¼³ Çпø¿¡¼ ¹è¿ì´Â ¼ÒÇÁÆ®¿þ¾î »ç¿ë¹ýÀ» ¹è¿ì´Â °ÍÀº °ï¶õÇÏ´Ù. ƯÁ¤ ȸ»çÀÇ ¼ÒÇÁÆ®¿þ¾î »ç¿ë¹ýÀ» ±â°èÀûÀ¸·Î ¾Ï±âÇϰí Àͼ÷ÇÏ°Ô ¸¸µå´Â ¹Ýº¹ÇнÀÀ¸·Î´Â ´õ Å« ¹®Á¦°¡ ÁÖ¾îÁ³À» ¶§ ¿Ã¹Ù¸¥ ¹æ¹ýÀ¸·Î ºü¸£°Ô Ç®¾î³»´Â ´É·ÂÀ» Ű¿ï ¼ö ¾ø±â ¶§¹®ÀÌ´Ù.
´ëºÎºÐÀÇ ¼ÒÇÁÆ®¿þ¾î´Â º¹ÀâÇÑ ¹®Á¦¸¦ ³í¸®ÀûÀ¸·Î Á¢±ÙÇÏ¿© ¿À·ù ¾øÀÌ »¡¸® ÇØ°áÇÏ´Â µ¥ ±× ¸ñÀûÀÌ ÀÖ´Ù. âÀÇÀû ¹®Á¦ ÇØ°á µµ±¸·Î¼ÀÇ ¼ÒÇÁÆ®¿þ¾î ±â¼ú Ȱ¿ëÀ» ÀÍÈ÷±â À§Çؼ´Â ³ôÀº Ãß»óÈÀÇ ¼öÁØ¿¡¼ ¹®Á¦¸¦ ÇØ°áÇÏ´Â ¹æ¹ýÀ» ¿¬±¸ÇØ¾ß Çϰí, ´Ù¾çÇÑ ¹®Á¦ ÇØ°á ±â¹ýÀ» Á¾ÇÕ È°¿ëÇÏ¿© °³ÀÎÀÇ »ý»ê¼º Çâ»óÀ» üµæÇÒ ¼ö ÀÖ´Â ÈÆ·ÃÀÌ ÇÊ¿äÇÏ´Ù. ±×·¸´Ù°í ÇØ¼ '¸·¿¬È÷' ÇÁ·Î±×·¡¹ÖÀ» ¹è¿ì°Ú´Ù´Â »ý°¢Àº ÁÁÀº °ÍÀÌ ¾Æ´Ï´Ù.
ÇÁ·Î±×·¡¹Ö ÈÆ·ÃÀÌ ¹®Á¦ ÇØ°á ´É·Â¿¡ µµ¿òÀ» ÁÖ´Â °ÍÀº »ç½ÇÀÌÁö¸¸, ÇÁ·Î±×·¡¹Ö ¾ð¾î¸¦ '¾Æ¹«°Å³ª' ¼±ÅÃÇØ¼ 'Àû´çÇÑ' ¹æ¹ýÀ¸·Î ÀÍÈù´Ù´Â °ÍÀº ¹®Á¦ ÇØ°á ´É·ÂÀÇ Çâ»ó¿¡ º° µµ¿òÀ» ÁÖÁö ¸øÇÑ´Ù. Ç¥Çö ¼öÁØÀÌ ³·Àº ¾ð¾î¸¦ ¼±ÅÃÇϰųª, ¹®¹ýÀÌ ³Ê¹« º¹ÀâÇÑ ¾ð¾î¸¦ ¼±ÅÃÇÏ´Â °ÍÀº ³·Àº ¾ð¾îÀÇ Ç¥ÇöÀ» ¹®Á¦¸¦ ÇØ°áÇϱâ À§ÇÑ Ç¥Çö ¼öÁØÀ¸·Î ²ø¾îµéÀÌ´Â ÀÛ¾÷¿¡ ´õ ¸¹Àº ³ë·ÂÀ» ±â¿ï¿©¾ß Çϱ⠶§¹®ÀÌ´Ù. ¶ÇÇÑ ¹®¹ý°ú Àǹ̰¡ º¹ÀâÇÑ ¾ð¾î¸¦ ¼±ÅÃÇßÀ» °æ¿ì ¾ð¾î ÀÚü°¡ °¡Áø ¹®¹ý°ú ¾ð¾î¸¦ ÀÌÇØÇÏ´Â µ¥ Áú·Á¹ö·Á(¹®Á¦ ÇØ°á ±â¹ýÀ» ÀÍÈ÷°íÀÚ ÇÏ´Â ¸ñÇ¥¿¡ µµ´ÞÇϱ⵵ Àü¿¡ ÀÍÇô¾ß ÇÏ´Â ¹®¼ÀÇ ¾ç¿¡ Áú¸°´Ù) ÇÁ·Î±×·¡¹Ö ¾ð¾î ÀÚü¿¡ ´ëÇÑ Èï¹Ì¸¦ ÀÒ¾î¹ö¸®°Ô µÇ´Â °æ¿ìµµ Çã´ÙÇÏ´Ù.
¸¶ÀÌÅ©·Î¼ÒÇÁÆ®(ÀÌÇÏ MS)ÀÇ ºñÁÖ¾ó º£ÀÌÁ÷À» óÀ½À¸·Î ¹è¿î »ç¶÷À̶ó¸é ´Ù¸¥ ¸ðµç ¾ð¾î¸¦ ÇнÀÇϰíÀÚ ÇÒ ¶§ ºñÁÖ¾ó º£ÀÌÁ÷¿¡ ´ëÇÑ ÀÌÇØ¸¦ ±âº»À¸·Î Á¢±ÙÇÏ°Ô µÈ´Ù. ºñÁÖ¾ó º£ÀÌÁ÷Àº MS ¿¢¼¿À̳ª DTS µîÀÇ »ç¹« »ý»ê¼ºÀ» À§ÇÑ µµ±¸³ª µ¥ÀÌÅÍ °ü¸®¸¦ À§ÇÑ µµ±¸¿¡ ±¤¹üÀ§ÇÏ°Ô »ç¿ëµÇ¾î ½Ç¹« Ȱ¿ëµµ°¡ ³ôÀº ¾ð¾î¶ó´Â ÀåÁ¡ÀÌ ÀÖ±ä ÇÏ´Ù. ÇÏÁö¸¸ ºñÁÖ¾ó º£ÀÌÁ÷Àº ¹®¹ý°ú Àǹ̰¡ º¹ÀâÇÏ°Ô ¼³°èµÇ¾ú°í(¿µ¾î Ç¥Çö¿¡ Àͼ÷ÇÏÁö ¾ÊÀº Çѱ¹ÀÎÀ̶ó¸é ´õ¿í Á¢±ÙÇϱâ Èûµé´Ù), ¾ÖÃÊ¿¡ ¾ð¾î ÀÚü°¡ ¹«¿øÄ¢ÇÏ°Ô ¼³°èµÇ¾î ÀÖ¾î ¼ø¼öÇÑ ¼öÇÐÀû »ç°í¿¡ ±â¹ÝÇÑ ¹®Á¦ ÇØ°á ´É·ÂÀ» ÀÍÈ÷´Â µ¥ ÁÁÁö ¾ÊÀº ¿µÇâÀ» ÁÙ ¼ö ÀÖ´Ù.
¾î¶² ¾ð¾î°¡ Àû´çÇÏ´Ù°í ÇÒ ¼ö Àִ°¡?
Ç¥Çö ¼öÁØÀÌ ³·Àº ¾ð¾î¸¦ ¹è¿ì°Ô µÇ¸é ¹®Á¦¸¦ Ǫ´Â µ¥ ÁýÁßÇÏÁö ¸øÇÒ °¡´É¼ºÀÌ Ä¿Áö°Ô µÈ´Ù. C/C++ ·ùÀÇ ¾ð¾î¸¦ ¿¹·Î µé¾îº¸ÀÚ. C/C++´Â ¹®Á¦ÀÇ ÇØ¹ýÀ» °³¹ßÇÏ´Â ±â¹ýÀ» ÀÍÈ÷±â¿¡ ¾Õ¼ Àü°ø ¼öÁØÀÇ Àü¹® Áö½ÄÀ» ¿ä±¸ÇÑ´Ù. Á¤È®È÷´Â ÄÄÇ»ÅÍ ½Ã½ºÅÛÀÇ ±â¾ï °ø°£ÀÇ °ü¸® ¹× ±â°è ¼öÁØÀÇ È¿À²Àû µ¥ÀÌÅÍ Ã³¸® ¹æ½Ä µîÀÇ µ¿ÀÛ¿ø¸®¸¦ Á¤È®ÇÏ°Ô ÀÌÇØÇÏÁö ¾ÊÀ¸¸é ¹®Á¦¸¦ Ç®±âÀ§ÇÑ Ç¥Çö ¼ö´ÜÀ» °³¹ßÇϱâ Èûµé´Ù. º¹ÀâÇÑ ¹®Á¦¸¦ Ç®±â À§Çؼ´Â ÀڷᱸÁ¶³ª ¾Ë°í¸®Áò¿¡ ´ëÇÑ ÀÌÇØ°¡ ÇʼöÀûÀ̰í, ¹®Á¦¸¦ Ç®±â À§ÇÑ ±â¹Ý Ç¥Çö ¼ö´ÜÀ» »ý¼ºÇϱâ À§Çؼ´Â ÄÄÇ»ÅÍ ½Ã½ºÅÛ¿¡ ´ëÇÑ Àü¹®ÀûÀÎ Áö½ÄÀ» ¿ä±¸ÇÏ°Ô µÈ´Ù. ÀÚ¹Ù³ª C# ¶ÇÇÑ ¸¶Âù°¡Áö´Ù(C#ÀÇ #Àº C++ÀÇ ++À» °ãÃÄ ³õÀº °ÍÀ̶ó°í ÇÑ´Ù).
ÀÚ¹Ù³ª C#°ú °°Àº ¾ð¾î´Â C/C++¿¡ ºñÇØ ±â°è Áß½ÉÀûÀÎ »ç°í¸¦ ´ú ¿ä±¸Çϱä ÇÑ´Ù. ÇÏÁö¸¸ ÀÚ¹Ù ¶Ç´Â C#Àº °´Ã¼ÁöÇ⼺À̶ó´Â ƯÁ¤ ÆÐ·¯´ÙÀÓÀ» ¹®¹ýÀûÀ¸·Î °¿äÇÑ´Ù. ¶ÇÇÑ ¾ÆÁÖ ´Ü¼øÇÑ ÀÀ¿ë¿¡ À־µ(¿¹¸¦ µé¸é ±×¸²À» ±×¸°´Ù°Å³ª µ¥ÀÌÅ͸¦ ó¸®ÇÏ´Â µîÀÇ) ´Ü¼øÇÑ ÀÀ¿ëÀ» À§ÇÑ Àü¹® ¿µ¿ª ¾ð¾î¸¦ º°µµ·Î ÇнÀÇØ¾ß ÇÏ´Â ºÎ´ãÀÌ µû¸¥´Ù(Æ÷Æ®¶õµµ C/C++, ÀÚ¹Ù, C# µîÀÇ ´ÜÁ¡À» ±×´ë·Î °øÀ¯ÇÑ´Ù).
¹°·Ð Àü¹® ÇÁ·Î±×·¡¸Ó·Î Ȱµ¿ÇÒ Àǻ簡 ÀÖ´Â »ç¶÷À̶ó¸é Á¶±Ý ´Ù¸£°Ô »ý°¢ÇÒ ¼öµµ ÀÖ´Ù. Àü¹® ÇÁ·Î±×·¡¸Ó°¡ µÉ »ç¶÷À̶ó¸é »ê¾÷°è¿¡¼ ³Î¸® »ç¿ëµÇ°í ÀÖ´Â C/C++, ÀÚ¹Ù, C# µîÀÇ ¾ð¾î¸¦ ÀÍÇô³õ°í, ƯÁ¤ ¾ð¾î ±â¹Ý¿¡¼ »ç¿ëµÇ´Â ¸ðµç Àü¹® ¿µ¿ª ¾ð¾î(Domain-Specific Language)¸¦ »ç¿ëÇÒ ¼ö ÀÖ´Â ´É·ÂÀ» ±â¸£´Â °ÍÀÌ ¾ÕÀ¸·ÎÀÇ ¹ä¹úÀÌ(?)¿¡ Áö´ëÇÑ ¿µÇâÀ» ÁÙ °ÍÀ̶ó°í »ý°¢ÇÏ´Â µ¶ÀÚµµ ÀÖÀ» °ÍÀÌ´Ù.
±×·¸´Ù¸é ÀÌÂë¿¡¼ ¹Ý¹®ÇÏ°í ½ÍÀº °ÍÀº ÀÚ¹Ù ¶Ç´Â C#À̶ó´Â ¾ð¾î°¡ ½ÃÀå¿¡¼ ¾²À̱⠽ÃÀÛÇÑ °ÍÀÌ ¾ó¸¶³ª µÇ¾ú´À³Ä ÇÏ´Â °ÍÀÌ´Ù. C#Àº MS¿¡¼ 2001³â ¹ßÇ¥ÇÑ »õ·Î¿î ¾ð¾îÀÌ´Ù(¹ßÇ¥µÈ Áö 3³âÀ̳ª Áö³ ¾ð¾î¸¦ »õ·Î¿î ¾ð¾î¶ó°í ºÒ·¯µµ µÇ´ÂÁö´Â ¸ð¸£°Ú´Ù). MS¶ó´Â ±â¾÷ÀÇ ¿µÇâ·Â ¶§¹®ÀÎÁö C#Àº »õ·Î ½ÃÀÛÇÏ´Â ÇÁ·ÎÁ§Æ®¿¡¼ °¡Àå ½É°¢ÇÏ°Ô °í·ÁµÇ´Â ¾ð¾î·Î±îÁö ¼ºÀåÇß´Ù. ÀÚ¹Ù¸¦ »ç¿ëÇÒ ÁÙ ¾Æ´Â ÇÁ·Î±×·¡¸Ó¶ó¸é Anonymous Class ±¸Á¶¸¦ »ç¿ëÇÏ´Â À̺¥Æ® ¸ðµ¨¿¡ Àͼ÷ÇÒ °ÍÀÌ´Ù. ¹Ý¸é C#Àº µ¨¸®°ÔÀÌÆ®(delegate)¸¦ »ç¿ëÇÏ¿© À̺¥Æ®¸¦ ±¸ÇöÇÑ´Ù. ù ¹øÂ° ¾ð¾î·Î ÀÚ¹Ù¸¦ ¼±ÅÃÇϰí Á×µµ·Ï °øºÎÇÑ »ç¶÷À̶ó¸é C#ÀÇ ÀÌ·¯ÇÑ ±¸Á¶°¡ ½±°Ô ¹Þ¾Æµé¿©Áú ¸® ¸¸¹«ÇÏ´Ù.
Àü¹® ÇÁ·Î±×·¡¸Ó·Î Ȱµ¿ÇÒ Àǻ簡 ÀÖ´Â »ç¶÷À̶ó¸é ±Þº¯ÇÏ´Â ÇÁ·Î±×·¡¹Ö ȯ°æ¿¡ ź·ÂÀûÀ¸·Î ÀûÀÀÇÒ ¼ö ÀÖ´Â ÈÆ·Ãµµ ÇÊ¿äÇÏÁö¸¸ ù ¹øÂ° ÇÁ·Î±×·¡¹Ö ¾ð¾î´Â ÀÌ·¯ÇÑ ÇÁ·Î±×·¡¹Ö ȯ°æ¿¡ ÀûÀÀÇÏ´Â ±â¹ÝÀ» ¸¶·ÃÇØ ÁÙ ¼ö ÀÖ´Â ¾ð¾î¸¦ ¼±ÅÃÇÏ´Â °ÍÀÌ ¸¶¶¥ÇÏ´Ù. 'C#À» Àß »ç¿ëÇÏ´Â' ÇÁ·Î±×·¡¸Óº¸´Ù´Â 'ÇÁ·Î±×·¥À» Àß Â¥´Â' ÇÁ·Î±×·¡¸Ó°¡ µÇ´Â °ÍÀÌ ¿ì¼±ÀÌ´Ù.
°ú¿¬ C/C++´Â ¸¶¶¥ÇÏÁö ¾ÊÀº°¡?
C/C++, ÀÚ¹Ù, C#ó·³ ±â°è Á᫐ ÆÐ·¯´ÙÀÓ(Imperative Paradigm)À» »ç¿ëÇÏ´Â ¾ð¾î¸¦ »ç¿ëÇÏ´Â °ÍÀÌ ¹Ù¶÷Á÷ÇÏÁö ¾Ê´Ù°í À̾߱âÇÒ ¼ö´Â ¾ø´Ù. ¿ÀÈ÷·Á '¹Ýµå½Ã °ÅÃİ¡¾ß µÇ´Â' ÂÊÀÌ ´õ ÀûÇÕÇÑ Ç¥ÇöÀÏ °ÍÀÌ´Ù. ºÐ¸íÈ÷ C/C++´Â ÇöÀç »ç¿ëµÇ°í ÀÖ´Â ÇÁ·Î±×·¡¹Ö ±â¼úÀ» ÃæºÐÈ÷ ¸Àº¸±â¿¡ ¾ÆÁÖ ÁÁÀº ¾ð¾îÀÌ´Ù. ¶ÇÇÑ, ±â°è Á᫐ ÆÐ·¯´ÙÀÓÀÌ ¹®Á¦¸¦ Ç®ÀÌÇÏ´Â µ¥ ¹Ýµå½Ã »ç¿ëµÇ¾î¾ß ÇÏ´Â °æ¿ìµµ Çã´ÙÇÏ´Ù. SICP(Structure and Interpretation of Computer Programs, MIT Press)¿¡¼ ºô·Á¿Â ´ÙÀ½ ¿¹¸¦ »ìÆìº¸ÀÚ.
"¿ì¸®´Â º¸Åë ¼¼»óÀ» µ¶¸³ ¹°Ã¼µéÀÌ »ì°í ÀÖ´Â °÷À¸·Î º»´Ù. °¢ ¹°Ã¼´Â Àڱ⸸ÀÇ »óŰ¡ ÀÖ°í, ±× »óÅ´ ½Ã°£¿¡ µû¶ó º¯ÈÇÑ´Ù. ¾î¶² ¹°Ã¼°¡ '»óŸ¦ °¡Áø´Ù'´Â ¸»Àº ±× ÇൿÀÌ ±× ¿ª»ç¸¦ Áö´Ñ´Ù´Â ¶æÀÌ´Ù. ÀºÇà °Å·¡¸¦ ¿¹·Î µé¸é, 'Áö±Ý 100´Þ·¯¸¦ ÀÎÃâ ÇÒ ¼ö Àִ°¡?'¶ó´Â Áú¹®ÀÇ ´äÀÌ, ¿¹±Ý°ú ÀÎÃâÀÇ Áö³ª°£ ¿ª»ç¿¡ ÀÇÁ¸ÇÑ´Ù´Â Á¡¿¡¼, ÀºÇà °èÁ´ »óŸ¦ °¡Áø´Ù°í ÇÒ ¼ö ÀÖ´Ù."
½Ã°£¿¡ µû¶ó »óŰ¡ º¯ÇÏ´Â °è»ê»óÀÇ ¹°Ã¼¶ó´Â °ÍÀÌ ¾î¶°ÇÑ °ÍÀÎÁö¸¦ ¼³¸íÇϱâ À§ÇØ ÀºÇà °èÁ¿¡¼ µ·À» ÀÎÃâÇÏ´Â »óȲÀ» ¿¹·Î µé¾îº¸ÀÚ. ÀÎÃâ µ¿ÀÛÀº ÀÎÃ⠱ݾ×À» amount¶ó´Â ÀÎÀÚ·Î ¹Þ´Â withdraw¶ó´Â ÇÁ·Î½ÃÀú·Î Ç¥ÇöÇÑ´Ù. °èÁ¿¡ ¿¹±ÝµÈ µ·ÀÌ ÀÎÃâÇϱ⿡ ÃæºÐÇÑ ±Ý¾×À̶ó¸é withdraw ÇÁ·Î½ÃÀú´Â ÀÜ°í¸¦ º¸¿©ÁÖ°í, ±×·¸Áö ¾Ê´Ù¸é ¡®ÀÜ°í ºÎÁ·¡¯À̶ó´Â ¹®ÀÚ¸¦ º¸¿©ÁÖ¾î¾ß ÇÏ´Â »óȲÀÌ´Ù.
C#À» »ç¿ëÇÏ¿© ÀÌ¿Í °°Àº »óȲÀ» ÇÁ·Î±×·¡¹ÖÇÑ´Ù¸é °´Ã¼ÁöÇâ ÆÐ·¯´ÙÀÓ(Object-Oriented Paradigm)¿¡ ÀÔ°¢ÇÏ¿© <¸®½ºÆ® 1>°ú °°ÀÌ ÇÁ·Î±×·¡¹ÖÇÒ °ÍÀÌ´Ù.
| <¸®½ºÆ® 1> C#À¸·Î ÀÛ¼ºÇÑ ÄÚµå | | | |
public class Account {
private int balance;
public Account(int balance) {
this.balance = balance;
}
public void Withdraw(int account) {
if (this.balance >= account)
Console.WriteLine(this.balance - account);
else
Console.WriteLine("ÀÜ°í ºÎÁ·");
}
} | |
 |
ÇÁ·Î±×·¥À» ½ÇÇàÇÏ·Á¸é, Account °´Ã¼¸¦ »ý¼ºÇÏ°í »ý¼ºµÈ °´Ã¼¿¡¼ °ªÀ» »©³ª°¡¾ß ÇÑ´Ù.
Account account = new Account(100);
account.Withdraw(25);
(75¸¦ ȸ鿡 Ãâ·ÂÇÑ´Ù)
account.Withdraw(90);
("ÀÜ°í ºÎÁ·"À» ȸ鿡 Ãâ·ÂÇÑ´Ù)
account.Widthdraw(15);
(60À» ȸ鿡 Ãâ·ÂÇÑ´Ù)
SICP¿¡¼´Â ¿ì¸®¿¡°Ô Àͼ÷ÇÑ ÀÌ¿Í °°Àº ÇÁ·Î±×·¡¹Ö ¹æ¹ýÀ» ´ÙÀ½°ú °°ÀÌ ¼³¸íÇÑ´Ù.
"°¢ ¹°Ã¼´Â »óÈ£ ÀÛ¿ëÀ¸·Î °´Ã¼°£¿¡ ÀÇÁ¸ÇÏ´Â »óÅ º¯È¸¦ ¸¸µé¸é¼ ¼·Î¿¡°Ô ¿µÇâÀ» ÁØ´Ù. ÀÌ·¸°Ô ½Ã½ºÅÛÀ» ºÐ¸®µÈ °´Ã¼ÀÇ ÇÕ¼ºÀ̶ó°í º¸´Â ½Ã°¢Àº, ½Ã½ºÅÛÀÇ »óÅ º¯¼ö¸¦ ¹Ðµµ ÀÖ°Ô °áÇÕµÈ ¿©·¯ °³ÀÇ ¼ºê ½Ã½ºÅÛÀ¸·Î ¹À» ¼ö ÀÖ°í ¼ºê ½Ã½ºÅÛ³¢¸®´Â ´À½¼ÇÏ°Ô ¹ÀÎ ±¸Á¶¸¦ À¯ÁöÇÏ´Â °æ¿ì¿¡ ¾ÆÁÖ ¾µ¸ð ÀÖ´Ù."
ÀÌ·± »ç°í¹æ½ÄÀº ½Ã½ºÅÛ °è»ê ¸ðµ¨ÀÇ Á¶Á÷À» Â¥¸ÂÃâ ¶§ ¾ÆÁÖ ¾µ¸ð Àִ ƲÀÌ µÈ´Ù. ¸ðµâº°·Î Àß ±¸¼ºµÈ ¸ðµ¨À» ¸¸µé·Á¸é ½Ã½ºÅÛ ³»ÀÇ ½ÇÁ¦ ¹°Ã¼¸¦ º»¶á °è»ê»óÀÇ ¹°Ã¼·Î ¸ðµ¨À» ºÐÇÒÇØ¾ß ÇÑ´Ù. °¢ °è»ê °´Ã¼´Â ½Ç¹°ÀÇ »óŸ¦ ¹¦»çÇÏ´Â Àڱ⠻óÅ º¯¼ö(local state variable)¸¦ °¡Áö°í ÀÖ¾î¾ß ÇÑ´Ù. ±×¸®°í ½Ç¹°(Object)ÀÇ »óÅ´ ½Ã°£¿¡ µû¶ó º¯ÈÇϱ⠶§¹®¿¡ ÀÌ¿¡ ´ëÀÀÇÏ´Â °è»ê»óÀÇ ¹°Ã¼ »óÅ º¯¼ö°¡ Á¸ÀçÇØ¾ß ÇÑ´Ù. ÄÄÇ»ÅÍÀÇ °è»ê ½Ã°£À¸·Î ½Ã½ºÅÛÀÇ ½Ã°£À» Èä³»³»°íÀÚ ÇÑ´Ù¸é, ÇÁ·Î±×·¥ ½ÇÇà Áß¿¡ ÇൿÀ» ¹Ù²Ü ¼ö ÀÖ´Â °´Ã¼¸¦ Ç¥ÇöÇÒ ¼ö ÀÖ´Â ¹æ¹ýÀÌ ÀÖ¾î¾ß ÇÑ´Ù. C/C++, ÀÚ¹Ù, C#¿¡¼´Â ÀÌ¿Í °°ÀÌ ÇÁ·Î±×·¥ ½ÇÇà Áß¿¡ ÇൿÀ» ¹Ù²Ü ¼ö ÀÖ´Â °´Ã¼¸¦ Ç¥ÇöÇÒ ¼ö ÀÖ´Â ¹æ¹ýÀ¸·Î ¹èÁ¤ ¿¬»êÀÚ(Assignment Operator)¸¦ Áö¿øÇÑ´Ù. ¹°·Ð '= 'ÀÌ´Ù.
´Ù½Ã ù ¹øÂ° ÇÁ·Î±×·¡¹Ö ¾ð¾îÀÇ ¼±Åà ¹®Á¦·Î µ¹¾Æ°¡ º¸ÀÚ. ¾ÕÀÇ ¿¹Á¦´Â ³Ê¹«µµ °£°áÇÏÁö¸¸ ù ¹øÂ° ÇÁ·Î±×·¡¹Ö ¾ð¾î·Î C/C++, ÀÚ¹Ù, C# µîÀÇ ¾ð¾î°¡ ¸¶¶¥ÇÏÁö ¾ÊÀº ÀÌÀ¯´Â ¿ì¼± ¹®¹ý°ú Àǹ̰¡ »ó´çÈ÷ º¹ÀâÇÏ´Ù´Â °ÍÀÌ´Ù. C++´Â ±âÃÊ ¼öÁØÀÇ ¾ð¾î¸¸À» ÀÍÈ÷´Â µ¥ ¼öõ ÆäÀÌÁöÀÇ Àü¹®ÀûÀÎ ¼³¸í¼°¡ ÇÊ¿äÇÏ´Ù. C++º¸´Ù ÈξÀ Àǹ̰¡ °£°áÇÑ ÀÚ¹Ù³ª C#¸¸ ÇÏ´õ¶óµµ ´ëºÎºÐÀÇ °ü·Ã ±³Àç¿¡¼ ¹®Á¦ ÇØ°á ¹æ¹ýÀ» À̾߱âÇÏ´Â °ÍÀÌ ¾Æ´Ñ ¾ð¾î ±× ÀÚüÀÇ ¹®¹ý°ú Àǹ̸¦ ¼³¸íÇÏ´Â µ¥¸¸ ¼ö¹é ÆäÀÌÁö¸¦ ÇÒ¾ÖÇÏ´Â µ¥ ±× ¹®Á¦°¡ ÀÖ´Ù.
µÎ ¹øÂ° ¹®Á¦´Â °´Ã¼ÁöÇ⼺°ú °°Àº ƯÁ¤ ÆÐ·¯´ÙÀÓÀÇ ÀÌÇØ¸¦ ¹®¹ýÀûÀ¸·Î °¿äÇÑ´Ù. <¸®½ºÆ® 1>¿¡¼ Account Ŭ·¡½º¸¦ ¼±¾ðÇߴµ¥ ÀÚ¹Ù ¶Ç´Â C#¿¡¼´Â ÀÌ¿Í °°ÀÌ Å¬·¡½º ¾øÀÌ´Â ÇÁ·Î±×·¥À» ÀÛ¼ºÇÒ ¼ö ¾ø°í, ¾ð¾îÀûÀ¸·Î °´Ã¼ÁöÇâ ÆÐ·¯´ÙÀÓÀ» °¿äÇÏ°Ô µÈ´Ù. SICP¿¡¼ ±³À°¿ë ¾ð¾î·Î ¼±ÅÃÇÑ Scheme¿¡¼ ¹èÁ¤ ¿¬»êÀÚ´Â ´ÙÀ½°ú °°ÀÌ »ç¿ëÇÒ ¼ö ÀÖ´Ù.
(set! )
C#À¸·Î ÀÛ¼ºÇÑ <¸®½ºÆ® 1>À» SchemeÀ¸·Î ÀÛ¼ºÇϸé <¸®½ºÆ® 2>¿Í °°ÀÌ µÈ´Ù.
| <¸®½ºÆ® 2> SchemeÀ¸·Î ÀÛ¼ºÇÑ ÄÚµå | | | |
(define balance 100)
(define (withdraw amount)
(if (>= balance amount)
(begin (set! balance (- balance amount))
balance)
"ÀÜ°í ºÎÁ·")) | |
 |
<¸®½ºÆ® 1>°ú ¸¶Âù°¡Áö·Î balance º¯¼ö°¡ °øÀ¯ ȯ°æ¿¡¼ µ¿ÀÛÇÏÁö ¾Êµµ·Ï ÇÏ°í ½Í´Ù¸é ´ÙÀ½°ú °°ÀÌ ÇØ¼ '°¡µÎ¾î À̸§ Áþ±â' ±â¹ýÀ¸·Î withdraw ³»ºÎ¿¡ °¡µÎ¾î¹ö¸± ¼ö ÀÖ´Ù.
(define widthdraw
(let ((balance 100))
(lambda (amount)
(if >= balance amount)
(begin (set! balance (- balance amount))
balance)
"ÀÜ°í ºÎÁ·")
¿©±â¼´Â Scheme ¹®¹ýÀ» Àß ¸ð¸£´Â µ¶ÀÚµéÀÌ º¸±â¿¡ Àͼ÷ÇÏÁö ¾ÊÀº ¸í·ÉµéÀÌ ÀÖÀ¸¹Ç·Î ¾î·Á¿ï ¼öµµ ÀÖÁö¸¸ <¸®½ºÆ® 1>°ú <¸®½ºÆ® 2>¸¦ ºñ±³ÇØ º¸¾ÒÀ» ¶§, ¾î¶² ¾ð¾î¸¦ ¼±ÅÃÇÏ´Â °ÍÀÌ ¡®¹®¹ýÀÇ È¾Æ÷¡¯·ÎºÎÅÍ ÀÚÀ¯·Î¿ï °ÍÀΰ¡¸¦ ´À³¥ ¼ö ÀÖÀ» °ÍÀÌ´Ù.
 | C ¾ð¾î ¹®¹ý°ú °í±Þ ÇÁ·Î±×·¡¸Ó°¡ µÇ´Â ±æ |  | |  | |
| ÀÎÅͳݿ¡ ¶°µµ´Â À̾߱â 1 - ÄË Åè½¼°ú µ¥´Ï½º ¸®Ä¡ÀÇ °¡»ó ÀÎÅͺä
¿ì¸° ¸Öƽ½º¸¦ º¸°í(°¡´ÉÇÑÇÑ ¾ÆÁÖ º¹ÀâÇÏ°í ¾ÏÈ£°°ÀÌ ¸ðÈ£ÇØ¼) ÀÏ¹Ý »ç¿ëÀÚµéÀº ¾Æ¿¹ »ç¿ëÇÒ ¾öµÎ¸¦ ³»Áöµµ ¸øÇÒ »õ·Î¿î ½Ã½ºÅÛÀ» ¼³°èÇß½À´Ï´Ù. ±×¸®°í ¸Öƽ½ºÀÇ ÆÐ·¯µð·Î À̸§À» À¯´Ð½º·Î Á¤ÇßÁÒ. ¹¹ ÀϺδ Á» ºñ²¿´Â µíÇÑ ¾Ï½Ã¸¦ ÁÖ±â À§ÇÑ ÀÌÀ¯µµ ÀÖ¾úÁö¸¸¿ä. ±× ´ÙÀ½ µ¥´Ï½º¿Í ºê¶óÀ̾ðÀº ÆÄ½ºÄ®À» ¿ÏÀüÈ÷ µÚ¼¯¾î ³õÀº µíÇÑ ¾ð¾î¸¦ ¸¸µé°í À̸§À» `A`¶ó°í Çß½À´Ï´Ù.
±× µÚ »ç¶÷µéÀÌ ±× ¾ð¾î·Î ÁøÂ¥ Áß¿äÇÑ ÇÁ·Î±×·¥À» °³¹ßÇÏ·Á°í ½ÃµµÇϰí ÀÖ´Ù´Â °ÍÀ» ¾Ë°í ³ª¼ ¿ì¸®´Â À绡¸® ¾ð¾î¸¦ ¾ÏÈ£ÈÇØ¼ ´õ¿í »ç¿ëÇÏ±â ¾î·Æ°Ô ¸¸µé¾ú°í ÀÌ ¾ð¾î´Â `B`¸¦ °ÅÃÄ BCPL, ±×¸®°í °á±¹ C°¡ µÇ¾ú½À´Ï´Ù. ¿ì¸° ´ÙÀ½°ú °°Àº ¹®ÀåÀ» ±ú²ýÇÏ°Ô ÄÄÆÄÀÏÇÒ ¼ö ÀÖÀ» ¶§°¡ µÅ¼¾ß ºñ·Î¼Ò °³¹ßÀ» Áß´ÜÇß½À´Ï´Ù.
for(;P("\n"),R-;P("|"))for(e=C; e-; P("_"+(*u++/8)%2))P("|"+(*u/4)%2);
Çö´ëÀÇ ÇÁ·Î±×·¡¸ÓµéÀÌ ÀÌ·¸°Ô ¾ÏÈ£ °°Àº ¹®ÀåÀ» Çã¿ëÇÏ´Â °³¶± °°Àº ¾ð¾î¸¦ »ç¿ëÇÒ °ÍÀ̶ó°í´Â ÀüÇô »ý°¢Áö ¸øÇß½À´Ï´Ù. ±×°Ç ¿ì¸®ÀÇ »ó½Ä ¹ÛÀ̾úÁÒ. ¿ì¸° ½ÇÁ¦·Î ÀÌ°É ¼Ò·Ã¿¡ ÆÈ¾Æ¼ ¼Ò·ÃÀÇ ÄÄÇ»ÅÍ °úÇбâ¼úÀ» 20³â ÀÌ»ó Åðº¸ÇÏ°Ô ¸¸µé »ý°¢À̾ú°Åµç¿ä.
ÀÎÅͳݿ¡ ¶°µµ´Â À̾߱â 2 - ÃÊ±Þ ÇÁ·Î±×·¡¸Ó¿Í °í±Þ ÇÁ·Î±×·¡¸ÓÀÇ Â÷ÀÌ
´ÙÀ½Àº ¸ðµÎ ¸ð´ÏÅÍ È¸é¿¡ "Hello, World"¸¦ Âï±â À§ÇÑ ÇÁ·Î±×·¥ÀÔ´Ï´Ù.
´ëÇÐ ½ÅÀÔ»ý
program Hello(input, output)
begin
writeln('Hello World')
end.
½ÅÀÓ ±³¼ö
#include
void main(void) {
char *message[] = {"Hello ", "World"};
int i;
for(i = 0; i < 2; ++i)
printf("%s", message[i]);
printf("\n");
}
°è¾àÁ÷ Àü¹®°¡
#include
class string {
private:
int size;
char *ptr;
public:
string() : size(0), ptr(new char('\0')) {}
string(const string &s) : size(s.size) {
ptr = new char[size + 1];
strcpy(ptr, s.ptr);
}
~string() {
delete [] ptr;
}
friend ostream &operator <<(ostream &, const string &);
string &operator=(const char *);
};
// »ý·«...
str = "Hello World";
cout << str << endl;
return(0);
}
¼÷·ÃµÈ ÇØÄ¿
% cc -o a.out ~/src/misc/hw/hw.c
±¸·ç(ÁöÁ¸) ÇØÄ¿
% cat
Hello, world.
^D | | | | | |
| |
´Ù¾çÇÑ ÇÁ·Î±×·¡¹ÖÀÇ Æ²À» Ȱ¿ëÇÒ ¼ö Àִ°¡?
ÈçÈ÷ ¸»ÇÏ´Â °´Ã¼ÁöÇâ ¾ð¾î°¡ ¾Æ´Ñ HaskellÀ̳ª SchemeÀ» »ç¿ëÇØ¼µµ C#À̳ª ÀÚ¹Ù¿Í °°Àº °´Ã¼ÁöÇâ ¾ð¾î°¡ ÇϰíÀÚ ÇÏ´Â ¸Þ½ÃÁö Àü´Þ(message-passing) ÇÁ·Î±×·¡¹Ö ±â¹ýÀ» »ç¿ëÇÒ ¼ö ÀÖ´Ù. ´ÙÀ½ ÇÁ·Î½ÃÀú´Â ÀÎÃâ °è»ê±â¸¦ Ç¥ÇöÇÏ´Â ÇÁ·Î½ÃÀúÀÌ´Ù.
(define (make-withdraw balance)
(lambda (amount)
(if (>= balance amount)
(begin (set! balance (- balance amount)
balance)
"ÀÜ°í ºÎÁ·")
´ÙÀ½°ú °°ÀÌ make-withdraw¸¦ 2¹ø ¼±¾ðÇϸé W1°ú W2´Â µÎ °³ÀÇ ¹°Ã¼¸¦ ¸¸µå´Â ¸ñÀûÀ¸·Î »ç¿ëÇÒ ¼ö ÀÖ´Ù. W1°ú W2´Â °¢°¢ ÀڽŸ¸ÀÇ »óꝼö balance¸¦ °¡Áö°í ÀÖ´Â ¿ÏÀüÇÑ µ¶¸³¹°Ã¼ÀÌ´Ù.
(define (W1 (make-withdraw 100))
(define (W2 (make-withdraw 200))
´ÙÀ½°ú °°ÀÌ Çϸé ÀÎÃâ»Ó¸¸ ¾Æ´Ï¶ó ¿¹±Ý(deposit)À» °ü¸®ÇÏ´Â ¹°Ã¼µµ ¸¸µé ¼ö ÀÖ°í, ±×·¸°Ô ÇÏ¸é °£´ÜÇÑ ÀºÇà °èÁ¸¦ Ç¥ÇöÇÏ°Ô µÈ ¼ÀÀÌ´Ù. ´ÙÀ½Àº Ãʱâ ÀÜ°í¸¦ ÁÖ°í ¡®ÀºÇà °èÁ¡¯¸¦ ¸¸µé¾î ÁÖ´Â ÇÁ·Î½ÃÀú´Ù.
(define (make-account balance)
(define (withdraw amount)
(if (>= balance amount)
(begin (set! balance (- balance amount))
balance)
"Insufficient funds"))
(define (deposit amount)
(set! balance (+ balance amount))
balance)
(define (dispatch m)
(cond ((eq? m 'withdraw) withdraw)
((eq? m 'deposit) deposit)
(else (error "Unknown request -- MAKE-ACCOUNT"
m))))
dispatch)
ÀÌ¿Í °°ÀÌ ¸¸µç make-account´Â °èÁ¸¦ Ç¥ÇöÇÏ´Â ¿ÏÀüÇÑ µ¶¸³ ¹°Ã¼, Áï °´Ã¼·Î µ¿ÀÛÇϰí, Dispatch ÇÁ·Î½ÃÀú ±× ÀÚü°¡ ÀºÇà °èÁ ¹°Ã¼¸¦ Ç¥ÇöÇÏ´Â °ªÀÌ µÈ´Ù. ÀÌ´Â °´Ã¼ÁöÇâ ÆÐ·¯´ÙÀÓÀ» ¿ÏÀüÇÏ°Ô ±¸ÇöÇÑ´Ù. ¶ÇÇÑ ¹èÁ¤¹®À» »ç¿ëÇÏ¿© ¸Þ¸ð¸®ÀÇ ÁöÁ¤ÇÑ °÷¿¡ °ªÀ» ÀúÀåÇÒ ¼ö ÀÖ´Ù´Â Á¡¿¡¼ ±â°è Á᫐ ÆÐ·¯´ÙÀÓÀ» »ç¿ëÇÒ ¼ö Àִ ȯ°æÀ̶ó´Â °Í ¶ÇÇÑ ¾Ë ¼ö ÀÖ´Ù.
C/C++, C#, ÀÚ¹Ù µîÀÇ ¾ð¾î ÆÐ·¯´ÙÀÓÀÎ ÀÌ ¹æ½ÄÀº ÄÄÇ»ÆÃ ¿ª»ç(Computing History)¸¦ ¼øÂ÷ÀûÀ¸·Î Ç®¾î¾ß ÇÏ´Â ¹®Á¦¿¡ °¡Àå ÀûÇÕÇÑ ¹æ½ÄÀÌ´Ù. ÇÏÁö¸¸ µæÀÌ ÀÖÀ¸¸é ½ÇÀÌ ÀÖ´Â ¹ý, ¹èÁ¤ ¸í·ÉÀÇ »ç¿ë¿¡¼ ¹ß»ýÇÏ´Â ¼Õ½ÇÀº ´ç¿¬È÷ ¹ß»ýÇÑ´Ù. ¹èÁ¤ ¸í·ÉÀ» »ç¿ëÇÏÁö ¾Ê´Â´Ù¸é, °°Àº ÇÁ·Î½ÃÀú¸¦ ÀÎÀÚ·Î ÇÁ·Î½ÃÀú¸¦ ½ÇÇàÇÏ¸é ¾ðÁ¦³ª °°Àº °ªÀÌ ³ª¿À°Ô µÈ´Ù. Square¸¦ °è»êÇÏ´Â ´ÙÀ½°ú °°Àº ÇÔ¼ö°¡ ÀÖ´Ù°í ÇÏÀÚ.
square(x) = x * x
ÇÔ¼ö¸¦ ¿¬»êÇÏ´Â ÇÁ·Î½ÃÀú¸¦ ´ÙÀ½°ú °°ÀÌ ÀÛ¼ºÇÒ ¼ö ÀÖ´Ù.
(define (square x) (* x x))
ÀÛ¼ºµÈ ÇÁ·Î½ÃÀú¿¡ 2 °ªÀ» ÁÖ¸é ¾ðÁ¦³ª 4¶ó´Â °ªÀ» ¹ÝȯÇÑ´Ù. ÀÌ·± °æ¿ì ÇÁ·Î½ÃÀú¸¦ ¼öÇÐÀû ÇÔ¼ö(Function)·Î º¼ ¼ö ÀÖ°í, À̸¦ °ª Áß½É(Value-Oriented) ÇÁ·Î±×·¡¹ÖÀ̶ó°í ÇÑ´Ù. '´ëÄ¡ °è»ê ¸ðµ¨(Substitution Model)¡¯Àº ÇÁ·Î½ÃÀúÀÇ Àû¿ëÀ̶õ ÀÎÀÚ¸¦ °ªÀ¸·Î ¹Ù²Ù¾î¼ ÇÁ·Î½ÃÀúÀÇ °ªÀ» °è»êÇÏ´Â ¹æ¹ýÀ¸·Î, °ª(ÇÔ¼ö) Á᫐ ÆÐ·¯´ÙÀÓ(Functional Paradigm) Àü°³ ¹æ½ÄÀÌ´Ù. Á¦°öµéÀÇ ÇÕÀ» °è»êÇÏ´Â sumofsquare ÇÔ¼ö´Â ´ÙÀ½°ú °°ÀÌ ÀÛ¼ºµÈ´Ù.
sumofsquare(x) = square(x) + square(x)
ÇÏÁö¸¸ ¹èÁ¤¹®À» »ç¿ëÇÒ ¶§ ´ëÄ¡ ¸ðµ¨Àº ´õ ÀÌ»ó »ç¿ëÇÒ ¼ö ¾ø°Ô µÈ´Ù. ÇÁ·Î±×·¡¹Ö ¾ð¾î¿¡¼ ³Î¸® »ç¿ëµÇ´Â °³Ã¼¿Í ¹èÁ¤ ¸í·ÉÀº »ç½Ç ±× ÀûÀýÇÑ ÀÌ·ÐÀû ±â¹ÝÀ̳ª ±ò²ûÇÑ ¼öÇÐÀûÀÎ ¸ðµ¨ÀÌ Á¸ÀçÇÏÁö ¾Ê±â ¶§¹®ÀÌ´Ù.
¹èÁ¤ ¸í·ÉÀº ¹®Á¦¸¦ º¹ÀâÇÏ°Ô ¸¸µç´Ù. ¹èÁ¤ ¸í·ÉÀÌ ¾î¶² ½ÄÀ¸·Î ¹®Á¦¸¦ º¹ÀâÇÏ°Ô ¸¸µé ¼ö ÀÖ´ÂÁö ¾Ë¾Æº¸±â À§ÇØ ÀÏÁ¤ ±Ý¾× balance¿¡¼ ÀÔ·ÂÇÑ ±Ý¾×À» »©´Â make-decrementer ÇÁ·Î½ÃÀú¸¦ ÀÛ¼ºÇØ º¸ÀÚ. ¹èÁ¤ ¸í·É¹®À» »ç¿ëÇÏÁö ¾Ê¾Ò±â ¶§¹®¿¡, ±Ý¾×À» ´©ÀûÇÏ´Â È¿°ú´Â ¾ø´Ù.
(define (make-decrementer balance)
(lambda (amount)
(- balance amount)))
¹èÁ¤¹®À» »ç¿ëÇÏÁö ¾ÊÀ¸¹Ç·Î ´ëÄ¡ ¸ðµ¨·Î make-decrementer°¡ ¾î¶»°Ô ½ÄÀÇ °è»ê °úÁ¤À» ºÐ¼®ÇÏ¿© ¾î¶»°Ô µ¿ÀÛÇÏ´ÂÁö¸¦ ¾Ë¾Æ³¾ ¼ö ÀÖ´Ù.
((make-decrementer 25) 20)
½ÄÀ» Á¶ÇÕÇÏ´Â ¿¬»êÀÚ¸¦ °£·«ÇÏ°Ô ¸¸µé±â À§ÇØ make-decrementer¸¦ ÆîÄ¡°í balance¸¦ 25·Î ´ëÄ¡ÇÑ´Ù. ±×·¯¸é ´ÙÀ½°ú °°Àº ½ÄÀ¸·Î ÁÙÀÏ ¼ö ÀÖ´Ù.
((lambda (amount) (- 25 amount)) 20)
ÀÌÁ¦ lambda ½Ä ³»ÀÇ amount¸¦ 20À¸·Î ´ëÄ¡ÇØ¼ ¿¬»êÀÚ¸¦ Àû¿ëÇÏ¸é ´ÙÀ½°ú °°´Ù.
(- 25 20)
¸¶Áö¸· °è»ê °á°ú´Â 5´Ù. ±×·¯³ª ¹èÁ¤¹®À» »ç¿ëÇÑ ´ÙÀ½ ÇÁ·Î½ÃÀú´Â ÀÌ¿Í °°Àº °á°ú¸¦ ±â´ëÇÒ ¼ö ¾ø°Ô µÈ´Ù.
(define (make-simplified-withdraw balance)
(lambda (amount)
(set! balance (- balance amount))
balance))
°°Àº ¹æ½ÄÀ¸·Î make- simplified-withdraw¸¦ ºÐ¼®ÇØ º¸ÀÚ.
((make-simplified-withdraw 25) 20)
¸ÕÀú ¿¬»êÀÚ¸¦ °£·«ÇÏ°Ô ¸¸µé±â À§ÇØ make-simplified-withdraw ³»ÀÇ balance¸¦ 25·Î ´ëÄ¡ÇÏ¸é ´ÙÀ½°ú °°Àº ½ÄÀÌ µÈ´Ù.
((lambda (amount) (set! balance (- 25 amount)) 25) 20)
ÀÌÁ¦ lambda ½ÄÀÇ amount¸¦ 20À¸·Î ´ëÄ¡ÇÏ¿© ¿¬»êÀÚ¸¦ Àû¿ëÇÑ´Ù.
(set! balance (- 25 20)) 25
¾ö°ÝÇÏ°Ô ´ëÄ¡ ¸ðµ¨¿¡ µû¶ó ÀÌ ÇÁ·Î½ÃÀú Àû¿ë °úÁ¤ÀÌ ¶æÇÏ´Â ¹Ù¸¦ ¼³¸íÇØ¾ß ÇÑ´Ù¸é, ¿ì¼± balance¸¦ 5·Î µÐ ´ÙÀ½, 25°¡ Àüü ½ÄÀ» °è»êÇÑ °ªÀÌ µÈ´Ù°í ÇÒ ¼ö¹Û¿¡ ¾ø´Ù. Áï, ÀÌ·± ½ÄÀ¸·Î °è»êÇÏ¸é Æ²¸° ´äÀÌ ³ª¿Â´Ù. ¸Â´Â ´äÀ» ¾òÀ¸·Á¸é ¾î¶»°Ôµç ù ¹øÂ°(set! ½ÇÇàÀÇ È¿°ú¸¦ ¹Ý¿µÇϱâ ÀüÀÇ) balance¿Í µÎ ¹øÂ°(set!À» ½ÇÇàÇÑ È¿°ú°¡ ¹Ý¿µµÈ) balance¸¦ ¹Ýµå½Ã ±¸ºÐÇÒ ¼ö ÀÖ¾î¾ß¸¸ ÇÑ´Ù. ±×·¯³ª ´ëÄ¡ ¸ðµ¨·Î´Â ÀÌ·± Çö»óÀ» ¼³¸íÇÒ ¼ö ¾ø´Ù.
ÀÌ·± ¹®Á¦°¡ »ý±â´Â ¿øÀÎÀº °á±¹ ´ëÄ¡ ¸ðµ¨ÀÌ ¾ð¾î ³»ÀÇ ½É¹úÀ̶õ °ª¿¡ ºÙÀÎ À̸§ÀÏ »ÓÀ̶ó´Â »ç½Ç¿¡ ¹ÙÅÁÀ» µÎ°í Àֱ⠶§¹®ÀÌ´Ù. ±×·¯³ª set!À» ¾²¸é¼ º¯¼öÀÇ °ªÀ» ¹Ù²Ü ¼ö ÀÖ°Ô µÇ¸é¼ºÎÅÍ º¯¼ö´Â ±×Àú À̸§ÀÏ ¼ö°¡ ¾ø´Ù. ÀÌÁ¦ º¯¼ö´Â ¾î¶»°Ôµç °ªÀ» ÀúÀåÇß´Ù°¡ Çʿ信 µû¶ó ¹Ù²Ü ¼öµµ ÀÖ´Â ¡®ÀúÀå¼Ò¡¯¸¦ °¡¸®Å°°Ô µÈ´Ù.
¾î¶² ¾ð¾î¿¡¼ ¾ðÁ¦³ª ½ÄÀÇ °á°ú¿¡ ¿µÇâÀ» ÁÖÁö ¾Ê°í ¡®°°Àº °ÍÀ¸·Î °°Àº °ÍÀ» ´ëÄ¡ÇÒ ¼ö ÀÖ´Ù¡¯´Â °³³äÀÌ º¸ÀåµÈ´Ù¸é, ±× ¾ð¾î°¡ ¡®ÂüÁ¶¿¡ Åõ¸í(referentially transparent)¡¯ÇÏ´Ù°í ¸»ÇÑ´Ù. ¿ì¸®°¡ ½á¿Â ÄÄÇ»ÅÍ ¾ð¾î¿¡¼ ¹èÁ¤¹®À» ¾²°Ô µÇ´Â °æ¿ì ÂüÁ¶ Åõ¸í¼ºÀ» º¸ÀåÇÒ ¼ö ¾ø´Ù. ÀÌ·Î ÀÎÇØ ¾ðÁ¦ ´ëÄ¡ ¸ðµ¨À» ½á¼ ½ÄÀ» ÁÙ¿©µµ µÇ´ÂÁö ÆÇ´ÜÇϱ⠽±Áö ¾Ê´Ù. °á±¹, ¹èÁ¤ ¸í·ÉÀ» »ç¿ëÇÏ´Â ÇÁ·Î±×·¥Àº ¾öû³ª°Ô ³íÁõÇϱⰡ ¾î·Á¿öÁø´Ù.
ÀÏ´Ü ÂüÁ¶ Åõ¸í¼ºÀ» Æ÷±âÇÏ°í ³ª¸é µÎ °´Ã¼°¡ ¡®°°´Ù¡¯´Â °³³äÀ» Á¤ÇüÀû ¹æ¹ýÀ¸·Î Àâ¾Æ³»´Â °Ô ¾î·Á¿öÁø´Ù. »ç½Ç, ½Ç¼¼°è¿¡¼´Â ¡®°°´Ù¡¯´Â ÀǹÌ, ±× ÀÚü°¡ ±ò²ûÇÏÁö ¾Ê´Ù. ÀϹÝÀûÀ¸·Î È®½ÇÈ÷ µ¿ÀÏÇÑ µÎ °³Ã¼°¡ Á¤¸» °°ÀºÁö Áõ¸íÇÒ ¼ö ÀÖ´Â À¯ÀÏÇÑ ¹æ¹ýÀº ÇÑ °³Ã¼¸¦ °íÃÆÀ» ¶§ ´Ù¸¥ °³Ã¼µµ °°Àº ¹æ½ÄÀ¸·Î º¯ÇÏ´ÂÁö¸¦ »ìÆìº¸´Â °ÍÀÌ´Ù. ±×·¯³ª ¡®°°Àº¡¯ °³Ã¼¸¦ µÎ ¹ø °üÂûÇØ¼ ±× °³Ã¼°¡ °¡Áö´Â ¾î¶² ¼Ó¼ºÀÌ Ã³À½°ú ´Ù¸£´Ù´Â »ç½ÇÀ» È®ÀÎÇÏ´Â °Í ¿Ü¿¡ Á¤¸» ÇϳªÀÇ °³Ã¼°¡ ¡®º¯Çß´Ù¡¯°í ¸»ÇÒ ¼ö ÀÖ´Â ´Ù¸¥ ¹æ¹ýÀÌ ÀÖÀ»±î? ±×·¡¼ ¡®°°À½¡¯ÀÇ °³³äÀ» ¸ÕÀú Á¤¸³ÇÏÁö ¾Ê°í¼´Â ¡®º¯È¡¯¸¦ ÆÇ´ÜÇÒ ¹æ¹ýÀÌ ¾ø´Â °ÍÀ̰í, º¯ÈÀÇ È¿°ú¸¦ »ìÇÇÁö ¾Ê°í¼´Â °°À½À» ÀÔÁõÇÒ ¼ö ¾ø´Â °ÍÀÌ´Ù.
C#À̳ª ÀÚ¹Ù °°Àº ¾ð¾î¿¡¼ °ª ŸÀÔÀÇ ¡®°°À½¡¯°ú ÂüÁ¶ ŸÀÔÀÇ ¡®°°À½¡¯ÀÌ È®¿¬ÇÏ°Ô ±¸ºÐµÇ´Â ÀÌÀ¯µµ ¹Ù·Î ¿©±â¿¡ ÀÖ´Ù. ÇÏÁö¸¸ C/C++, ÀÚ¹Ù, C# µîÀÇ ¾ð¾î¸¦ »ç¿ëÇÑ´Ù¸é ¿ì¼±ÀÇ ±¸ÇöÀÌ ´«¾ÕÀ» °¡¸®°Ô µÇ°í ±× ±¸Çö¿¡¸¸ ±Þ±ÞÇϸé ÇÁ·Î±×·¡¹Ö ¾ð¾îÀÇ ¸ñÀûÀÎ ¹®Á¦¸¦ ¿Ã¹Ù¸¥ ¹æ¹ýÀ¸·Î ÇØ°áÇÏ´Â µ¥¿¡ ´ëÇÑ »ý°¢ÀÌ ¹«»öÇØÁö°Ô µÈ´Ù.
SICP¿¡¼´Â ÀÌ·± ¹®Á¦ÀÇ ÇØ°áÀ» À§ÇÏ¿© ½ºÆ®¸®¹Ö ÆÐ·¯´ÙÀÓ(Streaming Paradigm)À̶ó´Â ±â¹ýÀ» Á¦¾ÈÇϰí, ¡°ÀÌ·¸°Ô ÁÁÀº ´ë¾ÈÀÌ Àִµ¥µµ ¿©ÀüÈ÷ ¹«½ÄÇÑ ±â¹ýÀ» ¾µ·¡?¡±¶ó°í ¹¯´Â´Ù. ¿©·¯ ÆÐ·¯´ÙÀÓÀ» ´Ù ¼ö¿ëÇÒ ¼ö ÀÖ´Â ¾ð¾î¸¦ ù ¾ð¾î·Î ¼±ÅÃÇÔÀ¸·Î½á ¾òÀ» ¼ö ÀÖ´Â ÀÌÁ¡Àº ¹Ù·Î ÀÌ·± °ÍÀ̶ó ÇÒ ¼ö ÀÖ´Ù. ÇÁ·Î±×·¡¹ÖÀ» ¾÷À¸·Î »ï´Â »ç¶÷°ú ±×·¸Áö ¾ÊÀº »ç¶÷À» ¸··ÐÇϰí, ¿©·¯ ¹æÇâÀ¸·Î ¹®Á¦¸¦ ÇØ°áÇÒ ¼ö ÀÖ´Â ¹æ¹ýÀ» Á¦½ÃÇϰí, ¹®Á¦¸¦ ÇØ°áÇÏ´Â ¹æ¹ý¿¡ ´ëÇÑ ¿ø·ÐÀ» Á¦½ÃÇÔÀ¸·Î½á ´Ù¸¥ ¹®Á¦¿¡ ºÎµúÈ÷°Ô µÉ ¶§ ¿Ã¹Ù¸¥ ÇØ°á ¹æ¾ÈÀ» ã¾Æ°¥ ¼ö ÀÖ´Â ±æÀ» ¿¾îÁشٴ °ÍÀÌ´Ù.
¸Æ¶ôÀ» Á¦°ÅÇÑ ¾ð¾îÀÇ ¿ì¿ ³íÀÇ´Â ÀÇ¹Ì ¾ø´Ù
ÀÌ ±ÛÀ» ÀÐÀº µ¶ÀÚ°¡ ¡°±×·¸´Ù¸é ÀÚ¹Ù°¡ ¾È ÁÁÀº ¾ð¾î¶ó´Â ¸»ÀԴϱî?¡° ¶Ç´Â ¡±Áö±Ý ¿½ÉÈ÷ C#À» ¹è¿ì±â ½ÃÀÛÇߴµ¥ ¸»Â¯ ÇêÀÏÀ̾ú´Ù´Â ¸»ÀԴϱî?¡°¶ó°í Áú¹®ÇÒ Áöµµ ¸ð¸£°Ú´Ù. ÇÊÀÚ¿¡°Ô ´©±º°¡ ±×·± Áú¹®À» Á÷Á¢ ÇÑ´Ù¸é Àû´çÇÑ ¸»·Î ¾ó¹ö¹«¸®°Å³ª ±× ÀÚ¸®¸¦ ÇÇÇÏ·Á ÇÒ °ÍÀÌ´Ù. ±×·± Áú¹® ÀÚü°¡ ³Í¼¾½ºÀ̱⠶§¹®ÀÌ´Ù.
¾îµð¸¦ °¡µçÁö ÀÚ½ÅÀÌ Çϰí ÀÖ´Â °ÍÀÌ ¿ÇÀº °ÍÀÌ°í ´õ Èûµç °ÍÀÌ¸ç ½É¿ÀÇÑ ¿µ¿ª¿¡ ÀÖ´Â °ÍÀ̶ó°í »ý°¢ÇÏ´Â »ç¶÷µéÀÌ ÀÖ´Â ¹ýÀÌ´Ù. µ¶ÀϾ ¾²´Â °Ô¸£¸¸ Á·ÀÌ ¸Ó¸®°¡ ÁÁÀº ÀÌÀ¯°¡ µ¶ÀϾîÀÇ »ç¿ëÀÌ »ç¿ëÀÚÀÇ Á¤½Å ´É·ÂÀ» Çâ»ó½ÃŰ´Â µ¥ ÀÏÁ¶Çϱ⠶§¹®À̶ó´Â ¿¬±¸°¡ ³ª¿Â Àûµµ ÀÖ¾ú´Ù. ÇÏÁö¸¸ ¾ð¾îÇÐÀÚµéÀÇ ¿¬±¸ °á°ú´Â ÇÑ ¾ð¾î°¡ Ç¥ÇöÇÒ ¼ö ÀÖ´Â °ÍÀº ´Ù¸¥ ¸ðµç ¾ð¾î·Îµµ Ç¥Çö °¡´ÉÇÏ´Ù´Â °ÍÀ̾ú´Ù. µû¶ó¼ ÀÚ¹Ù¿Í C# µî ¾ð¾îÀÇ ¿ì¿ ³íÀÇ´Â ¹«ÀǹÌÇÑ °ÍÀÌ´Ù.
ÀڹٷΠǥÇö °¡´ÉÇÑ °ÍÀº C#À¸·Îµµ Ç¥Çö °¡´ÉÇϱ⠶§¹®ÀÌ´Ù. ¹®Á¦´Â ÀÚ¹Ù ¶Ç´Â C#À» °¡Áö°í ÁÖ¾îÁø ¹®Á¦¸¦ ¾î¶»°Ô Ç¥ÇöÇÏ´À³Ä Çϴµ¥ ´Þ¸° °ÍÀ̹ǷΠ°¢ ¾ð¾îÀÇ ¿ìÀ§¸¦ ±¸ºÐÇÏ´Â °ÍÀº ¾ÆÁÖ ¾î¸®¼®Àº ÀÏÀÌ µÈ´Ù.
¿©·¯ ÀÎÅÍ³Ý °Ô½ÃÆÇ¿¡¼ ¾ÆÁ÷µµ C ¾ð¾î¸¦ °¡¸£Ä¡°í ÀÖ´Â ±¹³» ´ëÇÐÀÇ Çö½Ç¿¡ °³ÅºÇÏ¸é¼ ÀÌÁ¦´Â C µûÀ§´Â ¹ö¸®°í ÀÚ¹Ù¸¦ °¡¸£ÃÄ¾ß ÇÑ´Ù°í ¸ñû ³ô¿© ¿ÜÄ¡´Â ±ÛÀ» ¿©·¯ ¹ø ºÃ´Ù. C ¾ð¾î¸¦ °¡Áö°í Çϵå¿þ¾î¸¦ Á÷Á¢ Á¦¾îÇÒ ÀÏÀÌ º°·Î ¾ø´Â Áö±ÝÀÇ Çö½Ç¿¡¼ C ¾ð¾î¸¦ ¹è¿ì´Â °ÍÀÌ Å« Àǹ̰¡ ¾ø´Ù´Â ÁÖÀåÀÌ´Ù. C/C++°¡ ±â°è¿¡ Á÷Á¢ ¸í·ÉÀ» ³»¸®±â¿¡ ¾ÆÁÖ ÀûÇÕÇÑ ±¸Á¶ÀÇ ¾ð¾î¶ó´Â °ÍÀº È®½ÇÇÏ´Ù. ±×¸®°í ¶Ç ÇÑ °¡Áö È®½ÇÇÑ °ÍÀº ´ëÇп¡¼ ¹è¿ì´Â Á¤µµÀÇ C/C++·Î´Â Çϵå¿þ¾î¸¦ È®½ÇÇÏ°Ô Á¦¾îÇÏ±â ¾î·Æ´Ù´Â °ÍÀÌ´Ù(API¸¦ Á¶ÀÛÇϰųª OS ·¹º§À» Á¶ÀÛÇÏ¿© °á°ú¸¦ ¾ò¾î³»´Â °æ¿ìµµ ÀÖ±ä ÇÏ´Ù. ÇÊÀÚ´Â ÇÑ ÇлýÀÌ OS ·¹º§À» Á¶ÀÛÇÑ ÇÁ·Î±×·¥À¸·Î ºí·ç ½ºÅ©¸°ÀÌ ¾Æ´Ñ ·¹µå ½ºÅ©¸°À» ȸ鿡 ÆîÄ¡°í ÀÖ´Â °ÍÀ» º» ÀûÀÌ ÀÖ´Ù).
¿©±â±îÁö ½Å°æ ½á¼ ±ÛÀ» ÀÐÀº µ¶ÀÚµéÀ̶ó¸é ÇÊÀÚ°¡ ¹«½¼ ¸»À» Çϰí ÀÖ´ÂÁö ÀÌÇØÇÒ ¼ö ÀÖÀ» °ÍÀ̶ó ¹Ï´Â´Ù. ¿äÁò ½Ã´ë¿¡ ¼±ÅÃÇØ¼ »ç¿ëÇÒ ¼ö ÀÖ´Â ÇÁ·Î±×·¡¹Ö ¾ð¾î´Â ¼ö¾øÀÌ ¸¹´Ù. ÀÌ·¸°Ô ¸¹Àº ¾ð¾îµé Áß¿¡¼ ¾î¶² ¾ð¾î¸¦ ÀÚ½ÅÀÇ Ã¹ ¾ð¾î·Î ¼±ÅÃÇÏ¿©¾ß ÇÒ±î? ¹°·Ð ¾Æ¹« ¾ð¾î³ª ¼±ÅÃÇØ¼ °øºÎÇØµµ ¿½ÉÈ÷¸¸ °øºÎÇÏ°í ¾ð¾îÀÇ ¸Æ¶ôÀ» ÀÌÇØÇÏ¿© ¹®Á¦ ÇØ°á¿¡ ÁýÁßÇÒ ¼ö ÀÖ´Ù¸é »ó°ü¾ø´Ù. ÇÏÁö¸¸ ù ¾ð¾î°¡ ¾ÕÀ¸·ÎÀÇ ÇÁ·Î±×·¡¸Ó·Î¼ÀÇ Àλý¿¡ Å©°Ô ¿µÇâ·ÂÀ» ¹ÌÄ¡´Â Áß¿äÇÑ ¿ä¼Ò°¡ µÉ °ÍÀÓÀ» »ý°¢ÇÑ´Ù¸é ù ¾ð¾îÀÇ ¼±ÅÃÀº ½ÅÁßÇØ¾ß ÇÒ Çʿ䰡 ÀÖ´Ù. ÀÌÁ¦ °á·ÐÀ» ³»·Áº¸ÀÚ. ù ¹øÂ° ÇÁ·Î±×·¡¹Ö ¾ð¾îÀÇ ¼±ÅÃÀº ´ÙÀ½ µÎ °¡Áö ±âÁØÀ» ¸ðµÎ ¸¸Á·ÇØ¾ß ÇÑ´Ù.
¡ß ÇöÀçÀÇ ÇÁ·Î±×·¡¹Ö ±â¼úÀ» ÃæºÐÈ÷ ¸Àº¼ ¼ö Àִ°¡?
¡ß ´Ù¾çÇÑ ¹æ½ÄÀ¸·Î ÇÁ·Î±×·¡¹ÖÇÒ ¼ö ÀÖ´Â »ý°¢À» °®Ãâ ¼ö ÀÖµµ·Ï Çϴ°¡?
ÇÑ ¸¶µð·Î ¸»ÇÏÀÚ¸é °í±Þ ¹®Á¦¸¦ ½±°Ô ÇØ°áÇÒ ¼ö ÀÖ°í, ƯÁ¤ ÆÐ·¯´ÙÀÓ¿¡ Á¾¼ÓÀûÀÎ »ç°í¸¦ °¿äÇÏÁö ¾ÊÀ¸¸é¼µµ ¸ðµç ÆÐ·¯´ÙÀÓÀ» ´Ù ¼ö¿ëÇÒ ¼ö ÀÖ´Â ¾ð¾î¶ó¸é ¾Æ¹«°Å³ª °ñ¶ó ½áµµ ÁÁ´Ù´Â ¸»ÀÌ´Ù. ¹°·Ð ±×·¸°Ô ¼±ÅÃÇÏ¿© ¹è¿î ¾ð¾î°¡ »ê¾÷ ÇöÀå¿¡ ÅõÀԵǾúÀ» ¶§ ±×´ÙÁö ¸¹ÀÌ È°¿ëµÇÁö ¾Ê´Â ¾ð¾îÀÏ ¼öµµ ÀÖ´Ù. ÇÏÁö¸¸ ÀÌ µÎ °¡Áö ±âÁØÀ» ¸ðµÎ ¸¸Á·ÇÏ´Â ¾ð¾î¸¦ »ç¿ëÇÏ¿© ¿©·¯ ÆÐ·¯´ÙÀÓÀ» Àü°³ÇÏ¸ç ¹®Á¦¸¦ ÇØ°áÇÏ´Â ¹æ½ÄÀ» ÃæºÐÈ÷ ½ÀµæÇß´Ù¸é ±× »ç¶÷Àº ¾Æ¸¶ ¿©·¯ »ç¶÷ÀÌ °¨ÅºÇÏ´Â ÁÁÀº ÇÁ·Î±×·¥À» ÀÛ¼ºÇϰí ÀÖÀ» °ÍÀÌ´Ù.
¾ÆÁ÷µµ C/C++ ¶Ç´Â ÀÚ¹Ù, C#À» ù ÇÁ·Î±×·¡¹Ö ¾ð¾î·Î °øºÎÇÏ´Â °ÍÀÌ ¿Ç´Ù°í »ý°¢ÇÏ´Â »ç¶÷ÀÌ ÀÖ´Ù¸é MS°¡ 2006³â¿¡ ¹ß¸ÅÇÒ ¿¹Á¤ÀÎ À©µµ¿ì ·ÕÈ¥ÀÇ ±ÇÀå »ç¾çÀ» »ìÆìº¸¶ó. À©µµ¿ì ·ÕÈ¥ÀÌ ³ª¿Ã ¶§ÂëÀ̸é CPU°¡ 2°³ ´Þ¸®°í ÇöÀç·Î¼´Â »ó»óÇÒ ¼ö ¾ø´Â Å« ¸Þ¸ð¸®°¡ ÀåÂøµÈ ÄÄÇ»Å͸¦ Ȩ¼îÇο¡¼ ÆÇ¸ÅÇÒ °ÍÀÌ´Ù. CPU°¡ 2°³ ´Þ¸° ÄÄÇ»ÅͰ¡ º¸ÆíȵǾúÀ» ¶§ º¯ÈÇÒ »ó¿ë ¾ð¾îµéÀÇ ÆÐ·¯´ÙÀÓ¿¡ ´ëÇØ »ó»óÇØ º¸´Â °Íµµ Áñ°Å¿î ½Ã°£ÀÌ µÉ °ÍÀÌ´Ù. @
* ÀÌ ±â»ç´Â ZDNet KoreaÀÇ ÀÚ¸ÅÁöÀÎ ¸¶ÀÌÅ©·Î¼ÒÇÁÆ®¿þ¾î¿¡ °ÔÀçµÈ ³»¿ëÀÔ´Ï´Ù.