Àúµµ Àß ¸ô¶ó¿ä~~~~~~~~~~~
=====================================================
´ÙÀͽºÆ®¶ó, ¿Ö goto¿¡ ½Ãºñ(?)¸¦ °Å´Â°¡? '
[¸¶ÀÌÅ©·Î¼ÒÇÁÆ®¿þ¾î â°£ 20Áֳ⠱â³ä] °íÀüÀ» ã¾Æ¼ ¨ç
â°£ 20Áֳ⠱â³äÀ¸·Î 6ȸ¿¡ °ÉÃÄ ¡¸°íÀüÀ» ã¾Æ¼¡¹¶ó´Â ±âȹ ¿¬À縦 ÁغñÇß½À´Ï´Ù. ¡¸°íÀüÀ» ã¾Æ¼¡¹´Â Àü»êÇл翡 ±â³äºñÀûÀÎ ³í¹®À̳ª ½ºÅ׵𼿷¯µéÀ» ¼Ò°³ÇÏ°í ±×°ÍÀÌ Áö´Ï´Â ÇöÀçÀû Àǹ̸¦ ¾Ë¾Æº¸·Á ÇÕ´Ï´Ù. ½ñ¾ÆÁö´Â ¼ö¸¹Àº Á¤º¸ ¼Ó¿¡ ¹«¾ùÀÌ ÇÊ¿äÇÑÁö, °¡Ä¡ ÀÖ´ÂÁö ÆÇ´ÜÇϱ⠾î·Á¿î ¿äÁò, Àá½Ã ÇѼûÀ» µ¹¸®°í ºû¹Ù·£ ¿¾ Ã¥À» ²¨³» ÀÐÀ¸¸ç ±× ½ÃÀý °¨µ¿À» ´Ù½Ã ´À³¢´Â °è±â°¡ µÆÀ¸¸é ÇÕ´Ï´Ù.
°±Ô¿µ, ±èâÁØ, ·ù»ó¹Î (¸¶ÀÌÅ©·Î¼ÒÇÁÆ®)
2003/04/16
ÃÖ±Ù ÇÁ·Î±×·¡¹ÖÀ» ¹è¿ì±â ½ÃÀÛÇÑ »ç¶÷µéÀ» Á¦¿ÜÇϰí´Â °ÅÀÇ ´ëºÎºÐ goto¿¡ ´ëÇÑ °í¹ÎÀ» ÇÑ ¹øÂë ÇØºÃÀ» °ÍÀÌ´Ù. ¿ì¸®°¡ goto¿¡ ´ëÇØ °®´Â ´À³¦Àº ²Ï ¸·¿¬ÇÏ´Ù. ÁÖº¯¿¡¼ ¾È ÁÁ´Ù, ¾È ÁÁ´Ù´Â À̾߱⸦ ÇÏ´Ï ¾²¸é ¾È µÉ °Í °°Àºµ¥, ±×·¯¸é¼µµ ÀÚ½ÅÀÌ ¸ÅÀÏ Á¢ÇÏ´Â Äڵ忡¼ goto°¡ ¾Æ¿¹ ¾È º¸ÀÌ´Â °Íµµ ¾Æ´Ï´Ù. ±×·¯¸é¼ ½º½º·Î´Â Ãʺ¸ ÇÁ·Î±×·¡¸Óµé¿¡°Ô ÀÌ·± À̾߱⸦ ÇÑ´Ù.
"goto ½è³×? ÀÌ°Ç ½ºÆÄ°ÔƼ ÄÚµå¾ß."
goto°¡ ³ª»Ú´Ù°í »ý°¢ÇÏ´Â »ç¶÷µé¿¡°Ô "goto°¡ ¿Ö ³ª»Ü±î¿ä?"ÇÏ°í ¹¯´Â´Ù¸é "ÇÁ·Î±×·¥À» ÀÐÀ» ¶§ ÁøÇà °úÁ¤ÀÌ ¿©±âÀú±â·Î Á¡ÇÁÇØ¼ µû¶ó Àбâ Èûµé¾îÁ®.", "goto ³ª»Ú´Ù°í Ã¥¿¡ ¸¹ÀÌ ³ª¿Í ÀÖ´Â °Í °°Àºµ¥ ÇÑ ¹ø ã¾ÆºÁ." ÀÌ Á¤µµÀÇ ´ÜÆíÀûÀ̰ųª °£Á¢ÀûÀÎ Á¤º¸¿¡ ±Ù°ÅÇÑ ´ë´äÀÌ ´ëºÎºÐÀ̾ú°í, ¸íÄèÇÑ ´äÀº µèÁö ¸øÇß´Ù.
¹°·Ð, goto »ç¿ëÀ» ÃßõÇÏ´Â »ç¶÷Àº µå¹°¾î¼, ¸·¿¬È÷ ³ª»Ú´Ù´Â ´ë¿¿¡ ³¢¿© goto¸¦ ¾²Áö ¾Ê´Â(ȤÀº ÃÖ¼ÒÇÑ °ø°³ÀûÀ¸·Î´Â ¾²Áö ¾ÊÀ¸·Á°í ³ë·ÂÇÏ´Â) ÇÁ·Î±×·¡¹ÖÀ» ÇØ¿Ô´Ù. ±×¸®°í ¹Ù»Û ÀÏ»ó¿¡ ÂÑ°Ü ÀÌ ´ë´ä¿¡ ´ëÇÑ ´äÀ» ã±â¸¦ Àؾî¹ö¸° ä Áö±Ý±îÁö Áö³»¿Ô´Ù. Àڱ⠸í·áȸ¦ Æ÷±âÇÑ Ã¤.
[¸£³×»ó½º Ŭ·´°ú RT]
¸£³×»ó½º Ŭ·´Àº ÇÁ·Î±×·¡¸ÓµéÀÌ ÇÔ²² ¸ð¿© ÀÚ½ÅÀÌ »ç´Â À̾߱⸦ °öÇϰí, °£È¤ °íÀüÀ» ÇÔ²² °øºÎÇϱ⵵ ÇÑ´Ù. ¸£³×»ó½º Ŭ·´¿¡¼´Â °íÀüÀ» °íÀü ±×´ë·Î ³²°ÜµÎ±â¸¦ ¿øÄ¡ ¾Ê°í, °íÀü¿¡¼ ¡®Áö±Ý ¿©±â¡¯¶ó´Â ÇöÀçÀû ÀÇ¹Ì¿Í °¡Ä¡¸¦ ãÀ¸·Á°í ³ë·ÂÇØ¿À°í ÀÖ´Ù.
Ưº°È÷ 1¹Ú 2ÀÏ·Î ±³¿Ü·Î °íÀü Àб⠿©ÇàÀ» ¶°³ª±âµµ Çϴµ¥, ¿ì¸®´Â À̸¦ ¸®´õ½Ê Æ®·¹ÀÌ´×(Readership Training)À̶ó°í ºÎ¸¥´Ù. ´ÙÀ½Àº ¸®´õ½Ê Æ®·¹ÀÌ´×ÀÇ ¼Ò°³ ±Û Áß ÀϺδÙ.
±³¿Ü¿¡¼ ÇÔ²² ¸ð¿©¼ 1¹Ú 2ÀÏ·Î ¹ã´Ê°Ô±îÁö(ȤÀº ¹ãÀ» °ÅÀÇ »õ¸é¼) °µ¶, Åä·ÐÇϰí, ¸ÀÀÖ´Â °Íµµ ¸Ô°í ¿îµ¿µµ ÇÏ´Â Áñ°Ì°í °Ç°Çϰí À¯ÀÍÇÑ ¸ðÀÓ.
¡¦
Á¦´ë·Î µÈ RTÀÇ Á¶°Ç:
¡ß RT ÈÄ À°Ã¼Àû¡¤ÁöÀû¡¤½ÉÀûÀ¸·Î ÀçÃæÀüµÈ´Ù.
¡ß Àç¹ÌÀÖ´Ù, ¸ÀÀÖ´Ù, °Ç°ÇÏ´Ù.
¡ß Àû±ØÀûÀÌ°í µ¿ÀûÀÌ´Ù.
¡¦
Åä¿äÀÏ ¿ÀÈijª ±Ý¿äÀÏ Àú³á ¶§ ¸¸³ª¼ °°ÀÌ ±³¿Ü·Î °©´Ï´Ù. °Å±â¼ Àú³áÀ» Á÷Á¢ ÇØ¸Ô°í(ÀÌ°Ô Áß¿äÇÔ!) °¢ÀÚ ¸ÃÀº ºÎºÐÀ» ¹ßÇ¥, Åä·ÐÇÏ¸é¼ Ã¥ ÇÑ ±ÇÀ» ¶Á´Ï´Ù. »õº® ¼¼ ½Ã Á¤µµ±îÁö Á¤¸» Ä¡¿ÇÏ°Ô °øºÎÇϰí Åä·ÐÇÏ°í ´ÙÀ½¿¡´Â °°ÀÌ ¼úÀ» ¸¶½Ã°Å³ª ÇÏ¸é¼ ¿©·¯ °¡Áö À̾߱⸦ ³ª´©°í Á¤¸» ¸Í·ÄÈ÷ Àâ´Ï´Ù. ±×¸®°í ´ÊÀº ¿ÀÀü¿¡ ÀϾ¼ ¾ÆÄ§ °â Á¡½ÉÀ» ¸ÀÀÖ°Ô ÇØ¸Ô°í ÁýÀ¸·Î µ¹¾Æ¿É´Ï´Ù.
¡¦
»î¿¡ Ȱ·ÂÀ» ÁÖ´Â ±×·± ½Ã°£À̾ú½À´Ï´Ù. ÇÏ·çÇϷ縦 »ì¾Æ³ª°¡´Â µ¥¿¡ ¾öû³ ¡®µÞ½É¡¯À» ¾ò°Ô µÇÁÒ. Á¤¸» ÇÏ·ç ¹ã »çÀÌ¿¡ Ã¥ ÇÑ ±ÇÀ» ¶¼°Ô µË´Ï´Ù. ´Ü, ¸ðµç »ç¶÷ÀÌ ±× Ã¥À» ¿Ïµ¶À» ÇØ ¿Í¾ß Çϰí, °¢ÀÚ Á¤ÇØÁø éÅ͸¦ ¸Ã¾Æ¼ ¹ßÁ¦ÇØ ¿Í¾ß ÇÕ´Ï´Ù.
¡¦
Á÷ÀåÀÎÀ̳ª ÇлýµéÀ̳ª ¸ðµÎ Àϻ󿡼 ÄÄÇ»ÅÍ °íÀü¿¡ ´ëÇÑ ¹Ðµµ ³ô°í ¾ÐÃàÀûÀÎ °øºÎ¡¤Åä·Ð ½Ã°£ÀÌ °ÅÀÇ ºÒ°¡´ÉÇϸ®¶ó »ý°¢ÇÕ´Ï´Ù. ƯÈ÷ ¡®¿¬¼ÓµÈ ½Ã°£¡¯(ÇÇÅÍ µå·¯Ä¿°¡ ÁöÀû ÀÛ¾÷¿¡¼ °Á¶ÇÏ´Â)ÀÌ ¾ÆÁÖ Áß¿äÇÕ´Ï´Ù ¡ª
ÀÏÁÖÀÏ¿¡ ¸î ¹ø¾¿ ³ª´²¼ ÇÏ´Â °øºÎ¿¡¼´Â ÀüüÀÇ ±×¸²À» ´Ü¹Ú¿¡ ´À³¥ ¼ö ÀÖ´Â ±âȸ°¡ ¿À±â Èûµì´Ï´Ù. ¸î ½Ã°£À» ¿¬¼ÓÀ¸·Î Ä¡¿È÷ °øºÎÇÏ´Ù º¸¸é ¾Õ°ú µÚ°¡ ¿¬°áµÇ°í Á¶°¢°ú ÆÄÆíÀÌ ¸ð¿© ±×¸²ÀÌ ¿Ï¼ºµÇ´Â °æÀ̷οî üÇèÀ» ÇÒ ¼ö ÀÖ½À´Ï´Ù. »õ·Ó°í ±ÍÇÑ °æÇèÀÌ µÉ °Ì´Ï´Ù.
Áö³ 2¿ù 11ÀÏ¿¡´Â goto ³íÀïÀÇ ¹ßÈÁ¡À̶ó ÇÒ ¸¸ÇÑ ´ÙÀͽºÆ®¶ó(Edsger W. Dijkstra)ÀÇ ³í¹® ¡¸Go To Statement Considered Harmful¡¹°ú °ü·Ã ±ÛÀ» Àаí, ±×¿¡ ´ëÇÑ Åä·ÐÀ» Çß´Ù. ÀÌ ±â»ç¸¦ ÀÛ¼ºÇÏ´Â µ¥´Â ´ç½Ã ¸£³×»ó½º Ŭ·´¿¡ Âü¼®ÇÑ »ç¶÷µé°úÀÇ Åä·ÐÀÌ Å« µµ¿òÀÌ µÆ´Ù.
goto ¹®Àº ÇØ·Ó´Ù?
1968³â CACM(Communications of ACM) ÆíÁýÀÚ¿¡°Ô º¸³»´Â ÆíÁö·Î ÃâÆÇµÈ ÀÌ ³í¹®Àº ÇÁ·Î±×·¡¹Ö»ç¿¡ ÀÖ¾î ¿ª»çÀûÀÎ Àǹ̸¦ °®´Â´Ù. ÀÌ ³í¹®À¸·Î ÀÎÇØ ±¸Á¶Àû ÇÁ·Î±×·¡¹Ö¿¡ ´ëÇÑ °ü½ÉÀÌ Å©°Ô Àϱ⠽ÃÀÛÇß°í, ¿©·¯ ¾ð¾îÀÇ Çü¼º¿¡ Å« ¿µÇâÀ» ³¢ÃÆ´Ù. ÀÌ ³í¹®ÀÌ ³ª¿À°í, ÀÌÈÄ 10³âµµ ³Ñ°Ô, ¾Æ´Ï Áö±Ý±îÁöµµ ÀÌ ³í¹®¿¡ ´ëÇÑ ³íÀïÀº ±×Ä¡Áö ¾Ê°í ÀÖ´Ù. ÀÌ ³í¹®ÀÇ ÇÙ½ÉÀº ´ÙÀ½ µÎ ¹®Àå¿¡ Àß µå·¯³ª°í ÀÖ´Ù.
¨ç ¿ì¸®´Â(¿ì¸®ÀÇ ÇѰ踦 ¾Ë°í ÀÖ´Â Çö¸íÇÑ ÇÁ·Î±×·¡¸Óó·³) Á¤ÀûÀÎ ÇÁ·Î±×·¥°ú µ¿ÀûÀÎ ÁøÇà°úÁ¤ °£ÀÇ °³³äÀûÀÎ °£°ÝÀ» ÃÖ¼ÒÈÇϱâ À§ÇØ ÃÖ¼±À» ´ÙÇØ¾ß Çϰí, ±×·¸°Ô ÇØ¼ (ÅØ½ºÆ® °ø°£¿¡ ÆîÃÄÁø) ÇÁ·Î±×·¥°ú (½Ã°£»ó¿¡ ÆîÃÄÁø) ÁøÇà °úÁ¤ »çÀÌÀÇ ´ëÀÀ °ü°è°¡ °¡´ÉÇÑ ÇÑ ¸í¹éÇÏ°Ô ÇØ¾ß ÇÑ´Ù.
¨è ¾î¶°ÇÑ ±¸¹®(clause)À̵ç, ÇÁ·Î±×·¡¸Ó µ¶¸³Àû ÁÂÇ¥°è(programmer independent coordinate system)°¡ ÁøÇà°úÁ¤À» ¿©ÀüÈ÷ À¯ÀÍÇÏ°í Æí¸®ÇÏ°Ô ¼³¸íÇØ ÁÙ ¼ö ÀÖ¾î¾ß ÇÑ´Ù´Â ¿ä±¸ »çÇ×À» ¸¸Á·½ÃÄÑ¾ß ÇÑ´Ù.
¸ÕÀú ¨ç¹ø ¹®ÀåÀ» ¼³¸íÇØ º¸ÀÚ. ´ÙÀͽºÆ®¶ó´Â ÇÁ·Î±×·¡¹ÖÀÌ ¸ñÇ¥·Î ÇÏ´Â °ÍÀº ÇÁ·Î±×·¥ ÀÚü°¡ ¾Æ´Ï°í ±× ÇÁ·Î±×·¥ÀÌ »ý¼ºÇÒ µ¿ÀûÀÎ ÁøÇà°úÁ¤À̶ó´Â Á¡¿¡ ÁÖ¸ñÇÑ´Ù. ¿ì¸®´Â ¿Ã¹Ù¸¥ ÇÁ·Î±×·¥À» ¸¸µå´Â °Íº¸´Ù ¿Ã¹Ù¸¥ ÁøÇà°úÁ¤À» ¸¸µé¾î ³»´Â µ¥ Æ÷Ä¿½º¸¦ ¸ÂÃç¾ß ÇÑ´Ù. ±×·±µ¥ ¿ì¸®°¡ Á÷Á¢ ¸¸Áö´Â °ÍÀº ÇÁ·Î±×·¥À̰í, °Å±â¼ µ¿ÀûÀÎ ÁøÇà°úÁ¤À» ¸¸µé¾î³»´Â °ÍÀº ÄÄÇ»ÅÍ´Ù. ±×·¯¹Ç·Î ÇÁ·Î±×·¥°ú °úÁ¤ °£¿¡ »óÀÀ¼ºÀÌ °³ÀçÇÑ´Ù.
¿ì¸®´Â Á¤ÀûÀÎ ÇÁ·Î±×·¥À» ¸¸Áö¸é¼ ½ÇÁ¦·Î´Â ±× ÇÁ·Î±×·¥ÀÌ ¸¸µé¾î³¾ µ¿ÀûÀÎ °úÁ¤À» »óÁ¤ÇØ¾ß ÇÑ´Ù. ¹®Á¦´Â ¿©±â¿¡¼ ¹ß»ýÇÑ´Ù. ÇÁ·Î±×·¥Àº °ø°£(ÅØ½ºÆ® °ø°£)¿¡ Á¸ÀçÇÏ°í °úÁ¤Àº ½Ã°£¿¡ Á¸ÀçÇÑ´Ù. ÇÏÁö¸¸ Àΰ£ÀÇ ÀÎÁö ±¸Á¶´Â Á¤ÀûÀÎ °ü°è¸¦ ÀÌÇØÇÏ´Â µ¥ ´õ ÀûÇÕÇÏ°Ô µÇ¾î ÀÖ´Ù. ½Ã°£¿¡ µû¶ó º¯ÇÏ´Â µ¿ÀûÀÎ °úÁ¤À» ½Ã°¢ÈÇÏ´Â °ÍÀº Àΰ£À¸·Î¼´Â ¸Å¿ì ¾î·Á¿î ÀÏÀÌ´Ù. À̰ÍÀÌ ÇÁ·Î±×·¡¹ÖÀÌ ¾î·Á¿î ÀÌÀ¯´Ù ¡ª ´öºÐ¿¡ ¹ö±×°¡ »ý±â±âµµ ÇÑ´Ù.
±×·¯¸é ¿ì¸®´Â Àΰ£¿¡°Ô ÀûÇÕÇÑ Á¤ÀûÀÎ °ø°£°ú ½ÇÁ¦ ÇÁ·Î±×·¥ÀÌ µ¹¾Æ°¥ µ¿ÀûÀÎ ½Ã°£ »çÀÌÀÇ ´ëÀÀ¼ºÀ» ÃÖ´ëÇÑ ¸í¹éÇÏ°Ô ÇÒ ¹æ¹ýÀ» ã¾Æ¾ß ÇÑ´Ù. ±×·¯¸é ¨è¹ø ¹®ÀåÀº ¾î¶² ÀǹÌÀϱî?
09:
10: int a = 1;
11: int b = 2;
@12: int c = 3;
13:
¹èÁ¤¹®À¸·Î¸¸ ÀÌ·ç¾îÁø ¾ÕÀÇ ÇÁ·Î±×·¥À» ½ÇÇàÇÑ ÈÄ ÇÁ·Î¼¼½º°¡ @ ºÎºÐ¿¡ µµ´ÞÇÑ ½ÃÁ¡À» »ó»óÇØ º¸ÀÚ. ÀÌ Äڵ忡´Â goto ¹®ÀÌ Á¸ÀçÇÏÁö ¾ÊÀ¸¹Ç·Î @Àº Àüü °úÁ¤ Áß¿¡¼ ÇöÀç ÁøÇà ½ÃÁ¡À» Ç¥½ÃÇϱ⿡ ÃæºÐÇÏ´Ù. ¿ì¿¬Ä¡ ¾Ê°Ô ÅØ½ºÆ® °ø°£ÀÇ Ç¥ÇöÀÌ ½Ã°£»óÀÇ Ç¥Çö°ú Á¤È®È÷ ´ëÀÀÇÑ´Ù. ¼³¸íÀ» À§ÇØ ´ÙÀ½ Äڵ带 º¸ÀÚ.
10: LABEL1:
@11: int a = 1;
12:
13: int b = 2;
14: goto LABEL1:
15:
´ÙÀ½°ú °°ÀÌ ÇöÀç ÁøÇà ½ÃÁ¡ÀÌ @ ºÎºÐ¿¡ µµ´ÞÇÑ »óȲÀ» °¡Á¤ÇÏÀÚ. ÀÌ Äڵ忡¼ @ÀÇ À§Ä¡¿¡ µµ´ÞÇßÀ» ¶§ ÀÌ ÇÁ·Î±×·¥ÀÇ È帧ÀÌ 13¶óÀÎÀ» °ÅÃÆ´ÂÁö, °ÅÄ¡Áö ¾Ê¾Ò´ÂÁö ÀÌ Ç¥½Ã(@)¸¸À¸·Î´Â ºÒºÐ¸íÇÏ´Ù. Áï, ÀÌ Äڵ尡 ¸¸µé¾î³»´Â ÁøÇà°úÁ¤ÀÌ 10, 11, 12, 13, 14, 10, 11, ¡¦Àε¥, ¿©±â¿¡¼ Áö±Ý ÁøÇàÀÌ Ã¹ ¹øÂ° 11 À§Ä¡¿¡±îÁö ¿Í ÀÖ´Â °ÍÀÎÁö, ¾Æ´Ï¸é µÎ ¹øÂ° 11 À§Ä¡¿¡ ¿Í ÀÖ´Â °ÍÀÎÁö ÀÌ Á¤º¸¸¸À¸·Î´Â ºÎÁ·ÇÏ´Ù´Â À̾߱â´Ù. ÇöÀç±îÁö ¸î °³ÀÇ ¶óÀÎÀ» ó¸®Çß´ÂÁö ÇÏ´Â ¸í·É¾î Ä«¿îÅÍ(ÀÏÁ¾ÀÇ Á¤±ÔÈµÈ ½Ã°è) Á¤º¸°¡ ÇÊ¿äÇÏ´Ù. ÇÏÁö¸¸ ÀÌ ¹æ½Ä¿¡´Â ½É°¢ÇÑ ¹®Á¦°¡ Àִµ¥ Á¶±Ý ÈÄ¿¡ »ó¼úÇϰڴÙ.
ÀÌ¿Í °°ÀÌ ÇÁ·Î±×·¥ÀÇ ÁøÇà °úÁ¤À» ±â¼ú(characterize)Çϱâ À§ÇØ ÇÊ¿äÇÑ Á¤º¸(¿¹ÄÁ´ë @ Ç¥½Ã ¶Ç´Â ¸í·É¾î Ä«¿îÅÍ)¸¦ ÇÁ·Î±×·¡¸Ó µ¶¸³Àû ÁÂÇ¥°è¶ó°í ÇÑ´Ù. ¿Ö ÇÁ·Î±×·¡¸Ó µ¶¸³Àû ÁÂÇ¥°è°¡ Áß¿äÇÒ±î? ¿Ö ÇÁ·Î±×·¥ÀÇ ÁøÇà°úÁ¤À» ±â¼ú(Ư¼ºÈ)ÇÏ´Â °ÍÀÌ Áß¿äÇÒ±î?
º¯¼ö¿¡ ´ã±ä °ªÀÇ Àǹ̸¦ Á¦´ë·Î ÇØ¼®ÇÏ´Â °ÍÀÌ ÇÁ·Î±×·¥ ÀÌÇØ³ª ¼öÁ¤ ȤÀº ÀÛ¼º¿¡ ÀÖ¾î °¡Àå Áß¿äÇÑ ÀÏ Áß Çϳª¶ó´Â Á¡¿¡ À̰ßÀÌ ÀÖ´Â »ç¶÷Àº ¾øÀ» °ÍÀÌ´Ù. ±×·±µ¥ ¸ðµç º¯¼ö´Â ÇöÀç ÁøÇà°úÁ¤ÀÇ ¾î´À ½ÃÁ¡¿¡ ¿ÍÀÖ´À³Ä¿¡ µû¶ó ±× °ªÀÇ ÇØ¼®ÀÌ °áÁ¤µÈ´Ù.
´ÙÀͽºÆ®¶ó´Â ÀÚ½ÅÀÇ ³í¹®¿¡¼ ¡®¹æ¾È¿¡ ÀÖ´Â »ç¶÷ ¼ýÀÚ¡¯ ¿¹¸¦ µç´Ù. nÀ̶ó´Â º¯¼ö°¡ ÇöÀç ¹æ¾È¿¡ ÀÖ´Â »ç¶÷ÀÇ ¼ýÀÚ¸¦ ´ã°í ÀÖ´Ù°í ÇÏÀÚ. Áö±Ý ¹æ¾È¿¡ ¾Æ¹«µµ ¾ø´Ù¸é nÀº 0ÀÌ µÈ´Ù. ±×·±µ¥, ¸¸¾à »ç¶÷ÀÌ ÇÑ ¸í µé¾î¿À¸é ÇöÀç nÀÇ ¼ýÀÚ¿¡ 1À» ´õÇØ 1ÀÌ µÉ °ÍÀÌ´Ù. ¿©±â¿¡¼, ¸¸¾à »ç¶÷Àº µé¾î¿Ô°í ³»°¡ nÀ» Áõ°¡½Ã۱â Á÷ÀüÀÇ ½ÃÁ¡À» »óÁ¤ÇØ º¸¸é ±× ¶§ nÀº ¡®ÇöÀç ¹æ¾ÈÀÇ »ç¶÷ÀÇ ¼ýÀÚ - 1¡¯ÀÌ µÈ´Ù. º¯¼öÀÇ ÇØ¼®ÀÌ ´Þ¶óÁö´Â °ÍÀÌ´Ù.
º¯¼ö¿¡ ´ã±ä °ªÀÇ Àǹ̸¦ ÇØ¼®ÇÒ ¼ö ÀÖÀ¸·Á¸é Àüü °úÁ¤¿¡¼ Áö±Ý ¾î´À ½ÃÁ¡¿¡ µµ´ÞÇØ ÀÖ´ÂÁö ¾Ë ¼ö ÀÖ¾î¾ß ÇÑ´Ù. µû¶ó¼ ÇÁ·Î±×·¥ÀÇ ÁøÇà°úÁ¤À» ±â¼úÇÒ ¼ö ÀÖ´Ù´Â °ÍÀÌ Å« Àǹ̸¦ °®´Â °ÍÀ̸ç, ÀÌ·± Ư¼ºÈ¸¦ °¡´ÉÄÉ ÇØÁÖ´Â ÇÁ·Î±×·¡¸Ó µ¶¸³Àû ÁÂÇ¥°è°¡ Áß¿äÇÑ °ÍÀÌ´Ù.
À̰ÍÀº ´ÙÀͽºÆ®¶ó°¡ ÇÁ·Î±×·¥ Áõ¸í(program correctness proof)À» ¿Ã¹Ù¸¥ ÇÁ·Î±×·¥À» ¸¸µå´Â, ±×¸®°í ÇÁ·Î±×·¥ÀÌ ¿Ã¹Ù¸¥Áö Áõ¸íÇÏ´Â µµ±¸·Î »ç¿ëÇϱ⠶§¹®¿¡ °¢º°ÇÑ Àǹ̰¡ ÀÖ´Ù. ´ÙÀͽºÆ®¶óÀÇ ¹æ¹ýÀº ƯÁ¤ ½ÇÇà ½ÃÁ¡¿¡ ÀÖ¾î ¾î¶² Á¶°Ç(invariant)À» ¸¸Á·½ÃÄÑ¾ß ÇÑ´Ù´Â ½ÄÀ¸·Î ÇÁ·Î±×·¥À» ¿Ã¹Ù¸£°Ô ¸¸µé¾î ³ª°£´Ù.
¿¹¸¦ µé¾î ¡®10¹ø ¶óÀΰú 11¹ø ¶óÀÎÀÇ »çÀÌ¿¡¼ s´Â 1ºÎÅÍ n±îÁöÀÇ ÇÕÀ̾î¾ß ÇÑ´Ù¡¯´Â Á¶°Ç(ÀÏÁ¾ÀÇ assert¶ó°í ÇÒ ¼ö ÀÖ´Ù)À» ²¿¸®Ç¥ ´ÞµíÀÌ ´Þ¾Æ³õÀ» ¼ö ÀÖ°Ô µÇ´Â °ÍÀ̸ç, ÀÌ°Ô µÇ¸é ÇÁ·Î±×·¡¹ÖÀ» ¼öÇÐ Áõ¸í ÀÛ¼ºÇϵíÀÌ ¾ö°ÝÇÏ°Ô ÀÛ¼ºÇÒ ¼ö ÀÖ´Ù. ¿¹¸¦ µé¾îº¸ÀÚ.
09: ...
10: if (x<0) a=x
else a=-x;
@11: ...
¾ÕÀÇ ÄÚµåÀÇ ½ÇÇà °úÁ¤ÀÌ @À̶ó´Â ÅØ½ºÆ® À妽º(textual index) ÁöÁ¡(°ø°£»óÀÌµç ½Ã°£»óÀ̵ç)¿¡ µµ´ÞÇßÀ» ¶§ º¯¼ö aÀÇ °ª¿¡ ´ëÇØ ¹«Á¶°Ç a=|x|¶ó°í ¾î¶² ÀÇ¹Ì ÀÖ´Â ¡®Çؼ®¡¯À» ºÙÀÏ ¼ö ÀÖ´Â °ÍÀÌ´Ù.
ÇÏÁö¸¸ goto¸¦ »ç¿ëÇÏ´Â °æ¿ì¸¦ »ý°¢ÇØ º¸ÀÚ. ÀÌ °æ¿ì ¾Õ¼ ¼³¸íÇÑ ¹Ù¿Í °°ÀÌ ´ÜÀÏÇÑ ÅØ½ºÆ® À妽º(@)·Î´Â ºÎÁ·ÇÏ°í ¸í·É¾î Ä«¿îÅͰ¡ ÀÖ¾î¾ß ÇÑ´Ù. ±×·¯³ª ÀÌ ¹æ½ÄÀº º¯¼ö °ªÀÇ Àǹ̸¦ ÇØ¼®ÇÏ´Â µ¥ ÀÖ¾î ÀüÇô À¯¿ëÇÏÁö ¸øÇÏ´Ù. ¸í·É¾î Ä«¿îÅ͸¦ ÅëÇØ Áö±Ý±îÁö ¸î °³ÀÇ ¸í·ÉÀÌ ¼öÇàµÆ´ÂÁö¸¦ ¾Ë¾ÆºÃÀÚ, ±×°ÍÀ» ±Ù°Å·Î ƯÁ¤ º¯¼ö °ªÀÇ Àǹ̸¦ ÇØ¼®Çϰųª º¯¼ö °ªÀÌ Æ¯Á¤ÇÑ Àǹ̸¦ °®°Ô µÇ´Â ÁöÁ¡ÀÇ ÁÂÇ¥Á¡µéÀ» ã±â¶õ ±Øµµ·Î ¾î·Á¿î ÀÏÀ̱⠶§¹®ÀÌ´Ù(¡®ÇöÀç±îÁö n°³ÀÇ ¸í·ÉÀ» ½ÇÇàÇß´Ù¡¯´Â °Í¿¡´Â ±¸Ã¼ÀûÀÎ Àǹ̰¡ °á¿©µÇ¾î Àֱ⠶§¹®¿¡ Ãß»óÀûÀÎ »ç¿ëÀÌ ¸Å¿ì ¾î·Æ´Ù).
ÇÁ·Î±×·¡¸Ó µ¶¸³Àû ÁÂÇ¥°è°¡ º¯¼ö °ªÀÇ Àǹ̸¦ ÇØ¼®ÇÏ´Â µ¥ µµ¿òÀÌ µÇ±â ¶§¹®¿¡ À¯¿ëÇÏ´Ù°í ÇÑ´Ù¸é, ±×·¯ÇÑ À¯¿ëÇÔÀ» Á¦°øÇÏÁö ¸øÇÏ´Â ÁÂÇ¥°è´Â ºñ·Ï ±×°ÍÀÌ ÁøÇà °úÁ¤À» Á¤È®È÷ ±â¼úÇÒ ¼ö ÀÖ´Ù°í ÇÏ´õ¶óµµ ¹«ÀǹÌÇÏ´Ù. ´ÙÀͽºÆ®¶ó´Â gotoÀÇ µµÀÔÀÌ À¯¿ëÇÑ ÇÁ·Î±×·¡¸Ó µ¶¸³Àû ÁÂÇ¥°è¸¦ »ç¿ëÇÒ ¼ö ¾ø°Ô ¸¸µç´Ù´Â Á¡¿¡¼ ÇØ·Ó´Ù°í ¸»Çϰí ÀÖ´Ù.
ÀÌ ³í¹®ÀÇ ÇÙ½ÉÀ» »ìÆìº¸¾Ò´Âµ¥, µ¶Àڵ鵵 ¸ðµÎ µ¿ÀÇÇϰÚÁö¸¸ ÀÌ ³í¹®Àº ´Ü¼øÈ÷ ¡®goto ¹®À» ¾ø¾Ö¶ó¡¯´Â ¼öÁØÀÌ ¾Æ´Ï´Ù. ´ÙÀͽºÆ®¶ó ½º½º·Îµµ ÀÚ½ÅÀÌ Á¦¾ÈÇÏ´Â ±¸Á¶Àû ÇÁ·Î±×·¡¹ÖÀÌ ´Ü¼øÈ÷ goto ¹® Á¦°Å Á¤µµ·Î µµ¸Å±ÞÀ¸·Î ÆÈ¸®´Â µ¥ ½ÉÇÑ ºÒÄè°¨À» Ç¥ÇöÇß´Ù. ±¸Á¶Àû ÇÁ·Î±×·¡¹ÖÀº ¹°·ÐÀ̰í, ÀÌ ³í¹® ¿ª½Ã ½Ã°£°ú °ø°£ÀÇ °¸À» ÁÙ¿© ÇÁ·Î±×·¡¸Ó°¡ ½Ç¼ö¸¦ ´úÇÏ°í ¿Ã¹Ù¸¥ ÇÁ·Î±×·¥À» Á»´õ ½±°Ô ¸¸µé°Ô µµ¿ÍÁÖ´Â °ÍÀÌ Áß¿äÇÏ´Ù°í ¿ª¼³ÇÑ´Ù.
¿©´ãÀÌÁö¸¸ ÀÌ ³í¹®ÀÇ Á¦¸ñ ¡¸Go to Statement Considered Harmful¡¹¿¡¼ ¡®¡¿¡¿ Considered Harmful¡¯À̶ó´Â À¯Çà¾î ÆÐÅÏÀÌ »ý°å´Ù. ½ÉÁö¾î´Â ¡°¡®Goto Considered Harmful¡¯ Considered Harmful¡± ȤÀº °Å±â¿¡ ÇÑ ´Ü°è ´õ µé¾î°£ Á¦¸ñ(Goto Considered Harmful Considered Harmful Considered Harmful)µµ ÀÖ´Ù. ÇÏÁö¸¸ ÀÌ Á¦¸ñ ÀÚü´Â ´ÙÀͽºÆ®¶ó°¡ ÁöÀº °ÍÀÌ ¾Æ´Ï´Ù. ÆÄ½ºÄ®À» ¸¸µç ´ÏŬ¶ó¿ì½º ¿ö¾²(Niklaus Wirth) ±³¼ö°¡ ÀÚÀÇÀûÀ¸·Î ÁöÀº °ÍÀÌ´Ù.
³íÀï
ÀÌ ³í¹® ÀÌÈÄ¿¡ CACM ¿ª»ç»ó °¡Àå Ȱ¹ßÇÑ ³íÀïÀÌ ¿À°í °¬´Ù. CACM»Ó¸¸ ¾Æ´Ï¶ó Çа衤¾÷°è Àü¹Ý¿¡ °ÉÃÄ ¾ÆÁÖ ¶ß°Å¿î Åä·Ð ÁÖÁ¦¿´´Ù. ÀÌ ³í¹®¿¡ ¹Ý´ëÇÏ´Â »ç¶÷µé, Áï goto ¹®À» »ç¿ëÇÏÀÚ´Â »ç¶÷µéÀº ¾î¶°ÇÑ ÁÖÀåÀ» Çß´ÂÁö »ìÆìº¸ÀÚ. ¿©±â¿¡¼ ÁÖ¸ñÇØ¾ß ÇÒ °ÍÀº ÀÌ·¯ÇÑ ÁÖÀåÀ» ÇÏ´Â »ç¶÷µéµµ goto ¹®À» ¾²´Â °Ô ´õ ÁÁÀº °æ¿ì°¡ ÀÖ´Ù´Â Á¤µµÀÇ ÁÖÀåÀ» ÇßÀ» »Ó, goto ¹®À» ¸¹ÀÌ ¾²´Â °Ô ÁÁ´Ù´Â ÁÖÀåÀ» ÇÑ ÀûÀº ¾ø¾ú´Ù.
ÀÌ·¯ÇÑ ÁÖÀåÀ» ÇÏ´Â »ç¶÷µéÀº goto ¹®À» ¾²´Â °Ô ´õ ÁÁÀº °æ¿ì¿¡ ´ëÇÑ ¸î °¡Áö ¿¹¸¦ º¸ÀÓÀ¸·Î½á ±×µéÀÇ ÁÖÀå¿¡ ´ëÇÑ ±Ù°Å¸¦ Á¦½ÃÇß´Ù. À̸¦Å×¸é ·çÇÁ¿¡¼ ¹þ¾î³ª±â(¹è¿¿¡¼ ƯÁ¤ °ªÀ» ã¾Æ³»´Â µî), ¿¡·¯¿Í °°Àº ¿¹¿Ü »óȲÀ» ó¸®ÇÏ´Â ÄÚµå(ÆÄÀÏ Ã³¸® Áß µð½ºÅ© ¿À·ù¸¦ ó¸®ÇÏ´Â µî), ¿©·¯ °³ÀÇ ¸®¼Ò½º¸¦ ÇÒ´çÇϰí ÇØÁ¦Çϱâ(¸Þ¸ð¸®¸¦ ÇÒ´çÇÏ°í ¿¡·¯°¡ ³ª¸é °ð¹Ù·Î ÇØÁ¦ÇÏ´Â µî), Áߺ¹ ÄÚµå Á¦°Å/´õ ªÀº ÄÚµå/°¡µ¶¼º Çâ»ó, ¼º´É Çâ»ó(goto¸¦ ÀÌ¿ëÇϸé Ç÷¡±× ºñ±³°¡ ÇÊ¿ä ¾ø¾îÁö´Â °æ¿ì°¡ ¸¹´Ù) µîÀÇ ¿¹°¡ ÀÖ´Ù.
±×¸®°í ÀÌ·± ¹Ý·Ðµé¿¡ ´ëÇØ ¿ª½Ã ±¸Á¶ÁÖÀÇÀû ÇÁ·Î±×·¡¸Ó Áø¿µ¿¡¼ ¹Ý°ÝÀÌ ÀÖ¾ú´Ù. ÇÏÁö¸¸ ¾î´À Âʵµ ¼³µæÇϰųª ¼³µæ ´çÇÏÁö´Â ¸øÇß´Ù. ³íÀïÀ» Á÷Á¢ È®ÀÎÇÏ·Á¸é CACM Vol.30 No.3, 5, 6, 7, 8, 11, 12(ÀÌ Áß¿¡´Â ´ÙÀͽºÆ®¶ó ÀÚ½ÅÀÇ ´äº¯µµ Æ÷ÇԵǾî ÀÖ´Ù)¸¦ ²À º¸±â ¹Ù¶õ´Ù. ¸¹Àº °ÍÀ» ¾òÀ» ¼ö ÀÖÀ» °ÍÀÌ´Ù.
¿©±â¼ ¿ì¸®´Â µµ³Îµå Å©´©½º(Donald Knuth) ±³¼öÀÇ ¡¸Structured Programming with Goto¡¹¶ó´Â ³í¹®¿¡ ÁÖ¸ñÇϰíÀÚ ÇÑ´Ù. ÀÌ ³í¹®ÀÇ °á·ÐÀ» ¿ä¾àÇÏÀÚ¸é ´ÙÀ½°ú °°´Ù.
goto¸¦ ½á¼ È¿À²¼ºµµ ³ô¾ÆÁö°í °¡µ¶¼ºµµ ³ô¾ÆÁö´Â °æ¿ì°¡ ÀÖ±ä ÇÏ´Ù. ±×·¸Áö¸¸ °¡±ÞÀûÀ̸é goto¸¦ ¾²´Â °Íº¸´Ù´Â gotoº¸´Ù ´õ Ãß»óÀûÀÎ ±¸¹®À» ¾²´Â °Ô ÁÁ´Ù. ¶Ç´Â ÇÁ·Î±×·¥À» ¸¸µé°Å³ª º¯ÇüÇÏ´Â ÇÁ·Î±×·¥À» ÀÌ¿ëÇÏ´Â ¹æ¹ýµµ ÀÖ´Ù.
ÀÌ ³í¹®ÀÇ °á·ÐÀÌ ÇöÀç ¾î´À Á¤µµ³ª ½ÇÇöµÆÀ»±î? ÀÏ´Ü, ´ëºÎºÐÀÇ ¾ð¾î¿¡¼´Â goto¸¦ Èí¼öÇÏ¿© »óÀ§ ¼öÁØÀÇ Á¦¾î¹®ÀÎ break, continue, exception µîÀ» Áö¿øÇÏ°Ô µÆ´Ù. ´öºÐ¿¡ ¿ì¸®´Â Àڽŵµ ¸ð¸£°Ô ¾ÈÀüÇÑ goto¸¦ ¾²°í ÀÖ´Â ¼ÀÀÌ´Ù. ÇÏÁö¸¸ ¿©ÀüÈ÷ goto¸¦ ¾²´Â ¾ð¾î°¡ ³²¾Æ ÀÖ´Ù. ¾ÆÁ÷ ³íÀïÀº ±×Ä¡Áö ¾Ê¾Ò´Ù. ¿µ¿øÈ÷ ³¡³ªÁö ¾ÊÀ»Áöµµ ¸ð¸£°Ú´Ù.
ÇöÀçÀû °¡Ä¡
Çϴÿ¡ ´ëÇØ ¸»ÇÑ °ÍÀÌ Àΰ£ÀÇ ÀÏ·Î ±ÍÂøµÇÁö ¾Ê´Â´Ù¸é Çϴÿ¡ ´ëÇØ Àß ¸»ÇÑ °ÍÀÌ ¾Æ´Ï¿ä, ¿¾³¯¿¡ ´ëÇØ ¸»ÇÑ °ÍÀÌ ÇöÀ縦 ÅëÇØ È®ÀεÇÁö ¾Ê´Â´Ù¸é ¿¾³¯¿¡ ´ëÇØ Àß ¸»ÇÑ °ÍÀÌ ¾Æ´Ï´Ù. ¡ª ÃÖÇѱâ, ¡º½Å±âÅë¡»
ÀÌ ³í¹®ÀÇ ÇöÀçÀû °¡Ä¡¿¡ ´ëÇØ »ý°¢Çغ¸ÀÚ(¸¸¾à ÀÌ ³í¹®ÀÌ Áö±Ý ¿©±â¿¡¼ ¾Æ¹«·± Àǹ̰¡ ¾ø´Ù¸é º¼ Çʿ䵵 ¾øÁö ¾Ê°Ú´Â°¡?) goto ³²¿ëÀÌ ¹®Á¦°¡ µÉ ¼ö ÀÖ´Â °Í°ú ºñ½ÁÇϰÔ, ¿ì¸®°¡ ¾ð¾î¸¦ Çö¸íÇÏÁö ¸øÇÑ ¹æ¹ýÀ¸·Î »ç¿ëÇϰí ÀÖ´Â ¿¹°¡ Àִ°¡? ½Ã°£°ú °ø°£ÀÇ ÀÎÁöÀû °¸ÀÌ Á¸ÀçÇÏ´Â, ÇÁ·Î±×·¡¸Ó·Î ÇÏ¿©±Ý ½Ç¼öÇϱ⠽±°Ô ¸¸µå´Â ±×·± ¿¹°¡ ¾ÆÁ÷µµ ÀÖÀ» °ÍÀÌ´Ù.
À̸¦Å×¸é °Å¸®°¡ ¸Ö°Å³ª ÁßøµÈ if/else´Â goto ¹®°ú ºñ½ÁÇÑ ¹®Á¦¸¦ °®´Â´Ù. ¿Ö³ÄÇϸé else ºÎºÐÀ» ¸¸³µÀ» ¶§ ¿ì¸®´Â ¸Ó¸® ¼Ó¿¡¼ if ¹®¿¡ µé¾î ÀÖ´ø Á¶°Ç¿¡ ´ëÇÑ ºÎÁ¤À» ÃëÇÏ´Â ¿¬»êÀ» ¼öÇàÇØ¾ß Çϰí, ÁßøµÈ if ¹®ÀÇ °æ¿ì ¿ÜºÎÀÇ if ¹®¿¡ µé¾î ÀÖ´ø Á¶°Ç°ú ³»ºÎÀÇ if ¹®¿¡ µé¾î ÀÖ´Â Á¶°Ç¿¡ ´ëÇÑ AND ¿¬»êÀ» ¼öÇàÇØ¾ß ÇÑ´Ù. ¶Ç if ¹®°ú else ¹®ÀÇ °Å¸®°¡ ¸Ö¾îÁö¸é ±× »çÀÌ¿¡ ±â¾ïÇØ¾ß ÇÒ °ÍÀÌ ¸¹¾ÆÁö°Ô µÈ´Ù. °á±¹ Àΰ£ÀÇ ´Ü±â ±â¾ï ÀÚü´Â 7+-2 ÀÌ»óÀ» Çѹø¿¡ ´ãÁö ¸øÇÑ´Ù´Â ÇѰ踦 ³Ñ°Ô µÇ°í, ¿©±â¿¡¼ ºñ¿ëÀÌ ¹ß»ýÇÑ´Ù. ÀÌ·± °æ¿ì ¸®ÆåÅ丵¿¡¼ ¸»ÇÏ´Â ¸Þ½îµå ÃßÃâÇϱâ(extract method) ±â¹ýÀ» »ç¿ëÇÒ ¼ö ÀÖ´Ù.
C++ °è¿ÀÇ ¾ð¾î¿¡¼ Áö¿øÇÏ´Â try/catch ±¸¹® ¿ª½Ã ³²¿ëµÉ °æ¿ì goto ¹®°ú °°Àº ¹®Á¦¸¦ °®°Ô µÈ´Ù. ½ÇÁ¦·Îµµ ¿¹¿Ü¸¦ goto ¹®Ã³·³ »ç¿ëÇÏ´Â °æ¿ì°¡ ¸¹ÀÌ ÀÖ´Ù(À̸¦Å×¸é ·çÇÁ¿¡¼ ¹þ¾î³ª±â À§ÇØ ¿¹¿Ü¸¦ ´øÁö´Â °æ¿ì). Á¶½´¾Æ ºí·Ï(Joshua Bloch)Àº ¡ºEffective Java¡»¿¡¼ ¿¹¿Ü¸¦ ¿ÀÁ÷ ¿¹¿ÜÀûÀÎ »óȲ¿¡¼¸¸ »ç¿ëÇØ¾ß ÇÑ´Ù°í ¸»Çϰí ÀÖ´Ù. ¿¹¿Ü°¡ ¿©·¯ °³ÀÇ È£Ã⠴ܰ踦 °ÅÃÄ ÇÑ ¹ø¿¡ Èê·¯³ª¿À´Â °æ¿ì ¿ì¸®´Â ¿¹¿ÜÀÇ Ãâ¹ßÀ̳ª µµÂø ÁöÁ¡À» ã±â À§ÇØ °¢°¢ÀÇ È£Ã⠴ܰ踦 ¼øÇàÇϰųª ¿ªÇàÇÏ¿© ÃßÀûÇØ¾ß ÇÑ´Ù. ¿ì¸®ÀÇ ¸Ó¸® ¼Ó¿¡ ´ã±â¿¡´Â ³Ê¹« ¸¹Àº Á¤º¸´Ù.
¸Þ½îµå ±æÀ̰¡ ±ä °Íµµ ºñ½ÁÇÑ ¹®Á¦°¡ ÀÖ´Ù. ÀϹÝÀûÀ¸·Î ¸Þ½îµå°¡ ±æ¾îÁö¸é ÀÚ¿¬½º·´°Ô Áö¿ª º¯¼öÀÇ °³¼öµµ ´Ã¾î³ª´Âµ¥, ¿ì¸®ÀÇ ¸Ó¸® ¼Ó¿¡ ´ã°í ÀÖ¾î¾ß ÇÒ Á¤º¸·®ÀÌ ¸¹¾ÆÁö´Â ¼ÀÀÌ´Ù. ÀÌ °æ¿ìµµ ¸Þ½îµå ÃßÃâÇϱ⠱â¹ýÀ» »ç¿ëÇÒ ¼ö ÀÖ´Ù.
±×·¯³ª ¸Þ½îµå ±æÀ̰¡ ª´Ù°í ÇØ¼ Ç×»ó ¹®Á¦°¡ ¾ø´Ù´Â ½ÄÀ¸·Î »ý°¢ÇÒ ¼ö´Â ¾ø´Ù. ¸Þ½îµå ÃßÃâÇϱ⠱â¹ý µîÀ¸·Î ±ä ¸Þ½îµå¸¦ ª°Ô ÁÙ¿´´Ù ÇÏ´õ¶óµµ ÇØ´ç ¸Þ½îµå ³»ÀÇ Ãß»óÈ ¼öÁØ(abstraction level)ÀÌ ÀÏÄ¡ÇÏÁö ¾Ê´Â´Ù¸é °á±¹ ¿ì¸®´Â ¸Þ½îµå°¡ ÇÏ´Â ÀÏÀ» ÀÌÇØÇϱâ À§ÇØ ±× ¸Þ½îµå°¡ È£ÃâÇÏ´Â ÇÏÀ§ ¸Þ½îµåÀÇ Äڵ带 ã¾Æ Àоî¾ß ÇÑ´Ù. À̰ÍÀº ¿ÀÈ÷·Á ÇϳªÀÇ ±ä ¸Þ½îµåÀÏ ¶§º¸´Ù ´õ ÁÁÁö ¾ÊÀº »óȲÀÏ ¼ö ÀÖ´Ù.
º´·Ä¼º(parallelism)Àº ¾î¶³±î? ½Ã°£»óÀÇ È帧À» ÅØ½ºÆ® °ø°£¿¡ ³ªÅ¸³»´Â °ÍÀº ¾î·Æ´Ù. ´õ±º´Ù³ª µ¿½Ã¿¡ ¿©·¯ °³ÀÇ È帧ÀÌ ÀÖ°í, À̵éÀÌ ¼·Î ¾ûÄÑ ÀÖ´Ù¸é À̰ÍÀ» ÀÌÇØÇϰųª ¿Ã¹Ù¸£°Ô ¸¸µé¾î³»´Â °ÍÀº ´õ¿í ¾î·Á¿öÁø´Ù. ÀÌ ¸»Àº ¿ì¸®ÀÇ ÀÎÁöÀû ±¸Á¶¿Í º´·Ä¼º »çÀÌ¿¡´Â Å« °£±ØÀÌ ÀÖ´Ù´Â °ÍÀ» ÀǹÌÇÑ´Ù.
±×·¡¼ ¸ÖƼ ¾²·¹µå ÇÁ·Î±×·¥¿¡¼´Â ¹ö±×°¡ ¹ß»ýÇϱⰡ ½±´Ù. ¾î¶»°Ô ÇØ°áÇØ¾ß ÇÒ±î? Á¸ ¾Æ¿ì½ºÅÍÇÏ¿ìÆ®(John Ousterhout)´Â "Thread considered harmful"À̶ó´Â ¸»À» ÇÒ Á¤µµ·Î ¾²·¹µå°¡ ³²¿ëµÇ°í ÀÖ´Ù°í ¸»Çϸç, ´ëºÎºÐÀÇ °æ¿ì À̺¥Æ® ÁÖµµÀû ¾ÆÅ°ÅØÃ³(Event Driven Architecture)·Î ÃæºÐÇÏ´Ù°í ¸»ÇÑ´Ù. È£¾Æ(C.A.R. Hoare)ÀÇ CSP(Communicating Sequential Processes)´Â Á¶±Ý ´õ Ãß»óÀûÀÎ ´ÜÀ§¸¦ ¾µ ¼ö ÀÖµµ·Ï ÇØÁÖ¸ç ¿ì¸®ÀÇ ÀÎÁöÀû ±¸Á¶¿ÍÀÇ °£±ØÀÌ Àû´Ù.
ÀÌ·± À̾߱⿡ ´ëÇØ goto¸¦ Á¦°ÅÇÏ¸é ¼º´ÉÀÌ ¶³¾îÁø´Ù´Â ¹Ý¹ÚÀ» ¸¹ÀÌ ÇÑ´Ù. ¿¹ÄÁ´ë ¸Þ½îµå È£ÃâÀÌ Çϳª ´Ã¾î³ª°Å³ª ¿¹¿Ü¸¦ ¹ß»ý½ÃÄÑ¾ß ÇÏ´Â °Í ÀÚü°¡ ºñ¿ëÀÌ µç´Ù´Â °ÍÀÌ´Ù. ÇÏÁö¸¸ ´ëºÎºÐÀÇ °æ¿ì´Â ÀÌ·± Á¤µµ´Â ¼ÒŽ´ë½Ç Â÷¿øÀÎ °æ¿ì°¡ ¸¹´Ù. ¸¸¾à ÀÌ·± Á¤µµÀÇ ¸¶ÀÌÅ©·ÎÇÑ Æ©´×ÀÌ ÇÊ¿äÇÑ »óȲÀ̶ó¸é Å©´©½º°¡ ¸»ÇÏ´Â ÇÁ·Î±×·¥ º¯Çü(transformation)À» »ç¿ëÇØ ¾Æ¸§´Ù¿òÀ» Æ÷±âÇÏÁö ¾ÊÀ¸¸é¼ È¿À²±îÁöµµ ÀâÀ» ¼ö ÀÖ´Ù.
°íÀü ÀбâÀÇ Á߿伺 È®ÀÎÇϱæ
³í¹®À» Á÷Á¢ Àо¸é º¸Åë »ç¶÷µéÀÌ ÀúÀÚÀÇ ¾ÆÀ̵ð¾î¿¡ ´ëÇØ ÀÌÇØÇÏ´Â ¹Ù¿Í ½ÇÁ¦´Â Å« Â÷À̰¡ ÀÖÀ½À» ¾Ë°Ô µÈ´Ù. º»Àǰ¡ ¿Ö°îµÇ¾î Àü´ÞµÇ´Â °Íµµ ÀÖ°í, ÀúÀÚÀÇ Á¤¸» Áß¿äÇÑ À̾߱â´Â ºüÁö°í Â±â¸¸ ³²¾Æ¼ Àü´ÞµÇ´Â °Íµµ ¸¹´Ù. ¿ø·ù¿¡¼ ¸Ö¾îÁö¸é ¸Ö¾îÁú¼ö·Ï ¹°Àº Èå·ÁÁö°Ô ¸¶·ÃÀÌ´Ù. ÀúÀÚÀÇ ¾ÆÀ̵ð¾î´Â ÈξÀ ´õ ½ºÄÉÀÏÀÌ Å©°í ÆÄ¿öÇ®Çß´Ù. ´ÙÀͽºÆ®¶ó´Â "¾î¶»°Ô ÇÏÁö ¸»¶ó"´Â ¾ê±â »Ó ¾Æ´Ï¶ó "´ë½Å ¾î¶»°Ô Ç϶ó"´Â ±àÁ¤ÀûÀÎ À̾߱⵵ Çß´Ù. ±×·¯³ª »ç¶÷µéÀº ´õ ½±°í ¸íÈ®ÇØ º¸ÀÌ´Â "¾î¶»°Ô ÇÏÁö ¸»¶ó" ºÎºÐ¸¸ ±â¾ïÇß´Ù.
¿ì¸®´Â ÀÌ ³í¹®À» ÇÔ²² Àаí Åä·ÐÇÏ¸é¼ °íÀü ÀбâÀÇ Á߿伺À» ´Ù½Ã±Ý È®ÀÎÇÒ ¼ö ÀÖ¾ú´Ù. ¿ì¸®°¡ ¿øÀüÀ» ÀÐ¾î¼ ¾òÀ¸·Á´Â °ÍÀº ¾î¶² °á°ú·Î¼ÀÇ ´äÀ̶ó±âº¸´Ù´Â ±× »çÀ¯ °úÁ¤ÀÌ ¾Æ´Ò±î. ´ÙÀͽºÆ®¶ó°¡ ¹®Á¦¸¦ ³í¸®ÀûÀ¸·Î ºÐ¼®Çϰí ÇÑ ´Ü°è ³ôÀº ·¹º§·Î ÀϹÝÈÇØ À¯¿ëÇÑ °á·ÐÀ» À̲ø¾î³»´Â °úÁ¤, ÀÌ °úÁ¤ ÀÚüµµ ¿ì¸®¿¡°Ô ¸¹Àº ±³ÈÆÀ» ÁØ´Ù. ÀÌ ´öºÐ¿¡ goto ³í¹®ÀÌ ¿À´Ã³¯±îÁöµµ À¯È¿ÇÑ °ÍÀÌ ¾Æ´Ò±î.
À̰ÍÀ¸·Î ¡¸°íÀüÀ» ã¾Æ¼¡¹ ù ȸ¸¦ ¸¶Ä¡°íÀÚ ÇÑ´Ù. ºñ·Ï ÀÌ ±ÛÀÇ ÀúÀÚ°¡ ¼¼ ¸íÀÎ °ÍÀ¸·Î µÇ¾î ÀÖ±ä ÇÏÁö¸¸, »ç½Ç ¸£³×»ó½º Ŭ·´ ¸®´õ½Ê Æ®·¹À̴׿¡ Âü¼®ÇØ ÀÌ ³í¹®À» °°ÀÌ Àаí Åä·ÐÇÑ ´Ù¸¥ ¸ðµç »ç¶÷ÀÌ °øµ¿ ÀúÀÚÀÎ ¼ÀÀÌ´Ù. @
|