[Áöµð³ÝÄÚ¸®¾Æ]º¹ÀâÇÑ ¾ð¾î¿Í º¹ÀâÇØÁö´Â ¾ð¾î
¿äÁò ÇÊÀÚ¸¦ »ç·ÎÀâ°í ÀÖ´Â Å׸¶´Â LISPÀÌ´Ù. °ÅÀÇ »ç¿ëµÇÁö ¾Ê´Â °ÍÀ» ¾Ë¸é¼µµ È£±â½É ¶§¹®¿¡ ¾î¿ ¼ö°¡ ¾ø¾ú´Ù. LISPÀº ¿¹Àü¿¡ AIÀÇ ¾ð¾î·Î À¯¸íÇß´ø ¾ð¾î·Î ÄÄÇ»ÅÍ Çаè¿Í ¾÷°è¿¡¼ Áß¿äÇÑ ¾ð¾î¿´´Ù. Ç¥Çö·Âµµ ÁÁ°í ¸Þ¸ð¸®´Â ¸¹ÀÌ »ç¿ëÇÏÁö¸¸ 󸮼ӵµµµ ±×´ÙÁö ´À¸®´Ù°í ÇÒ ¼ö ¾ø´Â ±¦ÂúÀº ¾ð¾î¿´´Âµ¥ 90³â´ë ÀÌÈÄ·Î °©ÀÚ±â Á¡À¯À²ÀÌ ÁÙ¾îµé¾ú´Ù(¾÷±×·¹À̵å´Â ¶Ù¾î³ ȸ»ç¿Í °³¹ßÀڵ鿡 ÀÇÇØ °è¼Ó ÀÌ·ç¾îÁö°í ÀÖ´Ù.). LISPÀÇ »ç¿ëÀÚ°¡ ÁÙ¾îµé¾ú´Ù±âº¸´Ù´Â ¾ð¾îÀÇ »ç¿ëÀÚÃþÀÌ ´Ù¸¥ ¾ð¾îµé¿¡¼ ±ÞÁõÇÑ °ÍÀÌ ±× ÀÌÀ¯´Ù. ÀÚ¹Ù³ª C++¿Í ºñ±³ÇÏ¸é »ç¿ëÀÚÃþÀº ºÐ¸íÈ÷ »ó´ëÀûÀ¸·Î ¶³¾îÁø °ÍÀÌ´Ù.
 |
