ÃÑ ÆäÀÌÁö ¼ö : 3224
![]()
|
Facebook Joinc ±×·ì
Joinc QA »çÀÌÆ®
![]()
Tweet
joinc´Â Firefox¿Í chrome¿¡¼ Å×½ºÆ® Çß½À´Ï´Ù. IE¿¡¼´Â Å×À̺íÀÌ ±úÁö°Å³ª À̹ÌÁö°¡ º¸ÀÌÁö ¾ÊÀ» ¼ö ÀÖ½À´Ï´Ù. ƯÈ÷ ±¸±Û DocsÀ̹ÌÁöÀÇ °æ¿ì ¿¢¹Úó¸®µÉ ¼ö ÀÖ½À´Ï´Ù.
°¡Àå Àú¸íÇÏ´Ù°í »ý°¢µÇ´Â SWEng-GameDev ¸ÞÀϸµ ¸®½ºÆ®¿Í ±âŸ ´Ù¸¥ ¿©·¯ ¿Â¶óÀÎ Æ÷·³¿¡¼ÀÇ Åä·Ð°á°ú C++Àº °ÔÀÓ °³¹ßÀ» À§ÇÑ °¡Àå ÁÁÀº ¼±ÅÃÀ̶ó´Â °á·ÐÀÌ ³ª¿Ô´Ù. ´Ù¾çÇÑ Á¾·ùÀÇ ¾ð¾î°¡ ÀÖ°í, ±× Áß ¸î¸îÀº ¿·ÄÇÑ ÁöÁö¸¦ ¹Þ±âµµ ÇÏÁö¸¸, ½ÇÁ¦ ¾ð¾î¸¦ ¼±ÅÃÇØ¾ßµÉ °æ¿ì C++ÀÌ ¾ÐµµÀûÀ¸·Î ¼±ÅõǾîÁö°í ÀÖ´Ù. ±×·¯³ª ¾î¶°ÇÑ ¿Â¶óÀÎ Åä·Ð¿¡¼µçÁö ÀÌ¿¡ ´ëÇÑ ¹Ý´ë ÀǰßÀÌ ÀÖÀ¸¸ç, ÀÌ·¯ÇÑ ¹Ý´ëÀÇ °ßÀ» ¹Þ¾ÆµéÀ̰í Àç Åä·ÐÇÏ´Â °ÍÀº Åä·ÐÀ» ¹ßÀü½ÃŰ´Â ¿øµ¿·ÂÀÌ µÈ´Ù.
C++ ¾ð¾î´Â ÁÁÀº Æò°¡¸¦ ¹ÞÁö¸¸ µÎ°¡Áö Á¤µµ¿¡ ÀÖ¾î¼ °ø°ÝÀ» ¹Þ±âµµ ÇÑ´Ù. Çϳª´Â low-level ¿ä¼Ò¸¦ ´Ù·ç±â¿¡ ¾ð¾îÀÇ Ãß»óÈ ´Ü°è°¡ (¾µµ¥¾øÀÌ) ³ô´Ù¶ó´Â Á¡°ú C¿¡ ºñÇØ¼ Àϰü¼ºÀÌ °á¿©µÈ´Ù¶ó´Â ÁÖÀåÀÌ´Ù. ÀÌ ÁÖÀåÀÌ ¸»ÇÏ´Â ¹Ù´Â C·Î ´õ È¿°úÀûÀÎ Äڵ带 ¸¸µé¾î ³»±â°¡ ½±´Ù¶ó´Â Á¡ÀÌ´Ù. C++Àº ³ôÀº ¼öÁØ¿¡¼ Á¤º¸¸¦ Ãß»óÈ ÇÒ ¼ö Àִµ¥, ÀÌ´Â Äڵ带 Àаí ÇØ¼®Çϴ°ÍÀ» ºñ´É·üÀûÀ¸·Î ¸¸µé ¼ö ÀÖ´Ù. ¿¹¸¦ µé¾î¼ C¿¡¼ ´ÙÀ½ Äڵ带 ÀÐ´Â´Ù°í °¡Á¤ÇØ º¸ÀÚ. a = b+c;¿ì¸®´Â a,b,c°¡ primitive ŸÀÔÀ̶ó´Â °ÍÀ» ¾Ë ¼ö ÀÖÀ¸¸ç, ¸Å¿ì °£´ÜÇÏ°Ô ¸î ÁÙÀÇ ¾î¼Àºí¸® ÄÚµå·Î º¯È¯ÇÒ ¼ö ÀÖ´Ù. ±×·¯³ª C++¿¡¼´Â overloaded·Î ÀÎÇØ¼ a,b,c°¡ Å©±â¸¦ ¾Ë ¼ö ¾ø´Â °´Ã¼°¡ µÉ ¼ö ÀÖ´Ù. ÀÌ´Â ´õ ¸¹Àº ¸Þ¸ð¸®¿Í ½Ã½ºÅÛÈ£Ã⠱⟠ÀÚ¿øÀ» ¼Ò¸ÅÇÏ°Ô ¸¸µç´Ù. ÀÌ·¯ÇÑ ¹®Á¦¸¦ ÇØ°áÇÏ´Â À¯ÀÏÇÑ ¹æ¹ýÀº ÄÄÆÄÀÏ·¯·Î ÇÏ¿©±Ý C++¾ð¾îÀÇ ¿©·¯°¡Áö ±â´ÉÀ» Áö¿øÇÏÁö ¾Êµµ·Ï ÇÏ´Â °Í »ÓÀÌ´Ù.
Àú¼öÁØÀÇ ¾ð¾î¿Í ºñ±³ÇÏ´Â °Í°ú´Â ¹Ý´ë·Î, ´Ù¸¥ ÇÑÆí¿¡¼´Â °í¼öÁØ ¾ð¾î·Î½áÀÇ C++À» ºñÆÇÇÑ´Ù. C++Àº °í¼öÁØ ¾ð¾îÀ̸鼵µ, C¿Í ÀÌÀü C++°úÀÇ ÇÏÀ§ ȣȯ¿¡ Áö³ªÄ£ ºÎ´ãÀ» °¡Áø °ü°è·Î ANSI/ISO Ç¥ÁØ¿¡ ´Ê°Ô ´ëÀÀÇϰí ÀÖ´Ù°í ºñÆÇÇÑ´Ù. ÇÏÀ§ ȣȯ¿¡ ´ëÇÑ ºÎ´ã°¨ ¶§¹®¿¡, Çö´ëÀûÀÎ ¾ð¾î°¡ °¡Áö°í ÀÖ´Â gabage collection, aspects, closures, reflection°ú concurrency µîÀ» Áö¿øÇÏÁö ¸øÇÏ´Ù°í ÀÖ´Ù. C++Àº .h include ÆÄÀϰú .cpp ÆÄÀÏÀÌ ºÐ¸®µÇ´Â ±¸½Ã´ëÀûÀÎ ¹æ½ÄÀ» ¿©ÀüÈ÷ »ç¿ëÇϰí ÀÖ´Ù. ±×·¡¼ ÇÁ·Î±×·¡¸Ó´Â ¸ðµç ÇÔ¼ö¿¡ ´ëÇØ¼ ¼±¾ð°ú Á¤ÀǸ¦ ºÐ¸®Çϱâ À§ÇÑ ÆÄÀÏÀ» ¸¸µé¾î¾ß ÇÑ´Ù. ÀÌ·¯ÇÑ ÁÖÀåµé¿¡ ÀÇÇÏ¸é °ÔÀÓÀº C#, Eiffel ȤÀº Objective Caml·Î ¸¸µé¾îÁ®¾ß¸¸ ÇÑ´Ù.
¾çÁø¿µÀÇ ÀǰßÀº ¼·Î ´ë¸³µÇ°í ÀÖ´Ù. À̸»Àº ´Þ¸® ÇØ¼®Çغ¸ÀÚ¸é, ¼º´É¿¡ ¹Î°¨ÇÑ ÄÚ¾îºÎºÐÀº C·Î ¸¸µé°í ±×·¸Áö ¾ÊÀº ºÎºÐÀº Á» ´õ °í¼öÁØÀÇ ½ºÅ©¸³Æ® ¾ð¾î·Î °ÔÀÓÄڵ带 ¸¸µå´Â°Ô È¿À²ÀûÀÏ ¼ö ÀÖ´Ù´Â ¾ê±â°¡ µÈ´Ù. À̸¦Å׸é C++Àº Àú¼öÁؾð¾î¿Í °í¼öÁؾð¾î»çÀÌÀÇ ¾îÁß°£ÇÑ À§Ä¡¿¡ ÀÖ´Â ¸ð¾ç»õ·Î º¼ ¼ö ÀÖ´Ù.
±×·¯³ª ÀÌ·¯ÇÑ ºÒÆò°ú ºÒ¸¸¿¡µµ ºÒ±¸Çϰí, C++Àº ¼º°øÇϰí ÀÖ´Ù. ¿Ö C++Àΰ¡? ÀÌ ¾ð¾î´Â ¼º°øÀ» °è¼ÓÀ̾¼ö ÀÖ´Â ¾Ë¼ö¾ø´Â ºñ¹üÇÔÀ» °®Ãß°í ÀÖ´Â °ÍÀΰ¡ ?
ÀÌ¿¡ ´ëÇØ¼ ³ª¸§´ë·Î ºÐ¼®À» ÇØº¸¾Ò´Ù. C++ÀÌ °ÔÀÓ°³¹ßÀ» À§ÇÑ ¾ð¾î·Î½á Áö¹èÀûÀÎ À§Ä¡¿¡ ÀÖ´Â°Ç »ç½ÇÀÌÁö¸¸, °ü¼ºÀûÀÎ Ãø¸éÀÌ »ó´çºÎºÐÀ» Â÷ÁöÇÑ´Ù. ´ç½ÅÀÌ °æÇèÀÖ´Â ÇÁ·Î±×·¡¸Ó¸¦ ã°íÀÚ ÇÒ¶§, ±¸·ç ¼öÁØÀÇ C++ÇÁ·Î±×·¡¸Ó¸¦ ã´Â°ÍÀÌ OCaml ÇÁ·Î±×·¡¸Ó¸¦ ã´Â°Í º¸´Ù ÈξÀ ½±´Ù. ÄְܼÔÀÓÀ» °³¹ßÇØ¾ß ÇÒ°æ¿ì¿¡µµ ¸¶Âù°¡Áö´Ù. Microsoft¿Í Sony ¸ðµÎ C++ ÄÄÆÄÀÏ·¯¸¦ Á¦°øÇÑ´Ù. ´Ù¸¥ ¾ð¾î¸¦ ÅëÇØ¼ °³¹ßÇÏ±æ ¿øÇÑ´Ù¸é ½º½º·Î ÄÄÆÄÀÏ·¯¸¦ ¸¸µé¾î¾ß ÇÑ´Ù. ¸¸µé¾îÁø °ÔÀÓÀ» ¹Ìµé¿þ¾î¿Í ¿¬°á½ÃÄÑ¾ß ÇÏ´Â °æ¿ì¸¦ »ý°¢Çغ¸ÀÚ. ´ëºÎºÐÀÇ °ÔÀÓ ¹Ìµé¿þ¾î ÆÐŰÁö - Gamebryo, Havok, FMOD, SpeedTree, Unreal ¿£Áø - ´Â C++·Î ¸¸µé¾îÁ®ÀÖ´Ù. C++°ú ÇÔ²² °¡Àå ´ëÁßÀûÀÎ ¾ð¾î¶ó°í »ý°¢µÇ´Â C¸¦ ÀÌ¿ëÇØ¼ °³¹ßÇÒ ¶§ Á¶Â÷µµ, °í¸³µÇ´Â °æ¿ì¸¦ »ý°¢ÇØ¾ß ÇÑ´Ù.
±×·¯ÇÑ °ü¼ºÀûÀÎ °ÍÀº ¾ð¾î ¿ÜÀûÀÎ Ãø¸éÀÌ¾ß ¶ó°í ¹«½ÃÇÒ ¼öµµ ÀÖÀ» °ÍÀÌ´Ù. ±×·¯³ª C++ÀÇ ÀÌ·¯ÇÑ network_effectÀÇ ÈûÀ» Àý´ë ¹«½ÃÇÒ ¼ö ¾øÀ» °ÍÀÌ´Ù. ¿¹¸¦ µé¾îº¸°Ú´Ù. Naughty Dog Àº Jak and Daxter - ps2¿¡ °ü½É ÀÖ´Ù¸é µé¾îº» °ÔÀÓÀÏ °ÍÀÌ´Ù. ¿ì¸®³ª¶ó¿¡µµ ¹ß¸ÅµÇ¾ú´ø °ÔÀÓÀ¸·Î 2ź±îÁö ²Ï Àα⸦ ´©·È´ø ÀÛǰÀÌ´Ù - °ÔÀÓÀ» GOAL(Game Oriented Assembly Lisp)¶ó´Â »ç³» LISP ¾ð¾î¸¦ ÀÌ¿ëÇØ¼ ¸¸µé¾ú´Ù. °ÔÀÓÀ» ¸¸µé±â À§Çؼ ±×µé ÀÚ½ÅÀÇ ÄÄÆÄÀÏ·¯¿Í ¸µÄ¿, µð¹ö°Å¸¦ ¸¸µçµ¥´Â GOALÀ» À§ÇÑ ¶æ±íÀº ÅõÀÚ¸¦ À§ÇÑ ¶æµµ ´ã°ÜÀÖ¾ú´Ù. ÀÌ ¾ð¾î´Â ¸Å¿ì È¿À²ÀûÀ¸·Î ÈǸ¢ÇÑ °ÔÀÓÀÇ Á¦ÀÛÀÌ °¡´ÉÇϵµ·Ï ¸¸µé¾î Áöµµ·Ï Áö¿øÇßÀ½ÀÌ ºÐ¸íÇÏ´Ù. ±×·¯³ª ÈÄ¿¡ ¼Ò´Ï°¡ ŸÀÌÆ²À» ±¸¸ÅÇϱâ·Î ÇßÀ» ¶§, Naughty Doc´Â ÀÌ¹Ì ¸¸µé¾îÁø Äڵ带 C++·Î º¯È¯Ç϶ó´Â ¾Ð·ÂÀ» ¹Þ¾Ò´Ù. "Sony´Â ¸¸µé¾îÁø Äڵ带 ±×µé°ú ±×µéÀÇ ´Ù¸¥ ½ºÆ©µð¿À°¡ °øÀ¯Çϱ⸦ ¹Ù·¨´Ù" ¶ó°í Naughty DogÀÇ ¸®´õ ÇÁ·Î±×·¡¸ÓÀÎ Scott Shumaker´Â ¾Ð·ÂÀÇ ÀÌÀ¯¸¦ ¸»Çϰí ÀÖ´Ù.
±×·¯³ª ÀÌ·¯ÇÑ ¿ÜºÎÀûÀÎ ÀÌÀ¯¿Ü¿¡, ³ª´Â C++ÀÌ Game°³¹ß¿¡ ÀÖ¾î¼ °¡Áö´Â Ÿ°í³ °·ÂÇÔ¿¡ Ÿ°ÙÀ» ¸ÂÃß¾î¼ ¼³¸íÇϰíÀÚ ÇÑ´Ù. À̸¦ À§Çؼ´Â ¿Ö, ±×¸®°í ¾î¶»°Ô C++ÀÌ ¿À´Ã³¯±îÁö ¹ßÀüÀ» ÇØ¿À°í ÀÖ´ÂÁö¸¦ ÀÌÇØÇÏ´Â°Ô Áß¿äÇÏ´Ù. C++Àº C¿¡¼ ¸¸µé¾îÁ³´Ù. C++Àº Unix ¿î¿µÃ¼Á¦ÀÇ ½Ã½ºÅÛ ÇÁ·Î±×·¡¹ÖÀ» À§ÇÑ ¾ð¾î·Î ¸¸µé¾îÁ³À¸¸ç, À¯´Ð½º°¡ ¼º°øÇϴµ¥ °áÁ¤ÀûÀÎ ¿ªÇÒÀ» ´ã´çÇß´Ù. C´Â ¸Å¿ì ŸÀÌÆ®ÇÑ ¾ð¾î´Ù. C·Î ¸¸µé¾îÁø ÇÔ¼ö´Â °ÅÀÇ ±×´ë·Î Assembly·Î ´Ù½Ã ÀÐÀ» ¼ö ÀÖÀ» Á¤µµ´Ù.
C++Àº ÀÌ·¯ÇÑ C¿¡ Ãß»ó°èÃþÀ» Ãß°¡Çß´Ù. C++Àº C¿¡ Simula¿¡¼ ¿µ°¨À» ¾òÀº °´Ã¼ÁöÇâÀû °³³äÀ» È®´ëÃß°¡ÇÑ ¾ð¾î´Ù. Å« Ʋ¿¡¼ º¸ÀÚ¸é C++Àº C¿¡ ´ÜÁö class¿Í »ó¼ÓÀ» Ãß°¡ÇÑ Á¤µµ´Ù. C++À» µðÀÚÀÎÇÑ Bjarne Stroustrup ´Â ±×ÀÇ C++ FAQ¿¡¼ C++¾ð¾î´Â ÅÛÇø´ÀÇ »ç¿ë, ´ÙÇü¼º, generic ÇÁ·Î±×·¡¹Ö multiparadigm ÇÁ·Î±×·¡¹Ö ½ºÅ¸ÀÏÀ» Áö¿øÇϵµ·Ï °³¹ß ÃÐÁ¡À» ¸ÂÃß¾ú´Ù¶ó°í ¸»Çϰí ÀÖ´Ù.
C++Àº multi-paradigm °³¹ßÀ» Áö¿øÇÏ´Â ¾ð¾î·Î, generic, imperative ±×¸®°í °´Ã¼ÁöÇâ ÇÁ·Î±×·¡¹ÖÀ» Áö¿øÇÑ´Ù. ¸ðµç C++ ÇÁ·Î±×·¥Àº ƯÁ¤ÇÑ ¹®Á¦¸¦ Ǫ´Âµ¥ ÀÖ¾î¼, À̸¦ Ç®±âÀ§ÇÑ Àç»ç¿ë °¡´ÉÇÑ È¿À²ÀûÀÎ ¸ðµ¨·Î ¾²¿©Áú ¼ö ÀÖ´Ù. ¹Ý´ë·Î C++Àº ±× ÀÚ½ÅÀÇ ¼º°øÀÇ ÇÇÇØÀÚÀ̱⵵ ÇÏ´Ù. ¾ð¾î´Â °³¹ßÀÚ³ª °í°´ÀÌ ÇÊ¿ä·Î ÇÏ´Â ±â´ÉÀ» °¡Áø ¶óÀ̺귯¸®¸¦ °è¼ÓÀûÀ¸·Î Ãß°¡½ÃÄÑ ³ª°£´Ù. C++¿ª½Ã ±×·¸Áö¸¸, ºñÁö´Ï½ºÀûÀÎ Ãø¸é¿¡¼ º¸¸é ¸î°¡Áö ¹®Á¦Á¡À» °¡Áö°í ÀÖ´Ù. C++ ÇÁ·Î±×·¡¸Ó¸¦ ±¸ÇÏ´Â°Ç ¾î·ÆÁö ¾ÊÁö¸¸, C++ÀÇ Æ¯Â¡ ¶§¹®¿¡, ÇÁ·Î±×·¡¸Ó´Â C++ÀÇ °´Ã¼ÁöÇâ¸ðµ¨°ú °°Àº Àú¼öÁØÀÇ ³»¿ë°ú ÄÄÆÄÀϽ𣿡 ÀÌ·ç¾îÁö´Â (ºñ±³Àû ÃÖ±Ù¿¡ Ãß°¡µÈ ±â´ÉÀÎ) template metaprogramming¿Í °°Àº °ÍµéÀ» µ¿½Ã¿¡ ÀÌÇØÇØ¾ß ÇÑ´Ù. ÀÌ·¯ÇÑ ÀÌÇØ°¡ È®½ÇÇÏÁö ¾ÊÀº ÇÁ·Î±×·¡¸ÓÀÇ ¼Õ¿¡ Áã¾îÁø C++Àº À§ÇèÇÑ µµ±¸·Î »ç¿ëµÉ ¼ö ÀÖ´Ù.
±×·¯³ª ÀÌ·¯ÇÑ À§Çè¿¡µµ ºÒ±¸Çϰí C¸¦ ´ë¾ÈÀ¸·Î ¼±ÅÃÇÏ´Â°Ç ¿ÇÁö ¾Ê´Ù°í º»´Ù. ¿Ö³ÄÇÏ¸é ±×·³¿¡µµ ºÒ±¸Çϰí C++Àº Cº¸´Ù ´õ °·ÂÇÏ°í ´õ ¾ÈÀüÇϰí È¿À²ÀûÀÎ ¾ð¾îÀ̱⠶§¹®ÀÌ´Ù.
´õ °·ÂÇÏ´Ù°í ? ¸ðµç C·ÎµÈ °³ÀÓÀº Àç»ç¿ëÀ» À§Çؼ ÇÔ¼öÆ÷ÀÎÅ͸¦ Æ÷ÇÔÇÏ´Â ÀڷᱸÁ¶¸¦ À¯ÁöÇÏ´Â °¡»óÀÇ ÇÔ¼ö Å×À̺íÀ» ¸¸µé¾î¾ß ÇÑ´Ù. °´Ã¼ÁöÇâÀ» Èä³»³»¾ß Çϱ⠶§¹®ÀÌ´Ù. C++Àº °´Ã¼ÁöÇâÄڵ带 ¸¸µé±â À§ÇÑ ±â´ÉÀ» ÀÚüÀûÀ¸·Î Áö¿øÇϰí ÀÖ´Ù. ºÒ°¡´ÉÇÑ °ÍÀº ¾ø´Ù. C·Îµµ °´Ã¼ÁöÇâÀ» ÇÒ ¼ö ÀÖÀ¸¸ç, (¾Æ¸¶µµ) ¾î¼Àºí¸®¾î·Îµµ °¡´É ÇÒ °ÍÀÌ´Ù. ±×·¯³ª ¾ð¾î°¡ ÀÚüÀûÀ¸·Î Áö¿øÇϴ°Ͱú ±×·¸Áö ¾ÊÀº °ÍÀº Â÷À̰¡ ÀÖ´Ù. ¾ð¾î°¡ ÀÚüÀûÀ¸·Î Áö¿øÇÒ°æ¿ì, ÇÁ·Î±×·¡¸Ó´Â Á»´õ ÀÚ¿¬½º·´°Ô ÀÚ½ÅÀÇ Àǵµ¸¦ Äڵ带 ÅëÇØ¼ Ç¥ÇöÇÒ ¼ö Àֱ⠶§¹®ÀÌ´Ù. C¿¡¼ ¸ÅÅ©·Î¸¦ ¸¸µé¾î¼ preprocessor¸¦ µ¹¸®´Â °Íº¸´Ù C++ÀÇ template metaprogrammingÀ» ÇÏ´Â °ÍÀÌ ÈξÀ È¿À²ÀûÀÌ´Ù. ¶ÇÇÑ C++Àº template¸¦ ÀÌ¿ëÇÑ STL°ú °°Àº ÄÁÅ×ÀÌ³Ê¿Í ¾Ë°í¸®ÁòÀ» Á¦°øÇÑ´Ù.
´õ ¾ÈÀüÇѰ¡ ? C¿¡¼¶ó¸é Á¾Á¾ ¾Æ·¡¿Í °°Àº ¸ÅÅ©·Î¸¦ ¸¸µé¾î¼ »ç¿ëÇÒ °ÍÀÌ´Ù. #define MAX(A,B) ( (A) > (B) ) ? (A) : (B) MAX(x++, 2)ÀÌ ¸ÅÅ©·Î°¡ Çѹø È®ÀåµÇ°í ³ª¸é x´Â (ÀǵµÇÏÁö ¾Ê°Ô)2¸¸Å Áõ°¡µÉ °ÍÀÌ´Ù. C++¿¡¼´Â std::max() ¿Í °°Àº inline templatized ÇÔ¼ö¸¦ ÀÌ¿ëÇØ¼, Àú·± ºÒÄèÇÑ ¹®Á¦¸¦ ÇØ°áÇϸ鼵µ µ¿ÀÏÇÑ È¿°ú¸¦ ´©¸± ¼ö ÀÖ´Ù. C´Â ÅÛÇø´À» Áö¿øÇÏÁö ¾Ê±â ¶§¹®¿¡ void Æ÷ÀÎÅ͸¦ °¡Áö´Â ±¸Á¶Ã¼¸¦ »ç¿ëÇØ¾ß ÇÑ´Ù. qsort() ÇÔ¼ö¿¡¼ void Æ÷ÀÎÅ͸¦ »ç¿ëÇÏ´Â ¿¹¸¦ ã¾Æº¼ ¼ö ÀÖ´Ù. void *ÇüÀ» »ç¿ëÇÑ´Ù´Â °ÍÀº type-safety systemÀÇ ÀåÁ¡À» ¹ö·Á¾ß ÇÑ´Ù´Â°É ÀǹÌÇÑ´Ù. ÀÌ·¸°Ô µÉ°æ¿ì ÄÄÆÄÀÏ ½Ã°£¿¡ ¿¡·¯¸¦ ÀâÁö ¸øÇϰí, Á÷Á¢ µ¹·ÁºÁ¾ß ¿¡·¯¸¦ ÀâÀ» ¼ö ÀÖ°Ô µÇ´Âµ¥, ºÒ¾ÈÀüÇÑ ÇÁ·Î±×·¥À» ÀÛ¼ºÇÒ È®·üÀ» ³ôÀÌ°Ô µÈ´Ù. C´Â Resource Acquisition is Initialzation (¸®¼Ò½º¸¦ ȹµæÇÏ¸é¼ ÃʱâÈ ÇÏ´Â)ÀÌ Á¸ÀçÇÏÁö ¾Ê´Â´Ù. Scope lock¿Í smart pointerµµ »ç¿ëÇÒ¼ö ¾øÀ¸¸ç, ´õ¿í ÀÚÁÖ ¸Þ¸ð¸®¿Í ´Ù·é ÀÚ¿øÀÌ ¼¼¾î³ª°¡´Â °æ¿ì¸¦ ¸¸³ª°Ô µÈ´Ù.
´õ¿í È¿À²ÀûÀÌ´Ù !? C++ ÄÄÆÄÀÏ·¯´Â Àº type-base ÀÇ alias¸¦ ºÐ¼®ÇÏ°í ¸í·ÉÀ» ÀúÀåÇÏ´Â °ÍÀ» Çã¿ëÇÑ´Ù. ÀϹÝÀûÀÎ c ÄÄÆÄÀÏ·¯´Â ÀÌ·¯ÇÑ ÀÏÀ» ÇÒ ¼ö ¾ø´Ù. (Type-Based Alias Analysis´Â http://www.ddj.com/184404273 ¹®¼¸¦ Àо±â ¹Ù¶õ´Ù). inlining´Â C++ÄÄÆÄÀÏ·¯·Î ÇÏ¿©±Ý ÇÊ¿ä¾ø´Â ÇÔ¼öÈ£ÃâÀ» ÁÙÀ̵µ·Ï ÇØÁØ´Ù. ±×·¯¹Ç·Î ÇÔ¼öÈ£Ãâ·Î ÀÎÇØ¼ ¼ÒºñµÇ´Â overhead¸¦ ÁÙÀÏ ¼ö ÀÖ´Ù. template¿Í °°ÀÌ »ç¿ëÇÏ°Ô µÉ°æ¿ì C++Àº È¿°úÀûÀÎ ÀζóÀÎÄڵ带 ÀÚ¿¬½º·´°Ô »ý¼ºÇØÁØ´Ù (ÅÛÇø´À» »ç¿ëÇÒ°æ¿ì ÄÚµåÀÇ ¾çÀÌ Å©°Ô ´Ã¾î³ª´Â ¹®Á¦°¡ ¹ß»ýÇϱ⵵ ÇßÁö¸¸, C++ÄÄÆÄÀÏ·¯ÀÇ ¼º´ÉÀÌ ÁÁ¾ÆÁö¸é¼ ´ëºÎºÐ ÇØ°áµÇ¾ú´Ù). C++ÀÌ std::sort()°¡ CÀÇ qsort()ÇÔ¼öº¸´Ù ¼º´ÉÀÌ ´õ Àß³ª¿À´Â ÀÌÀ¯°¡ ¿©±â¿¡ ÀÖ´Ù. ¸¶Áö¸·À¸·Î C++Àº Ç¥ÁØ ¶óÀ̺귯¸® ÄÁÅ×À̳ʸ¦ Á¦°øÇÑ´Ù. ÀÌ°É ÀÌ¿ëÇÒ °æ¿ì °³¹ßÀÚ°¡ ½Å°æ½á¾ß ÇÒ °ÍÀ» ±ØÀûÀ¸·Î ÁÙ¿©ÁØ´Ù. ¿¹¸¦ µé¾î¼ STL¸¦ ÀÌ¿ëÇØ¼ Hash MapÀ» ±¸ÇöÇÒ °æ¿ì, 20ÁÙ ³»¿Ü¸é µÉ°É (Àå´ãÇϰǵ¥) C·Î ºñ½ÁÇÑ ±â´ÉÀ» °¡ÁøÃ¤·Î ±¸ÇöÇÏ·Á¸é 1000ÁÙÀº ³Ñ°Ü¾ß ÇÒ°ÍÀÌ´Ù. ¼º´É¶ÇÇÑ junior±ÞÀÇ C ÇÁ·Î±×·¡¸Ó°¡ ¸¸µç°Í ÀÌ»óÀ» º¸ÀåÇÒ ¼ö ÀÖ´Ù.
±×·¸´Ù ³ª´Â Cº¸´Ù C++À» ÁÁ¾ÆÇÑ´Ù. C++Àº gameplay ÄÚµå¿Í Çٽɿ£ÁøÀÇ È¿À²ÀûÀÎ ÀÛ¼ºÀ» À§ÇÑ ´õ¿í ³ôÀº ¼öÁØÀÇ Ãß»óȸ¦ Áö¿øÇØ Áֱ⠶§¹®ÀÌ´Ù. ¹°·Ð C¿Í ºñ±³Çؼ´Â ±×·¸Áö¸¸ ´Ù¸¥ ´õ¿í ÃÖ±Ù¿¡ ¹ßÇ¥µÈ ¾ð¾îµé¿¡ ºñÇØ¼´Â ¸î °¡Áö °áÇÔÀ» °¡Áö°í ÀÖÀ½À» ¾ËÁö¸¸, ½ÇÁ¦ ÀÌ·¯ÇÑ °áÇÔÀÌ Å©°Ô ¹®Á¦ µÇÁö ¾Ê°í ÀÖ´Ù. °í¹éÇÏÀÚ¸é ³ª´Â ±×·¯ÇÑ ¾ð¾îµéÀÇ °í¼öÁØÀÇ ¿©·¯°¡Áö ±â´É°ú öÇÐÀ» ÃæºÐÈ÷ Ȱ¿ë ÇÒ ¸¸ÇÑ ´É·ÂÀ» °¡Áö°í ÀÖÁö ¸øÇÏ´Ù. ³ª´Â C++À» ÀÌ¿ëÇØ¼ Äڵ带 ¸¸µé ¶§µµ ¸¹Àº ºÎºÐÀ» proecedural ¹æ½ÄÀ¸·Î ÀÛ¼ºÇÑ´Ù. ¿ÀÈ÷·Á ±×°Ô ´õ ¸íÈ®Çϰí È¿À²ÀûÀÌ°í ºü¸¥ Äڵ带 ¸¸µå´Âµ¥ µµ¿òÀ» ÁÙ °æ¿ì°¡ ¸¹±â ¶§¹®ÀÌ´Ù. C++Àº ÇÁ·Î±×·¡¸Ó¿¡°Ô Àû´çÇÑ Å¸ÇùÁ¡À» ¸¸µé¾îÁÖ´Â ¾ð¾î´Ù. ±×¸®°í gabage collectionÀ» ÅëÇØ¼ ¾òÀ» ¼ö ÀÖ´Â ÀÌÀÍ¿¡ ´ëÇØ¼µµ ¸Å¿ì ȸÀÇÀûÀÌ´Ù.
±×·¯³ª C++À» ¼±ÅÃÇÏ´Â °¡Àå Áß¿äÇÑ ÀÌÀ¯´Â C++ÀÌ ºü¸£´Ù¶ó´Â Á¡ ¶§¹®ÀÌ´Ù. ºñ½ÁÇÑ ´É·ÂÀ» °¡Áø °³¹ßÀÚ°¡ Äڵ带 ¸¸µé¾ú´Ù°í °¡Á¤ÇßÀ» ¶§, C++ÀÌ ´Ù¸¥ °í¼öÁØÀÇ ¾ð¾îµé º¸´Ù ´õ ºü¸¥ Äڵ带 ¸¸µé¾î ³½´Ù´Â °ÍÀº ÀǽÉÀÇ ¿©Áö°¡ ¾ø´Ù. ƯÈ÷ °ÔÀÓÀÇ Çٽɿ£ÁøÀ» ¸¸µé ¶§ ÀÌ·¯ÇÑ Â÷ÀÌ´Â µÎµå·¯Áø´Ù. gampleplay codeÀÇ °æ¿ì¿¡´Â °á°ú°¡ ´Þ¶óÁú ¼ö ÀÖ´Ù. gameplay ºÎºÐÀº µðÀÚÀÎ, °í°´ ¿äûÀÇ º¯Èµî¿¡ µû¸¥ ¿ä±¸¿¡ ºü¸£°Ô ´ëÀÀÇÒ Çʿ䰡 Àִµ¥, C++Àº »ó´ëÀûÀ¸·Î ´À¸± ¼ö ¹Û¿¡ ¾ø´Ù.
ºü¸¥ °³¹ßÁֱ⸦ °¡Á®°¡±â À§Çؼ, ´ç½ÅÀº °£´ÜÈ÷ ÄÄÆÄÀÏ µÉ ¼ö Àְųª, ȤÀº ÄÄÆÄÀÏ ÀÚü¸¦ ÇÊ¿ä·Î ÇÏÁö ¾ÊÀº °£´ÜÇÑ ¾ð¾î°¡ ÀÖ¾úÀ¸¸é ÇÒ °ÍÀÌ´Ù. ¶ÇÇÑ ÇÁ·Î±×·¥ÀÇ ¸®½ºÅ¸Æ®µîÀÇ ÀÛ¾÷¾øÀÌ ÄÚµåÀÇ º¯ÈµÈ ºÎºÐÀ» °ÔÀÓ³»¿¡¼ Áï½Ã È®ÀÎÇÏ°í ½Í¾îÇÒ °ÍÀÌ´Ù. C++ÀÌ °¡Áö´Â Æ÷ÀÎÅͶóµçÁö ±î´Ù·Î¿î int, float, ¹®ÀÚ¿ ÀÛ¾÷, ÄÁÅ×À̳ʵîÀ» »ç¿ëÇÏ°í ½ÍÁö ¾ÊÀ» °ÍÀÌ´Ù. À̵éÀº gameplay Äڵ带 ¸¸µå´Âµ¥¿¡´Â Áö³ªÄ¡°Ô ºÎ´ãÀÌ µÇ´Â ¿ä¼ÒµéÀÌ´Ù.
ÀÌ·± ºÎºÐÀº
Lua¸¦ ÀÌ¿ëÇØ¼ ÇØ°áÇØ º¸±â ¹Ù¶õ´Ù. ÀÌ off-the-shelf ½ºÅ©¸³Æ® ¾ð¾î´Â ¸¹Àº °ÔÀÓȸ»ç¿¡¼ C++°ú ÇÔ²² ³Î¸® »ç¿ëµÇ°í ÀÖ´Ù. Lua´Â lightweight, dynamically type¸¦ Áö¿øÇÏ´Â interpreted ¾ð¾î´Ù. ¶ÇÇÑ garbage collectionÀº ¸Þ¸ð¸®ÇÒ´ç°ú ´©¼ö°¡ ´õ ÀÌ»ó À̽´°¡ µÇÁö ¾ÊÀ» Á¤µµ·Î ÈǸ¢ÇÏ°Ô ÀÛµ¿ÇÑ´Ù.
ÀÌ·¸°Ô ÇѰ³ ÀÌ»óÀÇ ¾ð¾î°¡ »ç¿ëÇÏ´Â °Í¿¡ ´ëÇØ¼ °ÅºÎ°¨À» °¡Áö´Â °³¹ßÀÚµµ ÀÖ°ÚÁö¸¸ (³ªµµ ¸Å¿ì ½È¾îÇÑ´Ù) °íÁ¤°ü³äÀº ¹ö¸®¶ó°í ÀÖ´Â °ÍÀÌ´Ù. °ÔÀÓ¿£ÁøÀº C++·Î ¸¸µé°í gameplay´Â Lua·Î ¸¸µé¾î¶ó. ³»°¡ »ý°¢ÇÏ´Â °¡Àå ÁÁÀº ¹æ¹ýÀ̸ç, ¸¹Àº °ÔÀÓµéÀÌ ÀÌ·¸°Ô ¸¸µé¾î Áö°í ÀÖ´Ù. ºí¸®ÀÚµåÀÇ
wow°°Àº °æ¿ì¿¡µµ °¢Á¾ add-on°ú UIµéÀÌ lua·Î ¸¸µé¾î Á³´Ù. ÇÊÀÚ°¡ »ý°¢Çϱ⿡ ¾ÕÀ¸·Î 10³â³»¿¡ °ÔÀÓ°³¹ß°ú °ü·ÃµÇ¾î¼ C++À» ´É°¡ÇÒ ¼ö ÀÖ´Â ¾ð¾î°¡ ³ª¿Ã°Å °°Áö ¾Ê´Ù. C#°ú Mono´Â ÀÌ ºÎºÐ¿¡ À־ LuaÀÇ ¹ßµÚ²ÞÄ¡µµ µû¶ó°¡Áö ¸øÇϰí ÀÖ´Ù. ´çºÐ°£ °ÔÀÓ°³¹ßÀ» À§ÇÑ ÃÖ»óÀÇ ¾ð¾îÁ¶ÇÕÀº C++/Lua°¡ µÉ °ÍÀÌ´Ù.
keyword : Script Lua C++ game
|
|
|
EmailÀ» ±âÀÔÇϸé, ´ñ±ÛÀÌ ¸ÞÀÏ·Î Àü´ÞµË´Ï´Ù. |
|