1. ¼­¹®

(ÀÌ ¹®¼­ÀÇ ÃֽůÇÀº http://www.milkywaygalaxy.freeservers.com ¿¡¼­ ±¸ÇÒ ¼ö ÀÖ´Ù)

ÀÌ ¹®¼­ÀÇ ¸ñÀûÀº C++¿¡ °üÇÑ URL°ú C++ online Ã¥¿¡ ´ëÇÑ ¸µÅ©, C++ ÇÁ·Î±×·¡¹Ö ÆÁ µîÀ» Æ÷°ýÀûÀ¸·Î Á¦°øÇÏ´Â °ÍÀÌ´Ù. ¶ÇÇÑ, ÀÌ ¹®¼­´Â Java ½ºÅ¸ÀÏÀÇ String class, string tokenizer, ¸Þ¸ð¸® ÇÔ¼öµî ÀϹÝÀûÀÎ C++ ÇÁ·Î±×·¥¿¡¼­ ³Î¸® ¾²ÀÏ ¼ö ÀÖ´Â ¸¹Àº ÇÔ¼öµéÀ» Á¦°øÇÑ´Ù. C++ °ú Java´Â ¿À´Ã³¯ ¸¹Àº ¼ÒÇÁÆ®¿þ¾î ÇÁ·ÎÁ§Æ®¿¡¼­ ¾²À̰í ÀÖ´Ù. ÇÁ·Î±×·¡¸Ó´Â C++°ú Java¸¦ ¹ø°¥¾Æ°¡¸ç ¾²°ÔµÉ °ÍÀ̰í, ÀÌ Java ½ºÅ¸ÀÏÀÇ class°¡ ¸Å¿ì À¯¿ëÇÔÀ» ¾Ë°Ô µÉ °ÍÀÌ´Ù. ÀÌ library¿Í C++ Ç¥ÁØ ¶óÀ̺귯¸®ÀÇ »ç¿ë¹ýÀ» ¾Ë·ÁÁÙ ´Ù¾çÇÑ ¿¹Á¦°¡ Á¦½ÃµÉ °ÍÀÌ´Ù.

ÀÌ ¹®¼­´Â C++¿¡ ´ëÇÑ ±³°ú¼­°¡ ¾Æ´Ï¸ç, ÀÌ¿¡ ´ëÇØ¼­´Â ÀÌ¹Ì ¸î°¡Áö ÁÁÀº on-line Ã¥µéÀÌ ÀÖ´Ù. C++ÀÌ ²Ï ¿À·£½Ã°£µ¿¾È »ç¿ëµÇ¾î¿Ô±â ¶§¹®¿¡, ¸Å¿ì ¸¹Àº ¼öÀÇ C++ ¹®¼­/±Û/Æ©Å丮¾óÀÌ ÀÎÅÍ³Ý»ó¿¡ Á¸ÀçÇÑ´Ù. ¸¸¾à ´ç½ÅÀÌ C++À» óÀ½ Á¢ÇÏ´Â °ÍÀ̰í, C++ ÇÁ·Î±×·¥À» Â¥ º» ÀûÀÌ ¾ø´Ù¸é, 13ÀýÀå¿¡ ¸µÅ©µÇ¾î ÀÖ´Â on-line C++ Ã¥À» ¸ÕÀú Àо°Å³ª, Amazon À̳ª barnes°ú °°Àº °÷¿¡¼­ C++ Ã¥À» »ç º¼ °ÍÀ» ÃßõÇÑ´Ù.

´©±º°¡°¡ ¸»Çßµí - C/C++ ¾ð¾î´Â OS³ª µð¹ÙÀ̽ºµå¶óÀ̹ö, ºü¸¥ ÀÀ´äÀ» ÇÊ¿äÇÏ´Â real-time ÇÁ·Î±×·¥µîÀ» ¸¸µå´Â ½Ã½ºÅÛ ¿£Áö´Ï¾î³ª ¾²¶ó°í Çϰí, ´ç½ÅÀº 2002³âº¸´Ù ÄÄÇ»ÅͰ¡ ¸î¹é¸¸¹è »¡¶óÁú 2005³âÀ» »ý°¢Çϸé Java³ª PHP-scriptingÀ» ½á¾ßÇÑ´Ù. Çϵå¿þ¾î ´Â Á¡Á¡ ½Î¸é¼­µµ, »¡¶óÁø´Ù.

1.1. C++ ÇÁ·Î±×·¥? C++ vs. Java/PHP

C++Àº °¡Àå °­·ÂÇÑ ¾ð¾îµé Áß ÇϳªÀ̰í, Java³ª PHP-scripting °°Àº °ÍÀÌ ³ªÅ¸³µÁö¸¸, ¾ÕÀ¸·Îµµ ¿À·£ ½Ã°£µ¿¾È ¾²ÀÌ°Ô µÉ °ÍÀÌ´Ù. ½Ç½Ã°£ÀÇ ¸Å¿ì ºü¸¥ ÀÀ´äÀ» ÇÊ¿äÇÏ´Â ÇÁ·Î±×·¥Àº C³ª C++À» ¾´´Ù. C++Àº ¸Å¿ì ºü¸£°Ôµ¿ÀÛÇϰí, ½ÇÁ¦·Î Javaº¸´Ù 10¹è¿¡¼­ 20¹è Á¤µµ ºü¸£´Ù . Java´Â C++ÀÇ "ÀÚ¼Õ"ÀÌ´Ù. JavaÀÇ ´Ü ÇϳªÀÇ ¹®Á¦Á¡Àº ¹Ù·Î - "Java ´Â ´À¸®´Ù!!" . VMÀ§¿¡¼­ µµ´Â Java ¹ÙÀÌÆ®ÄÚµå´Â ÄÄÆÄÀÏµÈ ½ÇÇàÄڵ庸´Ù ´À¸®´Ù. Java´Â JIT(Just-In-Time) ÄÄÆÄÀÏ·¯À§¿¡¼­ ´õ ºü¸£°Ô µ¹Áö¸¸, ¿©ÀüÈ÷ C++º¸´Ù´Â ´À¸®´Ù. ÃÖÀûÈ­ µÈ C/C++ ÇÁ·Î±×·¥Àº JIT ³ª ±× ÀÌÀüÀÇ ÄÄÆÄÀÏ·¯·Î ÄÄÆÄÀÏ µÈ Java Äڵ庸´Ù ¾à 3 ¿¡¼­ 4¹è Á¤µµ ºü¸£´Ù!! ±×·¸´Ù¸é, ¿Ö »ç¶÷µéÀÌ Java¸¦ ¾²´Â°¡? ÀÌ´Â Java°¡ ¼ø¼öÇÑ °´Ã¼ÁöÇâÀ» Áö¿øÇϰí, JavaÀÇ ÀÚµ¿È­µÈ ¸Þ¸ð¸® °ü¸®·Î ÀÎÇØ ÇÁ·Î±×·¡¹ÖÇϱⰡ ½¬¿ì¸ç, ÇÁ·Î±×·¡¸ÓµéÀÌ Á÷Á¢ ¸Þ¸ð¸® °ü¸®Çϱ⸦ ½È¾îÇϱ⠶§¹®ÀÌ´Ù. ÀÌ ¹®¼­´Â C++ÀÇ ¸Þ¸ð¸® °ü¸®¸¦ ÀÚµ¿È­ÇÏ¿© ÈξÀ »ç¿ëÇϱ⠽±°Ô ÇϰíÀÚ Çß´Ù. ¿©±â¼­ ³ª¿À´Â library´Â C++À» Java ¸¸Å­ ½±°Ô ´À³¢°Ô ÇØÁÙ °ÍÀ̰í, C++ÀÌ Java¿Í °æÀïÇÒ ¼ö ÀÖµµ·Ï ÇØÁÙ °ÍÀÌ´Ù.

¼öµ¿ÀûÀÎ ¸Þ¸ð¸® °ü¸®¸¦ À§ÇØ C++ ÇÁ·Î±×·¥ µð¹ö±ëÀÇ ´ëºÎºÐ ½Ã°£ÀÌ ¼Ò¸ðµÈ´Ù. ÀÌ ¹®¼­´Â µð¹ö±ë ½Ã°£À» ÁÙÀ̱â À§ÇÑ ¸î°¡Áö ¾ÆÀ̵ð¾î¿Í ÆÁÀ» ÁÙ °ÍÀÌ´Ù.

¾ðÁ¦ C++À» ½á¾ßÇÏ°í ¾ðÁ¦ Java/PHP¸¦ ½á¾ßÇϴ°¡?

¾Æ·¡¿Í °°Àº °æ¿ì¿£ C++À» ½á¶ó:

Java/PHP¸¦ ½á¾ßÇÒ °æ¿ì:

NOTE: Java ÄÄÆÄÀÏ·¯ (JIT ³ª ´Ù¸¥ °Íµé)¿¡ ¸¹Àº Áøº¸°¡ ÀÖ¾ú´Ù. Java ÇÁ·Î±×·¥Àº GNU GCJ http://gcc.gnu.org/java·Î ÄÄÆÄÀÏ µÉ ¼ö ÀÖ´Ù. GCJ´Â °£ÆíÇϰí, ÃÖÀûÈ­µÇ¾îÀÖÀ¸¸ç, Áøº¸ÀûÀÎ Java ÇÁ·Î±×·¡¹Ö ¾ð¾î¸¦ À§ÇÑ ÄÄÆÄÀÏ·¯ÀÌ´Ù. GCJ´Â Java source Äڵ带 ¸Ó½Å ÄÚµå·Î ¹Ù·Î ÄÄÆÄÀÏ ÇÒ ¼öµµ ÀÖ°í, Java ¹ÙÀÌÆ®ÄÚµå(class file)·Î ÄÄÆÄÀÏ ÇÒ ¼öµµ ÀÖ´Ù.

GCJ Á¤º¸:

1.2. ¾î¶² °ÍÀ» ¼±ÅÃÇÒ °ÍÀΰ¡. Ada95, C, C++, Java ¾Æ´Ï¸é PHP?

¾ð¾îÀÇ ¼±ÅÃÀº ¾î·Á¿î ÀÏÀÌ´Ù. ¿©±â¿£ ³Ê¹«³ª ¸¹Àº °í·ÁÇÒ »çÇ×ÀÌ ÀÖ´Ù - °³¹ßÀÚ, »ç¶÷ÀÇ ´É·Â, ºñ¿ë, Åøµé, Á¤Ã¥ (±¹°¡ÀÇ Á¤Ä¡ Á¤Ã¥±îÁöµµ), »ç¾÷°¡³ª ȸ»çµé¿¡ ´ëÇÑ ¿µÇâ±îÁö. ±â¼úÀûÀÎ ÀÌÀ¯·Î´Â ÃÖÀûÀÇ ¾ð¾îÀÏÁö¶óµµ ´Ü¼øÈ÷ Á¤Ä¡ÀûÀÎ °áÁ¤À¸·Î ÀÎÇØ ¼±ÅõÇÁö ¸øÇÒ ¼öµµ ÀÖ´Ù.

David WheelerÀÇ ¾ð¾î ºñ±³¸¦ º¸ÀÚ. Ada ºñ±³ Â÷Æ®. Ada°¡ 93%, Java´Â 72%, C++Àº 68% C´Â 53%À» °¢°¢ ¹Þ¾Ò´Ù. C++°ú Java´Â Á¡¼ö¸é¿¡¼­´Â ºñ½ÁÇÏ´Ù (4% Â÷ÀÌ). AdaÀÇ °³¹ß ºñ¿ëÀº Stephen F. Zeigler¿¡ µû¸£¸é C++ÀÇ ¹ÝÀýÀÌ´Ù. Ada95´Â ¾Æ·¡¿¡¼­ ±¸ÇÒ ¼ö ÀÖ´Ù -

C++ ÄÄÆÄÀÏ·¯´Â C ÄÄÆÄÀÏ·¯º¸´Ù ÈξÀ º¹ÀâÇϰí, C++Àº Cº¸´Ù ¾à°£ ´À¸®°Ô µ¿ÀÛÇÒ ¼ö ÀÖ´Ù. C ÄÄÆÄÀÏ·¯´Â ÃæºÐÈ÷ ¿À·¨µ¿¾È Àß ¾²¿©Á®¿Ô´Ù.

¸î¸î ½Ã½ºÅÛ¿¡¼­, ´ç½ÅÀº »ý¼ºµÈ Äڵ带 ÃÖÀûÈ­ Çϱâ À§ÇØ ¸î°¡Áö ¿É¼ÇÀ» ¾µ ¼ö ÀÖ´Ù.

¿À´Ã³¯, C´Â ÁÖ·Î ¿î¿µÃ¼Á¦³ª µð¹ÙÀ̽º µå¶óÀ̹ö, ºü¸£°Ô ÀÛµ¿ÇؾßÇÏ´Â ÇÁ·Î±×·¥À» ¾²±â À§ÇØ ·Î¿ì·¹º§ ½Ã½ºÅÛ ÇÁ·Î±×·¡¹Ö¿¡ ¾²ÀδÙ.

Note: ÀÌ HOWTO¿¡ Á¦°øµÇ´Â String, StringBuffer, StringTokenizer class¸¦ ÀÌ¿ëÇÏ¿© C++ Äڵ带 Java¿Í ¿ÏÀüÈ÷ ¶È°°ÀÌ ¾µ ¼ö ÀÖ´Ù. ÀÌ ¹®¼­ÀÇ ÀϺδ C++·Î Java class¸¦ Èä³»³¿À¸·Î½á C++°ú JavaÀÇ Â÷À̸¦ ÁÙÀ̰íÀÚ Çß´Ù. C++°ú Java¸¦ ¿Ô´Ù°¬´ÙÇÏ´Â Java ÇÁ·Î±×·¡¸ÓµéÀº ÀÌ String class¸¦ ÁÁ¾ÆÇÒ °ÍÀÌ´Ù.

¸¸¾à C++ÀÇ ÀÛ¼º-ÄÄÆÄÀÏ-µð¹ö±ë-ÄÄÆÄÀÏ ½ÎÀÌŬÀÌ ½È´Ù¸é, web °³¹ßÀ̳ª ÀϹÝÀûÀÌ ÇÁ·Î±×·¡¹Ö¿¡ ¾²ÀÏ ¼ö ÀÖ´Â PHP°°Àº script ¾ð¾î¸¦ ¾Ë¾Æº¸¾Æ¶ó. PHP³ª PERL°°Àº script¾ð¾î´Â ºü¸¥ ¾îÇø®ÄÉÀÌ¼Ç °³¹ßÀ» °¡´ÉÇÏ°Ô ÇÑ´Ù. PHP´Â ¸î°¡Áö °´Ã¼ÁöÇâÀ» À§ÇÑ Æ¯Â¡µµ °®°í ÀÖ´Ù. PHP HOWTO´Â http://www.linuxdoc.org/HOWTO/PHP-HOWTO.html (Çѱ۹ø¿ª) ¿¡¼­ º¼ ¼ö ÀÖ´Ù.

1.3. ÇöÀç C++ ÄÄÆÄÀÏ·¯ÀÇ ¹®Á¦Á¡

C++Àº C¸¦ Æ÷ÇÔÇϱ⠶§¹®¿¡, CÀÇ *³ª»Û* Á¡µéÀ» ¸ðµÎ °®°í ÀÖ´Ù. ¸Þ¸ð¸®ÀÇ ¼öµ¿ ÇÒ´ç°ú ÇØÁ¦´Â Áö·çÇϰí, ¿¡·¯¸¦ ¸¸µé¾î³»±â ÀϾ¥ÀÌ´Ù. ( 9.3Àý ¸¦ º¸¶ó).

C ÇÁ·Î±×·¡¹Ö¿¡¼­´Â ´ÙÀ½°ú °°Àº °Íµé·Î ÀÎÇØ ¸Þ¸ð¸® ¸¯À̳ª ¿À¹öÇ÷ο찡 ¸Å¿ì ÈçÇÏ´Ù.
	Datatype  char * and char[]
	String functions like strcpy, strcat, strncpy, strncat, etc..
	Memory functions like malloc, realloc, strdup, etc..

char *¿Í strcpyÀÇ »ç¿ëÀº "¿À¹öÇ÷οì", "°æ°èħ¹ü¿¡·¯(fence past errors)", "¸Þ¸ð¸® ¿À¿°(memory corruption)", "´Ù¸¥º¯¼ö ħ¹ü(step-on-others-toe)" À̳ª "¸Þ·Î¸® ¸¯(memory leaks)" µîÀÇ ²ûÂïÇÑ ¸Þ¸ð¸® ¹®Á¦¸¦ ÀÏÀ¸Å²´Ù. ¸Þ¸ð¸® ¹®Á¦´Â ¸Å¿ì µð¹ö±ëÀÌ Èûµé°í, µû¶ó¼­ °íÄ¡±â´Âµ¥ ¸¹Àº ½Ã°£ÀÌ µç´Ù. ¸Þ¸ð¸® ¹®Á¦´Â ÇÁ·Î±×·¡¸ÓÀÇ »ý»ê¼ºÀ» ¶³¾î¶ß¸°´Ù. ÀÌ ¹®¼­´Â C++ÀÇ ÀÌ·¯ÇÑ ´ÜÁ¡À» ÇØ°áÇϱâ À§ÇØ °í¾ÈµÈ ¿©·¯°¡Áö ¹æ¹ýµéÀ» ÅëÇØ ÇÁ·Î±×·¡¸ÓÀÇ »ý»ê¼ºÀ» ³ôÀ̴µ¥ µµ¿òÀ» ÁÖ°íÀÚ ÇÑ´Ù. ¸Þ¸ð¸® °ü·Ã ¹ö±×´Â Àâ±â Èûµé°í, °æÇ踹Àº ÇÁ·Î±×·¡¸Óµéµµ ¸Þ¸ð¸® °ü·Ã ¹®Á¦¸¦ °íÄ¡´Â µ¥´Â ¸çÄ¥¿¡¼­ ¸îÁÖ°¡ °É¸°´Ù. ¸Þ¸ð¸® ¹ö±×´Â ¸î´Þµ¿¾È ÄÚµå ¼Ó¿¡ ¼û¾î¼­ °©ÀÛ½º·± ÇÁ·Î±×·¥ Á¤Áö¸¦ ÀÏÀ¸Å³ ¼ö ÀÖ´Ù. char * ¿Í C/C++¿¡¼­ÀÇ Æ÷ÀÎÅÍ »ç¿ëÀ¸·Î ÀÎÇÑ ¸Þ¸ð¸® ¹ö±×´Â µð¹ö±ë°ú ÇÁ·Î±×·¥ Á¤Áö·Î ÀÎÇØ ¸Å³â 20¾ï ´Þ·¯¿¡ ÇØ´çÇÏ´Â ½Ã°£ÀÇ ¼Ò¸ð¸¦ ÀÏÀ¸Å²´Ù. ¸¸¾à C++¿¡¼­ char * °ú Æ÷ÀÎÅÍ ¸¦ »ç¿ëÇÑ´Ù¸é, ÀÌ´Â ¸Å¿ì Èûµç ÀÏÀÌ µÉ °ÍÀÌ´Ù. ƯÈ÷ ÇÁ·Î±×·¥ÀÇ Å©±â°¡ 10,000 ÁÙ ÀÌ»óÀÏ ¶§.

µû¶ó¼­, ¾Æ·¡ÀÇ °ÍµéÀÌ C-style¿¡¼­ÀÇ ¹®Á¦Á¡À» ±Øº¹Çϱâ À§ÇØ Á¦¾ÈµÇ¾ú´Ù. ¾Õ¿¡ ³ª¿À´Â °ÍÀÌ ´õ ÁÁÀº °ÍÀÌ´Ù.

  1. Æ÷ÀÎÅÍ ´ë½Å ·¹ÆÛ·±½º¸¦ »ç¿ëÇÑ´Ù.

  2. (ÀÌ HOWTO¿¡ ÁÖ¾îÁø) Java Çü½ÄÀÇ class¸¦ »ç¿ëÇϰųª, C++ Ç¥ÁضóÀ̺귯¸®ÀÇ string class¸¦ »ç¿ëÇÑ´Ù.

  3. C++¿¡¼­ÀÇ ¹®ÀÚ Æ÷ÀÎÅÍ(char *) »ç¿ëÀº String class¸¦ »ç¿ëÇÏÁö ¸øÇÒ ¶§·Î ±× »ç¿ëÀ» Á¦ÇÑÇÑ´Ù.

  4. ¸¸¾à C++¿¡¼­ÀÇ ¹®ÀÚ Æ÷ÀÎÅÍ(char *)¸¦ »ç¿ëÇÏ°í ½ÍÁö ¾ÊÀ» ¶§´Â, extern ¿¬°è¸¦ ÀÌ¿ëÇÏ´Â (char *)¸¦.

"CÀÇ char *"¸¦ »ç¿ëÇϱâ À§Çؼ­´Â, C ÇÁ·Î±×·¥À» ´Ù¸¥ ÆÄÀÏ¿¡ ³Ö°í, ¿¬°è¸í½Ã ¹® extern "C" ¸¦ ÀÌ¿ëÇÏ¿© C++ ÇÁ·Î±×·¥¿¡ ¸µÅ©ÇÑ´Ù -
extern "C" {
#include <some_c_header.h>
}

extern "C" {
    comp();
    some_c_function();
}

extern "C" ´Â ¿¬°è ¸í½ÃÀ̰í, ¾ç Áß°ýÈ£·Î µÑ·¯½ÎÀÎ ºí·Ï¾ÈÀÇ ¸ðµç ³»¿ëÀÌ C++ÀÌ ¾Æ´Ñ CÀÇ ¿¬°è ¹æ¹ýÀ» »ç¿ëÇÑ´Ù´Â ¸»ÀÌ´Ù.

'String Ŭ·¡½º'´Â ¸Þ¸ð¸® ÇÒ´ç°ú ÇØÁ¦¸¦ À§ÇØ »ý¼ºÀÚ¿Í ÆÄ±«ÀÚ¸¦ ÀÌ¿ëÇϰí, ltrim, substring µîµî°ú °°Àº ÇÔ¼ö¸¦ Á¦°øÇÑ´Ù.

¶ÇÇÑ °ü·ÃµÈ 7Àý ¸¦ »ç¿ëÇÏ´Â C++ ÄÄÆÄÀÏ·¯¿¡¼­ ã¾Æº¸¾Æ¶ó. string Ŭ·¡½º´Â Ç¥ÁØ C++ ¶óÀ̺귯¸®ÀÇ ÀϺÎÀ̰í, ¿©·¯°¡Áö ¹®ÀÚ¿­ °ü·Ã ÇÔ¼ö¸¦ Á¦°øÇÑ´Ù.

C++ 'string Ŭ·¡½º' ¿Í 'String Ŭ·¡½º' ¶óÀ̺귯¸®°¡ ¸¹Àº ¹®ÀÚ¿­ ÇÔ¼ö¸¦ Á¦°øÇϱ⠶§¹®¿¡, Á÷Á¢ ¹®ÀÚ¿­ ÇÔ¼ö¸¦ ¾²±â À§ÇØ ¹®ÀÚ Æ÷ÀÎÅ͸¦ »ç¿ëÇÒ Çʿ伺ÀÌ °ÅÀÇ ¾ø´Ù. ¶ÇÇÑ, C++ ÇÁ·Î±×·¡¸Ó´Â Ç×»ó 'malloc'À̳ª 'free'´ë½Å 'new', 'delete'¸¦ »ç¿ëÇØ¾ß ÇÑ´Ù.

µÎ ¹®ÀÚ¿­ Ŭ·¡½º´Â char * ³ª char []°¡ ÇÒ ¼ö ÀÖ´Â ¸ðµç ÀÏÀ» ÇÒ ¼ö ÀÖ´Ù. ±×¸®°í º¸ÅÂÁø ÁÁÀº Á¡Àº ¸Þ¸ð¸® ¹®Á¦³ª ¸Þ¸ð¸® ÇÒ´ç¿¡ ´ëÇØ ÀüÇô °ÆÁ¤ÇÒ Çʿ䰡 ¾ø´Ù´Â °ÍÀÌ´Ù.