| Æú ±×·¹À̾öÀÇ ÇØÄ¿¿Í Ȱ¡ |
LISPÀº 2000³âµµ ÀÌÈÄ »ç¿ëÀÚÃþÀÌ Á¶±Ý ´Ã¾î³µ´Ù. ¿Ü±¹¿¡¼´Â LISP ºÕÀÌ Àá½Ã ÀÏ¾î³ Àûµµ ÀÖ¾ú´ø °ÍÀÌ´Ù. Peter SiebelÀÇ Practical Common LISP °°Àº Ã¥ÀÌ ¾Æ¸¶Á¸¿¡¼ ÄÄÇ»ÅÍ ¼Àû ÆÇ¸ÅÀÇ º£½ºÆ®¼¿·¯°¡ µÇ±âµµ Çß´Ù. Ã¥ÀÇ ¹ÝÀÀÀ¸·Î º¸¾Æ ºÐ¸íÈ÷ »ç¶÷µéÀº LISP¿¡ °ü½ÉÀÌ ÀÖ¾ú´Ù. ¿µÇâ·Âµµ ÀÖ°í ±Ûµµ Àß ¾²´Â ÇØÄ¿ÀÎ Æú ±×·¹À̾ö(Paul Graham:paulgraham.com) À̳ª ±¸±ÛÀÇ ÇÇÅÍ ³ëºò(Peter Norvig:norvig.com) °°Àº »ç¶÷µéÀÌ LISPÀÇ Á߿伺À» °Á¶Ç߱⠶§¹®À̱⵵ ÇÏ´Ù. È£±â½ÉÀÌ ÀÖ°í ÄÄÇ»ÅÍÀÇ Ç¥Çö·Â(expression)¿¡ ´ëÇØ °ü½ÉÀÌ ÀÖ´Â »ç¶÷µéÀÇ °ü½ÉÀ» ²ø°Ô µÈ °ÍÀÌ´Ù. ±×·¡¼ ³ª¸§´ë·Î È£±â½ÉÀ» °®´Â »ç¶÷µéÀÇ ¸Ó¸´¼ÓÀÌ LISPÀÇ ¼½ÄÁö¶ó°í ¸»ÇÒ ¼ö ÀÖ´Ù.
±×·±µ¥ Ç¥Çö·ÂÀº °õ°õÀÌ »ý°¢Çغ¸¸é Áß¿äÇÑ ¿ä¼Ò´Ù. ÇÁ·Î±×·¡¹Ö¿¡¼ ¾î¶² ÀÏ¿¡ ´ëÇÑ Ãß»óÀûÀÎ »ý°¢À» ÄÚµå·Î ¿Å±â´Â ¾ð¾î°íÀ¯ÀÇ Ç¥Çö´É·ÂÀº ´ë´ÜÈ÷ Áß¿äÇÏ´Ù. Æú ±×·¹À̾ö°ú ³ëºòÀº Ç¥Çö´É·Â¿¡¼ LISPÀÇ Ç¥Çö´É·ÂÀÌ ÈξÀ ´õ °ÇÏ´Ù°í ÁÖÀåÇÑ´Ù. ±×·¸´Ù¸é ¼Ó´Â ¼ÀÄ¡°í ÇØ º¼ ¸¸ÇÏÁö ¾ÊÀº°¡?
Ãʱ⿡´Â ½ºÆ¼ºì ·¹ºñÀÇ <ÇØÄ¿>¿¡ ³ª¿À´Â Á¦ 1 ¼¼´ë ÇØÄ¿µéÀÌ LISPÀÇ ÁÖÀΰøµéÀ̾ú´Ù. À̵éÀÌ Áß¿äÇÑ ±¸ÇöÀÚ, »ç¿ëÀÚ, ¿¬±¸ÀÚ¸¦ ¸ðµÎ °âÇÏ´ø ½ÃÀýÀÌ ÀÖ¾ú°í ¹Ì±¹ÀÇ AIÀÇ Ãʱ⿬±¸µéÀº LISP¿¡¼ Ãâ¹ßÇß´Ù. ±×·¡¼ ¸¹Àº ¾ÆÀ̵ð¾î¿Í µµ±¸µéÀÌ LISPÀ» ¹ÙÅÁÀ¸·Î Ãâ¹ßÇϱâ´Â ÇßÀ¸³ª LISPÀ¸·Î µ¹¾Æ¿ÀÁö´Â ¾Ê¾Ò´Ù. LISPÀº ¾Ë°í¸®ÁòÀ» ¼¼·ÃµÈ ¸ð½ÀÀ¸·Î Ç¥ÇöÇÏ´Â µ¥¿¡´Â ¼º°øÀûÀ̾úÀ¸³ª »ç½ÇÀº ÇÁ·Î±×·¡¹ÖÀ» ¹è¿ì±â°¡ ¾î·Á¿ü´Ù. ½ÇÁ¦ÀÇ ¾÷¹«¿¡ »ç¿ëÇÏ´Â ÇÁ·Î±×·¥Àº Á» ´õ °£´ÜÇÏ°í ´Ü¼øÇÒ Çʿ䰡 ÀÖ¾ú´Ù.
1960³âÀ» ÀüÈÄÇÏ¿© ÇÁ·Î±×·¡¹ÖÀÇ 3°¡Áö Áß¿äÇÑ ¿øÇüÀÌ µîÀåÇß´Ù. Çϳª´Â ÃÖÃÊÀÇ °í±Þ¾ð¾îÀÎ FORTRANÀ¸·Î ±× ÈÄ¿¡ ³ª¿Â BASICÀº ºñ½ÁÇÑ ¿øÇüÀ» »ç¿ëÇß´Ù. ¿äÁòÀº Ưº°ÇÑ ¿ëµµ¸¦ Á¦¿ÜÇϰí´Â »ç¿ëÇÏÁö ¾Ê´Â´Ù. ±× ´ÙÀ½¿¡ ³ª¿Â ¿øÇüÀÌ LISPÀ̾ú´Ù. LISPÀº List ProcessingÀ» ÀǹÌÇÑ´Ù. ´Ù¸¥ ¿øÇüÀÌ C.A.R. HoareÀÇ Algol-60 À̾ú´Ù. C¿Í Pascal, Java¿Í C++´Â AlgolÀÇ Ç¥ÇöÀ» µû¶ú´Ù. ¿äÁòÀº AlgolÀÇ °è¿ÀÌ ÁÖ·ùÀ̰í, LISP°è¿ÀÇ ¾ð¾î°¡ ¸î °³ Á¸ÀçÇÏ¸ç ³ª¸ÓÁö¸¦ »õ·Î¿î ÇüÅÂÀÇ ¾ð¾î¸¦ Æ÷ÇÔÇÑ ¾ð¾îµéÀÌ Ã¤¿ì°í ÀÖ´Ù.
Algol °è¿ÀÇ ¾ð¾î°¡ ÁÖ·ù°¡ µÈ °ÍÀº ±¸Á¶Àû ÇÁ·Î±×·¡¹ÖÀ» Áö¿øÇϰí 80³â´ë ¸»ºÎÅÍ ºü¸£°Ô OOPÀÇ ¿ÊÀ» ÀÔÀ¸¸é¼ ½Ã·ù¿¡ ÀûÀÀÇ߱⠶§¹®ÀÌ´Ù. ½ÇÁ¦·Î ÇÁ·Î±×·¡¹Ö ¾ð¾î¶ó´Â °ÍÀº ¾÷°è¿¡¼ ÀÎÁ¤ÇØ¾ß ÁÖ·ù°¡ µÉ ¼ö ÀÖ°í ¾÷°è´Â Àû´çÇÑ ½Ã°£°ú ³À̵µ·Î »ç¶÷µéÀÌ ÈÆ·Ã¹ÞÀ» ¼ö ÀÖ´Ù´Â °ÍÀ» ³³µæÇØ¾ß ÇÑ´Ù. ±×·¡¼ °³¹ßÀηÂÀ» È®º¸ÇÒ ¼ö ÀÖ¾î¾ß¸¸ »ê¾÷°è´Â ÀÏÁ¤ÇÑ ÀÏÀ» ÇÒ ¼ö ÀÖ´Ù. C++°¡ ÃʱâÀÇ È¸ÀÇÀûÀÎ ½Ã°¢À» ±Øº¹Çϰí ÁÖ·ù¿¡ Æí½ÂÇÒ ¼ö ÀÖ¾ú´ø °ÍÀº »ç¶÷µéÀ» °¡¸£Ä¡´Â ¹æ¹ýÀ» ±Øº¹Ç߱⠶§¹®À̶ó°í º¼ ¼ö ÀÖ´Ù. ±¸Á¶Àû ÇÁ·Î±×·¡¹Öµµ Ãß»óÈ¿¡´Â ÇѰ谡 ÀÖ¾úÁö¸¸ °¡¸£Ä¡±â´Â ¾î·ÆÁö ¾Ê¾Ò´Ù. À̰ÍÀº Áß¿äÇÑ »ç½ÇÀ̶ó°í »ý°¢ÇÑ´Ù. ¾ð¾î¸¦ ¹è¿ï ¼ö ÀÖ¾î¾ß ÇÁ·Î±×·¡¹ÖÀ» ÇÒ ¼ö ÀÖ´Ù. ±×¸®°í ³Ê¹« ¾î·ÆÁö ¾ÊÀº ÀϵéÀº °£´ÜÇÑ ÇÁ·Î±×·¡¹Ö¾ð¾î·Îµµ ½±°Ô ÇØÄ¡¿ï ¼ö ÀÖ´Ù. ¹®Á¦°¡ ¹ß»ýÇÏ´Â °ÍÀº ³ªÁß¿¡ º¹ÀâÇÑ ÀϵéÀ» ó¸®ÇÏ¸é¼ ÀϾÙ.
¾î¶² »ê¾÷°èÀÌ°Ç °¡¸£Ä¡°í ¹è¿ì´Â ¸ÔÀ̻罽Àº Ç×»ó Á¸ÀçÇÑ´Ù. ÃâÆÇ»ç³ª ±³À°±â°ü ´ëÇб³ °°Àº °÷Àº ¾ðÁ¦³ª ¼ö¿ä°¡ ¸¹Àº °ÍÀ» °¡¸£Ä£´Ù. ÇÊ¿äÇÑ °ÍÀ» °¡¸£Ä£´Ù°í º¼ ¼ö ÀÖ°í ÇÊ¿äÇÑ °ÍÀ» ¹è¿î´Ù°í º¼ ¼ö ÀÖ´Ù. »ç¶÷µéÀÌ ÁÖ·ù°¡ ¾Æ´Ñ °ÍÀ» ¹è¿ö¼ °í»ýÀ» ÀÚóÇÏ°Ú´Ù°í ³ª¼Áö´Â ¾ÊÀ» °ÍÀ̱⠶§¹®ÀÌ´Ù. ±×·¡¼ À¯¸ÁÇØ º¸ÀÌ´Â ¾ð¾îµéÀÌ ¸¹ÀÌ ÀÖÀ½¿¡µµ ºÒ±¸ÇÏ°í ¾ðÁ¦³ª À̵éÀº ´ë±âÀÚ ¸í´Ü¿¡ ¿Ã¶ó°¡ ÀÖ´Ù. »ê¾÷°è¿¡¼ ÇÊ¿äÇϰųª ÇÊ¿äÇÏ´Ù°í ÀÎÁ¤¹Þ´Â ¸®½ºÆ®´Â Àß º¯ÇÏÁö ¾Ê´Â´Ù.
 |
| SICPÀÇ Ç¥Áö |
LISPÀº ±×·± ¸é¿¡¼´Â ½ÇÆÐÇß´Ù°í º¼ ¼ö ÀÖ´Ù. ¾ð¾î ÀÚü°¡ ³Ê¹« ¾î·Æ°í ¹æ´ëÇß´Ù. Ãʱ⿡ °®°í ÀÖ´ø Ä¿´Ù¶õ ÀÚ¿øµµ µµ¿òÀÌ µÇÁö ¾Ê¾Ò´Ù. ¹æ´ëÇß´ø LISPÀ» ±ò²ûÇÏ°Ô °íÃijõÀº ±³À°¿ë ¾ð¾î Scheme ÀÇ »ç¿ëÀÚµµ ¸¹Áö ¾Ê¾Ò´Ù. ÀÌ ¾ð¾î¸¦ ÀÌ¿ëÇÏ¿© ±³À°¿¡ Àû¿ëÇß´ø MITÀÇ SICP(Structure and Interpretation of Computer Programs - ¾ó¸¶ ÈÄ ¹ø¿ªº»ÀÌ ³ª¿Â´Ù°í ÇÑ´Ù.) °úÁ¤Àº ÄÄÇ»ÅÍ ±³À°¿¡ »õ·Î¿î ÀÌÁ¤Ç¥¸¦ ¸¸µé¾î óÀ½ÀÇ ¸î ³â µ¿¾È ´ë´ÜÈ÷ ¼º°øÀûÀ̾ú´Ù. Ã¥Àº Á¤¸» Àß ¸¸µé¾îÁø ±³Àç¿´À¸³ª ¿ª½Ã ¾î·Á¿ü´Ù. ±×·¡¼ ÀÔ¹®°úÁ¤À¸·Î SICP¸¦ ¼±ÅÃÇÏ´Â ´Ù¸¥ Çб³µéÀÇ ±³°ú°úÁ¤Àº Á¡Â÷ ±× ¼ö°¡ ÁÙ¾îµé¾ú´Ù(¾î¼¸é ÀúÀÚµéÀÎ MITÀÇ ÀΰøÁö´É ¿¬±¸¼Ò Ãâ½Å ÇØÄ¿µéÀÇ ÀÌ»óÀÌ ³Ê¹« ³ô¾Ò´ÂÁöµµ ¸ð¸¥´Ù. ±×·¯³ª ºÐ¸íÈ÷ ´ë´ÜÇÑ Ã¥ÀÌ¸ç °íÀüÀÌ´Ù.). ±×·¡¼ Á» ´õ Çö½ÇÀûÀÎ °úÁ¤ÀÎ HTDP(How to Design Programs)·Î ÀÌÇàÇÏ´Â »ç¶÷µéµµ »ý°Ü³µ´Ù. Ã¥ÀÇ ¹Ú·ÂÀº SICPº¸´Ù ´úÇßÀ¸³ª ÀÔ¹®¼·Î¼´Â Àû´çÇÑ ¼öÁØÀÎ °Í¸¸Àº ºÐ¸íÇß´Ù. ´Ù¸¥ LISP Ã¥µé°ú °úÁ¤µéÀÌ ÀÖ¾úÀ¸³ª ¿À·£ ½Ã°£À» Åõ¿©Çصµ ÄÚµùÀ» ÇÏÁö ¸øÇÏ´Â »ç¶÷µéÀÌ »ó´ç¼ö ÀÖ¾ú´Ù°í ÇÑ´Ù. ´ëºÎºÐÀÇ »ç¶÷µéÀº °ýÈ£¿Í RecusionÀ¸·Î ¸¸µé¾îÁø ¾ð¾î¸¦ ±×·¸°Ô ÁÁ¾ÆÇÏÁö ¾Ê¾Ò´Ù.
¹®Á¦´Â ¾î·Á¿ö º¸ÀÌ´Â °ÍÀ» »ç¶÷µéÀÌ ÁÁ¾ÆÇÏÁö´Â ¾Ê´Â´Ù´Â °ÍÀ̾ú´Ù. ¼ö½Ä°ú ±âÈ£¸¦ ¸î °³ ´Ã¾î³õÀ¸¸é »ç¶÷µéÀº ½È¾îÇÏ´Â °æÇâÀÌ ÀÖ´Ù. ±×·±µ¥ LISPÀº ÇÁ·Î±×·¥ ±× ÀÚü°¡ ½Ä(expression)ÀÌ´Ù. ÀåÁ¡À̱⵵ÇÏ°í ´ÜÁ¡À̱⵵ Çß´Ù. ±ò²ûÇÑ ¶÷´ÙÇÔ¼ö Ç¥Çö½ÄÀ» »ç¿ëÇÑ ½ºÅ´µµ ÁÁ¾ÆÇÏÁö ¾Ê¾Ò´Ù.
±× ´ë½Å »ç¶÷µéÀÌ ¼±ÅÃÇÑ °ÍÀº ¾î¼Àºí·¯¸¦ ±ò²ûÇÏ°Ô ¿Å°Ü ³õÀº °Í °°Àº C¿Í °°Àº ¾ð¾î¿´´Ù. ÇÁ·Î±×·¥ ¼öÁØÀÌ Áõ°¡Çϸé Ç¥Çö·ÂÀÌ Å©°Ô Áõ°¡ÇÒ °ÍÀ̶óµç°¡ »ý»ê¼ºÀÌ Áõ°¡ÇÒÁöµµ ¸ð¸¥´Ù¿Í °°Àº ¾Ö¸ÅÇÑ ¸»µéÀº ÅëÇÏÁö ¾Ê¾Ò´Ù. ÀΰøÁö´ÉÀÇ ¿¬±¸¿¡ »ç¿ëµÉ Á¤µµ·Î º¹ÀâÇÑ °ÍÀ» Ç¥ÇöÇÒ ¼ö ÀÖ´Ù´Â ¼³µæµµ ¸ÔÇôµéÁö ¾Ê¾Ò´Ù. Ç÷οìÂ÷Æ®·Î ¸¸µé¾îÁø ¾Ë°í¸®ÁòÀ» ÄÚµå·Î ¿Å±â´Â µ¥´Â Ç¥Çö·ÂÀÌ ±×´ÙÁö Áß¿äÇÏÁö ¾Ê´Ù.
ÄÄÇ»ÅÍ ¹Ú½º¾ÈÀÇ ¼¼°è¿Í ¹Ú½º ¹ÛÀÇ ¼¼°è
±×·¯³ª Á¤¸»·Î ÇÁ·Î±×·¥ÀÌ º¹ÀâÇØÁö¸é Ç¥ÇöÀÇ ´É·Â¿¡´Â ÇѰ谡 ÀÖ´Ù. º¹ÀâÇÑ »óȲÀ» °£´ÜÇÏ°Ô ¸¸µå´Â ¹æ¹ýÀº ¾øÀ¸³ª °£´ÜÇÏ°Ô Ç¥ÇöÇÏ´Â ¹æ¹ýÀº ÀÖÀ»Áö ¸ð¸¥´Ù. º¹ÀâÇÑ °ÍÀ» °£´ÜÇÏ°Ô ¿ä¾àÇÏ´Â Ãß»óȳª °èÃþÀ¸·Î ¿ä¾àÇÏ´Â °èÃþȸ¦ °¡´ÉÇÏ°Ô ÇÏ´Â ¹æ¹ý·ÐµéÀÌ ³ª¿Í ÀÖ°í °´Ã¼ÁöÇâÀÇ ¹æ¹ýµµ ±× ÁßÀÇ Çϳª´Ù. ºÐ¸íÈ÷ ¹æ¹ý·ÐÁßÀÇ Çϳª¶ó´Â °ÍÀ» Àß ¾ËÁö¸¸ Ãß»óÈ¿Í °èÃþÀº °´Ã¼ÁöÇâÀÇ ¹æ¹ý·ÐÀ¸·Î ó¸®Çϰí ÀÖ´Ù. °´Ã¼´Â »ó¼Óµµ °¡´ÉÇÏ´Ù. ±×·¡¼ °´Ã¼ÁöÇâÀÌ ³ª»Û ¹æ¹ýµµ ¾Æ´Ï´Ù.
ÄÄÇ»ÅͰ¡ Àû´Ù¸é °´Ã¼ÁöÇâÀÌ°Ç °´Ã¼ÁöÇâÀÌ ¾Æ´Ï°Ç Áß¿äÇÑ ÀÏÀÌ ¾Æ´Ò ¼öµµ ÀÖ´Ù. ±×·¯³ª ÄÄÇ»ÅͰ¡ ¼¼»óÀ» µ¤°í ÀÖ´Â ¼¼»ó¿¡¼´Â ±×·¸Áö°¡ ¾Ê´Ù. ¾î¼¸é Çö½Çº¸´Ù Çö½ÇÀ» ½Ã¹Ä·¹ÀÌÆ®ÇÏ´Â ÄÄÇ»ÅÍÀÇ ¼¼°è°¡ ´õ º¹ÀâÇØÁø °ÍÀÌ´Ù. ±âÈ£ÀÇ ¼¼°è°¡ Çö½ÇÀ» µÚµ¤´Â´Ù. ÀÌ»óÇÑ ÇüÅÂÀ̱ä ÇÏÁö¸¸ ¸ÅÆ®¸¯½º ¿µÈ¿¡¼ ÀÌ¹Ì ±× ÀüÁ¶°¡ º¸¿´´Ù. ±× ÀÌÀüºÎÅÍ º¸¿´´ø °ÍÀÎÁöµµ ¸ð¸¥´Ù. öÇÐÀÚ º¸µé¸®¾ß¸£°¡ ¸»ÇÏ´ø ¡°½Ã¹Ä¶óÅ©¿Í ½Ã¹Ä¶ó½Ã¿Ë¡±¶ó´Â °³³äÀÌ ¿µÈ ¸ÅÆ®¸¯½º¿¡ µé¾î°¡ ÀÖ´Ù(½ÇÁ¦·Î Á¦ÀÛÀÚ ¿ö¼î½ºÅ° ÇüÁ¦´Â ¹è¿ìµé¿¡°Ô ÀÌ Ã¥À» ÀÐÀ¸¶ó°í ÁÖ¹®Çß´Ù.). Ã¥¿¡´Â ¾ÆÁÖ Á¤¹ÐÇÑ Áöµµ°¡ ³ª¿Â´Ù. ±¹°æ(½ÇÁ¦ÀÇ ÁöÇü¿¡´Â ¾ø´Ù)°ú ¿Â°® ÀÚÀßÇÑ Á¤º¸°¡ Áöµµ¾È¿¡ µé¾î°¡°í °á±¹ Áöµµ´Â ½ÇÁ¦ÀÇ ¶¥º¸´Ù Áß¿äÇØÁø´Ù. ±âÈ£ÀÇ ¿Õ±¹ÀÌ Åº»ýÇÏ´Â °ÍÀε¥ Á¡Â÷ ¼Óµµ°¡ »¡¶óÁö°í °·ÂÇØÁö´Â ÄÄÇ»ÅͰ¡ ±âÈ£¸¦ ÀúÀåÇÏ°í º¸¿©ÁØ´Ù. ±âÈ£ÀÇ Ã³¸®µµ ÇÑ´Ù. ¼Óµµ°¡ ¹Ì´öÀ̱⵵ ÇÏÁö¸¸ ¾Æ¹«¸® »¡¶óÁø´Ù°í º¹ÀâÇÑ °ÍÀ» ÁÙ¿©ÁÖ´Â ¸¶¼úÀ» ºÎ·ÁÁÖÁö´Â ¾Ê´Â´Ù. ±×·±µ¥ ³Ê¹« º¹ÀâÇØÁö¸é °£´ÜÇÏ°Ô ¸¸µé¾î¾ß ÇÑ´Ù.
¾î´À ³¯ ¼±ÅÃÇÑ °´Ã¼ÁöÇâÀÇ ÄÄÇ»ÅÍ ¼¼°è¿¡¼ ¼¼»óÀº °´Ã¼µé·Î ±¸¼ºµÇ¾î ÀÖÀ½¿¡ Ʋ¸²¾ø´Ù. ¼¼»óÀº °´Ã¼ÀÌ´Ù. ºÐ¸íÈ÷ ÇÁ·Î±×·¥µéÀÌ Ãß»óÈÇÏ´Â °ÍÀÌ °´Ã¼À̱⠶§¹®ÀÌ´Ù. ¼¼»óÀ» ÄÄÇ»Å͵éÀÌ µÚµ¤°í ÀÖÀ¸¸ç °´Ã¼ÁöÇâÀÌ Àý´ëÀûÀÌ´Ï ¼¼»óÀº °´Ã¼ÀÓ¿¡ Ʋ¸²¾ø´Ù. ¸¸¾à ¼ø¼öÇÑ °´Ã¼·Îµµ ¾È µÇ´Â ÀÏÀÌ ÀÖ´Ù¸é ÇÁ·Î±×·¡¸ÓµéÀÇ ÄÚµù¹æ¹ýÀ» °´Ã¼¿¡ ¸ÂÃß¾îÁÖ´Â ¡®ÆÐÅÏ¡¯µµ ÀÖ´Ù. ÆÐÅÏÀÌ ³ª¿Ã Á¤µµ°¡ µÇ¸é °´Ã¼ÁöÇâÀÇ ¹æ¹ý·Ðµµ ÀÌ¹Ì ½¬¿î °ÍÀÌ ¾Æ´Ï´Ù. ÇÏÁö¸¸ ¼¼»óÀº ÀÌ¹Ì °´Ã¼ÁöÇâÀ¸·Î ÁøÇàµÇ¾ú±â ¶§¹®¿¡ ÇÁ·Î±×·¡¸ÓµéÀº ±â²¨ÀÌ ÆÐÅÏ¿¡ ´ëÇØ °øºÎÇÑ´Ù. °´Ã¼ÁöÇâÀ» ºñ³ÇÏÁöµµ ¾Ê´Â´Ù. ±×µ¿¾È ÅõÀÚÇÑ °ÍÀÌ ³Ê¹«³ª ¸¹±â ¶§¹®ÀÌ´Ù.
º°´Ù¸¥ ¹®Á¦°¡ ¾ø´Ù¸é ¼¼»óÀº ÄÄÇ»ÅÍ ¹Ú½º¾ÈÀÇ °´Ã¼¿¡ ÀÇÇØ Ç¥ÇöµÇ°í µ¹¾Æ°¥ °ÍÀÌ´Ù. ¡®½Ã¹Ä¶ó½Ã¿Ë¡¯¿¡¼ Áöµµ°¡ ¿µÅ並 ´ë½ÅÇÏ´Â °Íó·³. °´Ã¼ÁöÇâÀÇ Àü¼º±â°¡ ´ÙÇÏ´Â ±×³¯±îÁö ¼¼»óÀº °´Ã¼ÀÇ ±¸ÇöÀÌ´Ù. °´Ã¼ÁöÇâ¿¡ ´ëÇÑ Ã¥µéÀº °è¼Ó ³ª¿Ã °ÍÀ̸ç, °´Ã¼ÁöÇâÀ» ¼¼·ÃµÈ ¸ð½ÀÀ¸·Î Ç¥ÇöÇÏ´Â ¹æ¹ý·Ðµµ °è¼Ó ³ª¿Ã °ÍÀÌ´Ù.
¾î¶² °´Ã¼´Â ´Ù¸¥ °´Ã¼¸¦ »ó¼Ó¹Þ¾Æ ¸¸µé¾îÁø ´ÙÇü¼ºÀÇ ¸ð½ÀÀ» ¶ì¸ç ÀÌ °´Ã¼´Â ´Ù¸¥ °´Ã¼¿Í ÀÌ·¯Àú·¯ÇÑ ¹æ¹ýÀ¸·Î Åë½ÅÇÏ´Â ¹æ¹ýÀ» °®°Ô µÉ °ÍÀ̰í ÀÌ ¹æ¹ý¿¡ ¹®Á¦°¡ ÀÖ´Ù¸é ¿¹¿ÜÀÇ ±ÔÁ¤À» ÅëÇÏ¿© ó¸®ÇÑ´Ù. ½ÇÁ¦ÀÇ ¼¼°è¿Í °¡»óÀÇ ¼¼°è´Â ´Ù¸£Áö¸¸ °¡»ó¼¼°èÀÇ ºñÆ®°¡ ÀÌ¹Ì ¼¼»óÀ» Áö¹èÇϰí ÀÖ´Ù. ¹®Á¦´Â ÀÌ ºñÆ®¸¦ Áö¹èÇÏ´Â ¹æ¹ýÀÌ º¹ÀâÇØÁö±â ½ÃÀÛÇÑ´Ù´Â °ÍÀÌ´Ù.
¼¼¿ùÀÌ Áö³ª¸é¼ °´Ã¼°¡ ½ÇÁ¦¿Í °¡»ó¼¼°è¸¦ Àß ¹Ý¿µÇÏÁö ¸øÇÏÀÚ 20³â °¡±îÀÌ Áö³ ´Ù¸¥ ÇÁ·ÎÅäÄÝÀ» ²ôÁý¾î³»±â ½ÃÀÛÇß´Ù. ¿äÁò À¯ÇàÇϱ⠽ÃÀÛÇÏ´Â aspect-oriented programming (AOP)¿Í aspect-oriented software development(AOSD)°°Àº °ÍµéÀÌ OOP¸¦ º¸¿ÏÇϱâ À§ÇØ µîÀåÇß´Ù. AOP¿¡¼ Ű¿öµå´Â ¡®°ü½ÉÀÇ ºÐ¸®(Separation of Concerns)¡¯ÀÌ´Ù. ÇÁ·Î½ÃÀú³ª ¸ðµâÀº ¼·Î ÀÎÅÍÆäÀ̽º°¡ ±³Â÷ÇÏ´Â °ü½É ¿µ¿ª¿¡¼´Â ºÐ¸®µÇ¾î¾ß Çß´Ù. AOP´Â ±âÁ¸ÀÇ OOP¸¦ Àû¿ëÇÑ´Ù°í ÇØµµ ºÐ¸®Çϱ⠾î·Á¿î ¹®Á¦ÀÇ ÇØ°áÃ¥À» µé°í ³ª¿Ô´Ù. °ü½ÉÀÇ ±³Â÷°¡ ¸¸³ª´Â ¿µ¿ªÀ» ¾ð¾î¼öÁØ¿¡¼ Áö¿øÇϰí Á¤ÀÇÇÑ´Ù. ¹®Á¦´Â °£´ÜÇÏ°Ô Ç®¸± ¼öµµ ÀÖÁö¸¸ »ç¶÷µéÀÇ ¸Ó¸´¼ÓÀº º¹ÀâÇØÁø´Ù. AOP°¡ ³ª¿ÀÀÚ AOP¿¡ ´ëÇØ ¹Ý´ëÇÏ´Â Áß¿ä °³¹ßÀڵ鵵 ³ª¿Ô´Ù. ±×·¯³ª AOP¸¦ Áö¿øÇÏ´Â AspectJ¿Í °°Àº µµ±¸µéÀº ÀÌ¹Ì ¹ßÇ¥°¡ µÇ¾îÀÖ°í IBMÀº AOP¸¦ óÀ½ºÎÅÍ Áö¿øÇß´Ù. AOP»Ó¸¸ ¾Æ´Ï¶ó À̸§µµ Àß ¸ð¸£´Â °³¹ß öÇÐÀÇ ¹Ìµé¿þ¾î³ª °³¹ß ÇÁ·¹ÀÓ¿öÅ©´Â »ê´õ¹Ìó·³ ½×¿©ÀÖ´Ù(ÀÌ·± Ãß¼¼¸¦ ´Ù µû¶ó°¡¾ß ÇÑ´Ù°í »ý°¢ÇÏ¸é ³Ê¹« ÁøÁöÇÑ °ÍÀÎÁöµµ ¸ð¸¥´Ù. »ç½Ç Ãß»óÈ ¹æ¹ýÀÇ ÇϳªÀÎ °´Ã¼¿¡ ³Ê¹« ¸¹Àº °ÍÀ» ¿ä±¸Çϰí ÀÖ´Â °ÍÀÎÁöµµ ¸ð¸£°í ¼³°è°¡ ³Ê¹« º¹ÀâÇÑ °ÍÀÎÁöµµ ¸ð¸£¸ç ¹®Á¦°¡ µÇ´Â Äڵ带 ºÎºÐÀûÀ¸·Î ¼ÕÀ¸·Î ¾²´Â °Í°ú Å« Â÷À̰¡ ¾øÀ»Áöµµ ¸ð¸¥´Ù. ¾Æ´Ï¸é ÇÁ·Î±×·¡¸ÓµéÀÇ µð¹ö±ë °øÆ÷ÁõÀÌ ³Ê¹« ½ÉÇØÁø °ÍÀÏÁöµµ ¸ð¸¥´Ù.).
´ç¿¬È÷ ÇÁ·Î±×·¡¹Ö¿¡ ´ëÇÑ ¿ä±¸´Â ¸¹¾ÆÁú °ÍÀÌ´Ù. ¾ÆÁ÷Àº ¾Æ´ÏÁö¸¸ ¸¸¾à AOP°¡ ´ë¼¼°¡ µÇ¸é ÇÁ·Î±×·¡¸ÓµéÀº ¶Ç AOP°°ÀÌ º¸ÀÌ´Â ÇÁ·Î±×·¥À» Â¥¾ßÇÒ °ÍÀÌ´Ù. ÀÌ·± ÀÏÀÌ ¾ðÁ¦±îÁö °è¼ÓµÉÁö´Â ¾Æ¹«µµ ¸ð¸£¸ç OOP°¡ ¾îµð±îÁö º¹ÀâÇØÁú Áö´Â ¾Æ¹«µµ ¸ð¸¥´Ù. ¸¶Âù°¡Áö·Î À̵éÀ» ±¸ÇöÇÏ´Â ¾ð¾îµµ º¹ÀâÇØÁ® °£´Ù. ±×·¸´Ù°í ¿¬±¸ÇÏ´Â »ç¶÷µéÀÌ ÀÌ·± ¹®Á¦¸¦ ¸ð¸£°í ÀÖ¾ú´Â°¡ ÇÏ¸é ±×°Íµµ ¾Æ´Ï´Ù. Metaobject ÇÁ·Î±×·¡¹ÖÀÌ ¹ßÇ¥µÈ Áö´Â ÀÌ¹Ì ¿À·¡ÀüÀÌ´Ù(AOPÀÇ Gregor Kiczales´Â 1991³â ÃâÆÇµÈ The Art of the Metaobject Protocol ÀÇ ÀúÀÚÀ̱⵵ Çϸç LISPÀÇ OOP´Â ÀÌ Ã¥À» ±âÃÊ·Î ¸¸µé¾îÁø °ÍÀÌ´Ù. CLOS ¶ó°í ÇÏ´Â LISPÀÇ OOP´Â »ó´çÈ÷ À¯¿¬Çϰí AOP·Î ÀÌÇàÇϴµ¥ ¾î·Á¿òÀÌ ¾ø¾ú´Ù.). ¾ðÁ¨°¡´Â ¸ðµâµéÀÌ ¸¹Àº Á¢ÇÕÁ¡À» ¸¸µé°í ½ÇÁ¦ÀÇ ±â°è³ª ¹°°Çó·³ ¿òÁ÷¿©¾ß ÇÒ °ÍÀ̶ó´Â °Íµµ ¿¹ÀüºÎÅÍ ¾Ë°í ÀÖ¾ú´Ù. À̵鿡 ´ëÇÑ Äڵ带 ÀÚµ¿ÀûÀÌ°Ç ¹ÝÀÚµ¿ÀûÀ롂 ¸¸µé¾î ³»¾ß ÇÑ´Ù´Â °Íµµ ¾î·ÅDzÀÌ ¾Ë°í ÀÖ¾ú´Ù. ¸íÈ®È÷ ±Û°ú ±×¸²À¸·Î ¿Å±â±â¿¡´Â Á¶±Ý °æÇèÀÇ °î¼±ÀÌ ºÎÁ·ÇßÀ» »ÓÀÌ´Ù. ´õ º¹ÀâÇÑ ¡®½Ã¹Ä¶ó½Ã¿Ë°ú ½Ã¹Ä¶óÅ©¸£¡¯¸¦ ¸¸µå´Â Á¶¹°ÁÖ°ÔÀÓÀº ÄÄÇ»ÅÍ ¹Ú½º ¾È¿¡¼ °è¼ÓµÉ °ÍÀÌ Æ²¸²¾ø´Ù.
±×·±µ¥ OOPÀÇ ¿øÁ¡À¸·Î µ¹¾Æ°¡¼ »ìÆìº¸¸é OOPÀÇ Ãâ¹ßÀº º¹ÀâÇÑ °ÍÀÌ ¾Æ´Ï¾ú´Ù. ¾î¼´Ùº¸´Ï ¼¼»ó¸¸ÅÀ̳ª º¹ÀâÇØÁ³´Ù. OOPÀÇ ½ÃÀÛÀÎ smalltalk ³ª simulaÀÇ ÀÌ»óÀº Á¶¿ëÇÑ °ÍÀ̾ú´Ù.
ÀÌÅä·Ï º¹ÀâÇÑ °´Ã¼µéÀÌ ¸¸µé¾î³»´Â ¼¼»óÀº ´õ º¹ÀâÇØÁúÁöµµ ¸ð¸¥´Ù. °´Ã¼°¡ º¹ÀâÇØÁö°í °´Ã¼µéÀ» ´Ù·ç´Â ¹æ¹ý·Ðµµ ´õ º¹ÀâÇØÁö´Â °ÍÀº »ç½ÇÀÌ´Ù(±×¸®°í º¹À⼺À» ´Ù½º¸®±â À§ÇÑ ¹æ¹ý·Ð ±× ÀÚüµµ º¹À⼺À» ´Ù½º¸®±â À§ÇØ ¸¸µé¾îÁø Á¢±Ù¹ýµéÀÌ´Ù. ¸ÞŸ¹æ¹ý·ÐÀÇ ¸ÞŸ´Ù).
ÀÌ·¸°Ô º¹ÀâÇÏ°Ô µ¹¾Æ°¥ ÁÙ ¹Ì¸® ¾Ë¾Ò´õ¶ó¸é LISP À̳ª ´Ù¸¥ µµ±¸µéÀ» äÅÃÇÏÁö ¸»¶ó´Â ¹ýµµ ¾ø¾ú°ÚÁö¸¸ Áöµµ´Â ÀÌ¹Ì ¿¹Àü¿¡ ±×·ÁÁ³´Ù. °³¹ß ¾ð¾î¿Í ȯ°æÀ» °ø±ÞÇÏ´Â ±âÁ¸ÀÇ ´ë±â¾÷ü °¡¿îµ¥ ÁÖµµ±ÇÀ» ³õÀ¸·Á´Â ÆÀÀº ¾îµð¿¡µµ ¾ø´Ù. »ç½Ç º¹ÀâÇÑ °ÍÀ» ´Ù½º¸®´Â ÁÁÀº ¹æ¹ýÀ¸·Î´Â PROLOGµµ ÀÖ¾ú´Ù. PROLOG´Â ¼±¾ðÇü(declarative form) Ãß·Ð ¿£ÁøÀ» »ç¿ëÇÏ¿© rule-baseÀÇ ÇÁ·Î±×·¡¹ÖÀ» ÇÑ´Ù. ÇÁ·Ñ·Î±×°¡ ´õ ¹ßÀüµÇ¾î ÀÖ¾ú´Ù¸é ÇÁ·Î±×·¥ ¶óÀÎ Áß¿¡ ¡°¾î´À °÷¿¡¼´Â °ü½É(Concern)ÀÌ ÀÖ¾î¾ß ÇÑ´Ù.¡±¶ó°í ¼±¾ðÀ» Çϸé ÇÁ·Î±×·¥Àº ±×·¸°Ô ¿òÁ÷ÀÏ Áöµµ ¸ð¸¦ ÀÏÀÌ´Ù.
³í¸® ÇÁ·Î±×·¡¹ÖÀÇ ¿ì¾ÆÇÑ Ç¥±â¹æ¹ýÀÓ¿¡µµ ºÒ±¸Çϰí PROLOG¸¦ ¹è¿ì±â´Â ½±Áö ¾Ê¾Ò´Ù. 1970³â´ë ¸»°ú 1980³â´ë À¯·´°ú Á¦5¼¼´ë ÄÄÇ»Å͸¦ Ç¥¹æÇÏ´ø ÀϺ»ÀÇ °³¹ßÀÚµéÀº 1990³â´ë ÃÊ¿¡ °³¹ßÀ» ¸ØÃß°í ¾ß½Éá´ø ÇÁ·ÎÁ§Æ®´Â Ä¿´Ù¶õ ¼º°ú°¡ ¾øÀÌ ³¡³µ´Ù. °³¹ßÀÚµéÀÌ ¸ÛûÇß´ø °Íµµ ¾Æ´ÏÁö¸¸ ÀÌ ÁÁÀº ¹æ¹ý·Ðµµ ¼Ò¼öÀÇ »ç¿ëÀÚ¸¦ °®´Â ¿¬±¸¿ë ¾ð¾î·Î Á¶¿ëÈ÷ ³²¾ÆÀÖ°Ô µÈ °ÍÀÌ´Ù. °ü·ÃÀÌ ÀÖ´ø ¸¹Àº AI ÇÁ·ÎÁ§Æ®µéµµ µ¿¸é»óÅ·Πµé¾î°¬´Ù.
±×·¯³ª ¾î´À ³¯ ¿À´Ã³¯ÀÇ ÆÐ·¯´ÙÀÓ¿¡ ½ÈÁõÀÌ ³ª¸é LISPó·³ ¿òÁ÷ÀÌ´Â Á¦¾î¸ðµâ(±×¶§´Â °´Ã¼°¡ ¸®½ºÆ® »çÀ̸¦ ¹Ù»Ú°Ô ´©ºñ°í ´Ù´ÒÁö ¸ð¸¥´Ù. Paul GrahamÀº Java³ª ´Ù¸¥ ¾ð¾î¿¡¼ Ç¥Çö·ÂÀ» ³ôÀÌ´Â À¯ÀÏÇÑ ¹æ¹ýÀÌ LISPÀÇ Æò°¡±â(evaluator)¸¦ ±¸ÇöÇÏ´Â °ÍÀ̶ó°í ÁÖÀåÀ» ÇÒ Á¤µµ´Ï±î.)À̳ª PrologÀÇ Ã߷п£ÁøÀ» žÀçÇÏ´Â Á¦¾î¸ðµâÀ» Java·Î ±¸ÇöÇÏ´Â ÀÏÀÌ À¯ÇàÇÒÁöµµ ¸ð¸¥´Ù.
°á±¹
°ú°Å³ª Áö±ÝÀ̳ª ³ª¸§´ë·Î º¹ÀâÇÑ ¹®Á¦¸¦ Ç®¾î¾ß ÇÑ´Ù´Â °úÁ¦´Â º¯ÇÔÀÌ ¾ø´Ù. ¹®Á¦´Â º¹ÀâÇÑ ¹®Á¦¸¦ Á¤ÀÇÇϰí Ǫ´Â ºñ¿ëÀÌ ¾î´À Á¤µµÀΰ¡°¡ ¹®Á¦´Ù. µµ±¸ÀÇ ¹®Á¦À̱⵵ ÇÏ´Ù. ¾ð¾î³ª ¶óÀ̺귯¸®´Â ¶§·Î µµ±¸ÀÇ ¼öÁØÀ» ³Ñ¾î ½Å³ä°ú Á¾±³¿Í °°À» ¶§°¡ ÀÖ´Ù°í Çϴµ¥ ¾Æ¸¶ »ç½ÇÀÏ °ÍÀÌ´Ù. Á¢±Ù·ÐÀ̳ª °³¹ßÀÇ ¹æ¹ý·Ðµµ ´Þ¶óÁú ¼ö¹Û¿¡ ¾ø´Ù. ±×·¸´Ù¸é ´Ù¸¥ ¼¼»óÀÌ´Ù. °³¹ß¿¡ ÀÖ¾î¼ ±âÁ¸ÀÇ ÅøÀ» ´õ °³·®ÇÏ´Â ¹æ¹ýµµ ÀÖÀ» °ÍÀ̰í(À̰ÍÀº »õ·Î ³ª¿À´Â ¹æ¹ý·Ð¿¡ °ü½ÉÀ» °®°í »ìÆìº¸´Â °ÍÀ¸·Î) µ¶ÀÚÀûÀÌ°í »õ·Î¿î ¹æ¹ýÀ» ã¾Æº¸´Â ¹æ¹ýµµ ÀÖÀ» °ÍÀ̸ç(ÀÚ½ÅÀÌ ÇÊ¿äÇÑ ºÐ¾ß¿¡¼ ¿Â°® ¹æ¹ýÀ» µ¿¿øÇÏ¿© ã¾Æº¸´Â °Í) °ú°Å¿¡ ³ª¿Â ¹æ¹ý·ÐÀÇ À¯ÀüÀÚ¸¦ ÀçȰ¿ëÇÏ´Â ¹æ¹ýµµ ÀÖ´Ù. ¶§·Î´Â ±× ¹æ¹ýÀÌ Àڽſ¡°Ô ´õ ¸Â´Â °ÍÀ̶óµç°¡ ±× ¿¹ÀüÀÇ ¹æ¹ý·Ð¿¡¼ »ç¿ë°¡´ÉÇÑ À¯ÀüÀÚ¸¦ ¹ß°ßÇÒ ¼öµµ ÀÖ´Ù. °ú°Å¿¡´Â ¸Þ¸ð¸®³ª ¼º´ÉÀÇ Á¦ÇÑ ¶§¹®¿¡ »çÀåµÇ°Å³ª ½Ç¿ë¼ºÀ» ÀÒ¾î¹ö¸° ±¸Çöµéµµ ²Ï ¸¹´Ù. ´ç½Ã¿¡´Â ÄÄÇ»ÅͰ¡ ÇÒ ¼ö ÀÖ´Â °Í¿¡ ´ëÇØ ³«°ü·ÐÀÌ Áö¹èÇÏ´ø ½Ã´ë¿´´Ù. 70³â´ëÀÇ ·ÎÁ÷ ÇÁ·Î±×·¡¹ÖÀÇ ¼öÁØÀÌ ±×·¸°Ô À¯Ä¡Çß´ø °Íµµ ¾Æ´Ï´Ù.
¸¸¾à ³Ê¹« ÁøÁöÇØº¸ÀÌÁö ¾Ê´Â´Ù¸é Ãë¹Ì»ï¾Æ¼¶óµµ °ú°ÅÀÇ ±â¼úÀûÀÎ À¯ÀüÀÚµéÀ» »ìÆì º¼ Çʿ䰡 ÀÖ´Ù. ³ë·¡³ª ¿Êµéµµ º¹°ídzÀ¸·Î µÇ»ì¾Æ ³ª±âµµÇÑ´Ù. ÇѶ§ Æø¹ßÀûÀÎ ¿¡³ÊÁö¸¦ °®°í ź»ýÇÑ ¹®È ¼Ó¿¡¼ Á¸ÀçÇÒ ¸¸ÇÑ ÀÌÀ¯°¡ ÀÖ´ø °¨¼ºÀÇ µðÀÚÀεéÀÌ ¿äÁòÀÇ Àç·á¿Í ÅÍÄ¡·Î Àçź»ýÇÑ´Ù. ºñ½ÁÇÑ ÀÌÀ¯·Î Àڽſ¡°Ô ¸Â´Â Á¸Àç ÀÌÀ¯¸¦ °®´Â µðÀÚÀΠöÇеé°ú ¸Â´Ú¶ß¸± ¼öµµ ÀÖÀ»Áöµµ ¸ð¸¥´Ù. °ú°Å¿¡ ¸¸µé¾îÁø Áß¿äÇÑ ¹®ÈÀ¯ÀüÀÚµéÀ» ½±°Ô ¹ö¸± ÀÌÀ¯´Â ¾ø´Ù. ²Ä²ÄÈ÷ »ìÆìº¼ Çʿ䰡 ÀÖ´Â °ÍÀÌ´Ù.@