· KLDP.org · KLDP.net · KLDP Wiki · KLDP BBS ·
Succinctness Is Power

Succinctness is Power

°£°áÇÔÀÌ ÈûÀÌ´Ù


¹ø¿ª ó·Î

Copyright © 2002 Paul Graham

"¼öÇÐ ±âÈ£µé¿¡ ÀÇÇØ ¸¹Àº ³»¿ëÀÌ Á¼Àº °ø°£¿¡ ¾ÐÃàµÊÀ¸·Î½á ¿ì¸®°¡ Àͼ÷ÇÏ°Ô ÇàÇÏ´Â Ãß·ÐÀÌ ´õ¿í ¼Õ½±°Ô ÀÌ·ïÁú ¼ö ÀÖ´Ù."

- Âû½º ¹èºñÁö(Charles Babbage), ¾ÆÀ̹ö½¼(Iverson)ÀÇ Æ©¸µ»ó(A. M. Turing Award) ¼ö»ó ±â³ä °­¿¬¿¡¼­ Àοë.

¿ªÀÚ ÁÖ: Âû½º ¹èºñÁö´Â 1834³â ÀúÀå, ó¸®, Á¦¾î, ÀÔ·Â, Ãâ·Â µîÀÇ ÄÄÇ»ÅÍÀÇ ±âº» °³³äÀ» ´ã°í ÀÖ´Â Çؼ® ±â°è(Analytical Engine)¸¦ ¼³°èÇß´Ù. (´ç½Ã ±â¼úÀÇ ÇÑ°è·Î ½ÇÁ¦·Î ¸¸µéÁö´Â ¸øÇß´Ù.) Æ©¸µ»óÀº 1947³â ¼³¸³µÈ ÃÖÃÊÀÇ Àü»ê ºÐ¾ß ÇÐȸÀÎ ÀüÀÚ°è»ê±âÇùȸ(ACM: Association for Computing Machinery)¿¡¼­ ¼ö¿©ÇÏ´Â »ó. ¾ÆÀ̹ö½¼(Kenneth E. Iverson)Àº APL(A Programming Language) ¾ð¾î¸¦ ¸¸µç °ø·Î·Î 1979³â¿¡ Æ©¸µ»óÀ» ¹Þ¾Ò´Ù.

³»°¡ ¾´ '»÷´ÔµéÀÇ º¹¼ö(Revenge of the Nerds)'¶ó´Â ±ÛÀÌ Á¦±âÇÑ ³íÁ¡µé¿¡ ´ëÇØ LL1 ¸ÞÀϸµ¸®½ºÆ®¿¡¼­ ÁøÇàµÈ Åä·Ð¿¡¼­ Æú ÇÁ·¹½ºÄ¿µå(Paul Prescod)´Â ³» »ý°¢À» ºÙµç ´ÙÀ½°ú °°Àº ¸»À» Çß´Ù. ¿ªÀÚ ÁÖ: LL1 ¸ÞÀϸµ¸®½ºÆ®´Â MITÀÇ ÀΰøÁö´É½ÇÇè½Ç(AI Lab)¿¡¼­ 2001³â Á¦1ȸ °æ·® ¾ð¾î(Lightweight Language) ¿öÅ©¼óÀ» °³ÃÖÇϸ鼭 °³¼³ÇÑ ¸ÞÀϸµ¸®½ºÆ®ÀÌ´Ù. ÀÌ ¿öÅ©¼ó ÀÌÈÄ¿¡µµ ÆÞ(Perl), ÆÄÀ̽ã(Python), ·çºñ(Ruby) µî »õ·Î¿î ¾ð¾î¿¡ ´ëÇÑ Åä·ÐÀÌ °è¼ÓµÇ°í ÀÖ´Ù.

ÆÄÀ̽ãÀÇ ¸ñÇ¥´Â ±ÔÄ¢¼º(regularity)°ú °¡µ¶¼º(readability)ÀÌÁö, °£°áÇÔ(succinctness)ÀÌ ¾Æ´Õ´Ï´Ù.

°ÑÀ¸·Î¸¸ º¼ ¶§ ÀÌ ¸»Àº ÇÁ·Î±×·¡¹Ö ¾ð¾î¿¡ ´ëÇÑ ÁÖÀå Ä¡°í´Â Âü ÇüÆí¾ø°Ô ´À²¸Áø´Ù. ³»°¡ ºÐ°£ÇÒ ¼ö ÀÖ´Â ÇÑ '°£°áÇÔ = Èû'ÀÌ´Ù. ±×·¸´Ù¸é À§ÀÇ ¸»Àº ÀÌ·¸°Ô ´ëüÇÒ ¼ö ÀÖ´Ù.

ÆÄÀ̽ãÀÇ ¸ñÇ¥´Â ±ÔÄ¢¼º°ú °¡µ¶¼ºÀÌÁö, Èû(power)ÀÌ ¾Æ´Õ´Ï´Ù.

±×¸®°í ÀÌ°ÍÀº Á¦´ë·Î ±ÕÇüÀ» ¸ÂÃá °Í(tradeoff)ó·³ º¸ÀÌÁö ¾Ê´Â´Ù. (±×°ÍÀÌ Á¤¸»·Î ±ÕÇüÀ» ¸ÂÃá °ÍÀ̶ó¸é ¸»ÀÌ´Ù.) ÀÌ°ÍÀº ÆÄÀ̽ãÀÇ ¸ñÇ¥°¡ ÇÁ·Î±×·¡¹Ö ¾ð¾î·Î¼­ È¿°úÀûÀÌ°Ô µÇ´Â °ÍÀÌ ¾Æ´Ï¶ó°í ÇÏ´Â °Í°ú Å©°Ô ´Ù¸£Áö ¾Ê´Ù.

Á¤¸»·Î '°£°áÇÔ = Èû'Àΰ¡? ÀÌ°ÍÀº ³ª¿¡°Ôµµ Áß¿äÇÑ Áú¹®À̸鼭, ¾Æ¸¶µµ ¾ð¾î ¼³°è¿¡ °ü½É ÀÖ´Â »ç¶÷µé¿¡°Ô´Â °¡Àå Áß¿äÇÑ Áú¹®ÀÏ °ÍÀ̹ǷÎ, Á÷Á¢ ¸ÂºÎµúÃÄ º¸´Â °ÍÀÌ À¯ÀÍÇÒ °ÍÀÌ´Ù. °£´ÜÇÏ°Ô ±×·¸´Ù°í ´äÇÒ ¼ö ÀÖÀ»Áö ¾ÆÁ÷Àº È®½ÇÇÏÁö ¾ÊÁö¸¸, Ãâ¹ßÁ¡À¸·Î¼­´Â ±¦ÂúÀº °¡¼³·Î º¸ÀδÙ.


1. °¡¼³

³» °¡¼³Àº °£°áÇÔÀÌ Èû°ú °°°Å³ª, ¹®Á¦ Àִ ƯÀÌÇÑ(pathological) »ç·ÊµéÀ» Á¦¿ÜÇÑ´Ù¸é µ¿ÀÏÇÏ´Ù°í Ãë±ÞÇصµ µÉ ¸¸Å­ ¹ÐÁ¢ÇÏ´Ù´Â °ÍÀÌ´Ù.

³»°Ô´Â °£°áÇÔÀÌ ÇÁ·Î±×·¡¹Ö ¾ð¾îÀÇ ¸ñÇ¥·Î º¸ÀδÙ. ÄÄÇ»ÅͶó¸é ÇÒ ÀÏÀ» ±â°è¾î·Î Á÷Á¢ Áö½Ã¹ÞÀ» ¶§ °¡Àå ÇູÇÒ °ÍÀÌ´Ù. °í±Þ ¾ð¾î¸¦ °³¹ßÇϱâ À§ÇØ ¾Ö¾²´Â ÁÖµÈ ÀÌÀ¯´Â, Áö·¹¸¦ ¾²´Â °Íó·³ ±â°è¾î õ ÁÙÀÌ ÇÊ¿äÇÑ °ÍÀ» °í±Þ ¾ð¾î ¿­ ÁÙ·Î ¸»ÇÒ ¼ö (´õ Áß¿äÇÏ°Ô´Â »ý°¢ÇÒ ¼ö) ÀÖ°Ô Çϱâ À§ÇÑ °ÍÀ̶ó°í »ý°¢ÇÑ´Ù. ´Ù½Ã ¸»Çϸé, °í±Þ ¾ð¾îÀÇ ÁÖµÈ ¸ñÀûÀº ¼Ò½º Äڵ带 ´õ ÀÛ°Ô ¸¸µå´Â °ÍÀÌ´Ù.

´õ ÀÛÀº ¼Ò½º Äڵ尡 °í±Þ ¾ð¾îÀÇ ¸ñÀûÀÌ°í, ¾î¶² °ÍÀÇ ÈûÀÌ ±× ¸ñÀûÀ» ¾ó¸¶³ª Àß ´Þ¼ºÇϴ°¡¿¡ ÀÖ´Ù¸é, ÇÁ·Î±×·¡¹Ö ¾ð¾îÀÇ ÈûÀº ±×°ÍÀ¸·Î ÇÁ·Î±×·¥À» ¾ó¸¶³ª ÀÛ°Ô ¸¸µé ¼ö Àִ°¡ ÇÏ´Â °ÍÀ¸·Î ÃøÁ¤ÇÒ ¼ö ÀÖ´Ù.

¿ªÀ¸·Î, ÇÁ·Î±×·¥À» ÀÛ°Ô ¸¸µéÁö ¸øÇÏ´Â ¾ð¾î´Â ÇÁ·Î±×·¡¹Ö ¾ð¾î°¡ ´ç¿¬È÷ ÇÒ ÀÏÀ» Á¦´ë·Î ¸øÇÏ°í ÀÖ´Â °ÍÀÌ´Ù. Àß ¾È µå´Â Ä®À̳ª Àбâ Èûµç Àμ⹰°ú ¸¶Âù°¡ÁöÀÎ °ÍÀÌ´Ù.

2. ôµµ

±×·³ ¾î¶² Àǹ̿¡¼­ ÀÛ´Ù´Â ¸»Àΰ¡? ÄÚµåÀÇ Å©±â´Â ±× ÁÙ ¼ö·Î Àç´Â °ÍÀÌ °¡Àå ÀϹÝÀûÀÌ´Ù. ±×·±µ¥ ÀÌ Ã´µµ°¡ °¡Àå ÀϹÝÀûÀ¸·Î ¾²ÀÌ´Â °ÍÀº ±×·¸°Ô Àç´Â °ÍÀÌ °¡Àå ½±±â ¶§¹®ÀÏ °ÍÀÌ´Ù. ½ÇÁ¦·Î ÀÌ·¸°Ô Çؼ­ ÇÁ·Î±×·¥ÀÇ ±æÀ̸¦ Á¤È®ÇÏ°Ô °Ë»çÇÒ ¼ö ÀÖ´Ù°í ¹Ï´Â »ç¶÷Àº ¾Æ¹«µµ ¾øÀ» °Í °°´Ù. ¾ð¾îµé¸¶´Ù ÇÑ ÁÙ¿¡ ¾ó¸¶³ª ¸¹Àº ³»¿ëÀÌ µé¾î°¡´Â°¡¿¡ ´ëÇÑ °ü½ÀÀÌ ´Ù¸£´Ù. C¿¡¼­´Â ÇÑ ÁÙ¿¡ ±¸ºÐÀÚ(delimiter) ÇѵΠ°³¸¸ ´Þ¶û ÀÖ´Â °æ¿ì°¡ ¸¹´Ù.

±× ´ÙÀ½À¸·Î ½¬¿î °Ë»ç ¹æ¹ýÀº ÇÁ·Î±×·¥¿¡ µé¾î ÀÖ´Â ¹®ÀÚÀÇ °³¼ö¸¦ ¼¼´Â °ÍÀÌÁö¸¸, À̰͵µ ±×·¸°Ô ÁÁÀº ¹æ¹ýÀº ¾Æ´Ï´Ù. ¾î¶² (¿¹¸¦ µé¾î ÆÞ°ú °°Àº) ¾ð¾î´Â ´Ù¸¥ °Íµéº¸´Ù ½Äº°ÀÚ(identifier)µéÀÇ ±æÀÌ°¡ ´õ ª´Ù.

ÇÁ·Î±×·¥ÀÇ Å©±â¸¦ Àç´Â ´õ ÁÁÀº ¹æ¹ýÀº, ¿ä¼Ò(element)µéÀÇ °³¼ö¸¦ ¼¼´Â °ÍÀ̶ó°í »ý°¢ÇÑ´Ù. ¿©±â¿¡¼­ ¿ä¼Ò¶õ ¼Ò½º Äڵ带 ³ªÅ¸³»´Â Æ®¸®(tree)¸¦ ±×¸± ¶§ µ¶¸³µÈ ³ëµå(node)°¡ µÉ ¼ö ÀÖ´Â °ÍÀ» ¸»ÇÑ´Ù. º¯¼ö³ª ÇÔ¼öÀÇ À̸§Àº ¿ä¼ÒÀÌ´Ù. Á¤¼ö³ª ½Ç¼öµµ ¿ä¼ÒÀÌ´Ù. ¹®Àå(literal text)ÀÇ °¢ ºÎºÐµµ ¿ä¼ÒÀÌ´Ù. ÇüÅÂ(pattern)Àû ¿ä¼Ò, Áï Çü½Ä Áö½ÃÀÚ(format directive)µµ ¿ä¼ÒÀÌ´Ù. »õ·Î¿î ±¸¿ª(block)µµ ¿ä¼ÒÀÌ´Ù. °æ°è¿¡ ÀÖ´Â ¿¹µµ ÀÖÁö¸¸ (-5´Â ¿ä¼Ò°¡ µÑÀΰ¡ ÇϳªÀΰ¡?) ±×·± °Íµé ´ëºÎºÐÀº ¸ðµç ¾ð¾î¿¡¼­ °øÅëµÇ±â ¶§¹®¿¡ ºñ±³¿¡ Å©°Ô ¿µÇâÀ» ³¢Ä¡Áö ¾ÊÀ» °ÍÀ̶ó°í »ý°¢ÇÑ´Ù.

ÀÌ Ã´µµ´Â Á» ´õ ±¸Ã¼È­ÇÒ ÇÊ¿ä°¡ ÀÖÀ¸¸ç ƯÁ¤ÇÑ ¾ð¾îÀÇ °æ¿ì¿¡´Â Çؼ®ÀÌ ÇÊ¿äÇÒ ¼öµµ ÀÖÁö¸¸, ÀÌ°ÍÀº ÇÁ·Î±×·¥À» ÀÌ·ç´Â ¸ðµç ºÎºÐÀÇ °³¼ö¶ó´Â ¿Ã¹Ù¸¥ °ÍÀ» ¼¼·Á´Â ÁÁÀº ½Ãµµ¶ó°í »ý°¢ÇÑ´Ù. ÀÌ°ÍÀ» ½ÇÇàÇÏ´Â °úÁ¤¿¡¼­ ±×¸®°Ô µÇ´Â Æ®¸®´Â, ÇÁ·Î±×·¥À» ÀÌÇØÇϱâ À§ÇØ ¸Ó¸® ¼Ó¿¡ ±×·Á ³õ°í ÀÖ¾î¾ß ÇÏ´Â °ÍÀÌ´Ù. µû¶ó¼­ ±× Æ®¸®ÀÇ Å©±â´Â ÇÁ·Î±×·¥À» ÀÛ¼ºÇϰųª Àбâ À§ÇØ ÇØ¾ß ÇÏ´Â ÀÏÀÇ ¾ç°ú ºñ·Ê¸¦ ÀÌ·é´Ù°í »ý°¢ÇÑ´Ù.

3. ¼³°è

ÀÌ·± Á¾·ùÀÇ Ã´µµ·Î ¼­·Î ´Ù¸¥ ¾ð¾îµéÀ» ºñ±³ÇÒ ¼ö ÀÖ°ÚÁö¸¸, Àû¾îµµ ³ª¿¡°Ô´Â ÀÌ°ÍÀÌ ±×°ÍÀÇ ÁÖµÈ °¡Ä¡°¡ ¾Æ´Ï´Ù. °£°á¼º °Ë»çÀÇ ÁÖµÈ °¡Ä¡´Â ¾ð¾î ¼³°èÀÇ ÁöħÀÌ µÈ´Ù´Â µ¥¿¡ ÀÖ´Ù. ¾ð¾îÀÇ ºñ±³°¡ °¡Àå À¯¿ëÇÑ ¶§´Â, °°Àº ¾ð¾î¸¦ ´Ù¾çÇÏ°Ô º¯Çü(variant)ÇØ º» °ÍµéÀ» ¼­·Î ºñ±³ÇÏ´Â °ÍÀÌ´Ù. "ÇÁ·Î±×·¥À» ´õ ª°Ô ¸¸µé±â À§ÇØ ³ª´Â ÀÌ ¾ð¾î¿¡ ´ëÇØ ¹«¾ùÀ» ÇÒ ¼ö Àִ°¡?"

¾î¶² ÇÁ·Î±×·¥ÀÇ °³³äÀû ºÎÇÏ(conceptual load)°¡ ±× º¹Àâµµ¿Í ºñ·Ê¸¦ ÀÌ·ç°í, Áö±ÝÀÇ ÇÁ·Î±×·¡¸Ó´Â Á¤ÇØÁø °³³äÀû ºÎÇϸ¸ °ßµô ¼ö ÀÖ´Ù¸é, ÀÌ°ÍÀº ÀÌ·¸°Ô ¹¯´Â °Í°ú °°´Ù. "ÇÁ·Î±×·¡¸ÓµéÀÌ ÃÖ´ëÀÇ È¿°ú¸¦ ¾ò°Ô Çϱâ À§ÇØ ³ª´Â ¹«¾ùÀ» ÇÒ ¼ö Àִ°¡?" ±×¸®°í ÀÌ°ÍÀº ÀÌ·¸°Ô ¹¯´Â °Í°ú µ¿ÀÏÇÏ°Ô º¸ÀδÙ. "³ª´Â ÁÁÀº ¾ð¾î¸¦ ¾î¶»°Ô ¼³°èÇÒ ¼ö Àִ°¡?"

(µ¡ºÙÀÌÀÚ¸é, ¾ð¾î¸¦ ¼³°èÇÒ ¶§¸¸Å­ "¸ðµç ¾ð¾î´Â µ¿µîÇÏ´Ù"´Â ÄÉÄɹ¬Àº À̾߱Ⱑ °ÅÁþÀ̶ó´Â °ÍÀÌ ´õ¿í ºÐ¸íÇÏ°í È®½ÇÇØÁö´Â ¶§´Â ¾ø´Ù. »õ·Î¿î ¾ð¾î¸¦ ¼³°èÇÒ ¶§´Â ¾î´À °ÍÀÌ ´õ ÁÁÀºÁö ÆÇ´ÜÇϱâ À§ÇØ µÎ ¾ð¾î, Áï x¶ó´Â °ÍÀ» ±¸ÇöÇßÀ» ¶§ÀÇ ¾ð¾î¿Í ±×·¸Áö ¾ÊÀ» ¶§ÀÇ ¾ð¾î¸¦ ²÷ÀÓ¾øÀÌ ºñ±³ÇÑ´Ù. ÀÌ°ÍÀÌ ½ÇÁ¦·Î ¹«ÀǹÌÇÑ Áú¹®À̶ó¸é, µ¿Àü ´øÁö±â·Î °áÁ¤Çصµ µÉ °ÍÀÌ´Ù.)

°£°áÇÔÀ» ¸ñÇ¥·Î »ï´Â °ÍÀº »õ·Î¿î Âø»óÀ» ¾ò´Â ÁÁÀº ¹æ¹ýÀÎ °Í °°´Ù. ¾î¶² ÀÏÀ» ÇßÀ» ¶§ ¼­·Î ´Ù¸¥ ¿©·¯ ÇÁ·Î±×·¥µéÀÇ ±æÀÌ°¡ ª¾ÆÁú ¼ö ÀÖ´Ù¸é, ±×°ÍÀº ¿ì¿¬ÀÇ ÀÏÄ¡°¡ ¾Æ´Ò °ÍÀÌ´Ù. ¾Æ¸¶µµ À¯¿ëÇÑ »õ·Î¿î Ãß»óÈ­ ¹æ¹ý(abstraction)À» ¹ß°ßÇÑ °ÍÀÏ ¼ö ÀÖ´Ù. ¼Ò½º Äڵ忡¼­ ¹Ýº¹µÇ´Â ÇüÅÂ(pattern)µéÀ» ã¾Æ³¿À¸·Î½á µµ¿òÀ» ÁÖ´Â ÇÁ·Î±×·¥À» ¸¸µé ¼öµµ ÀÖÀ» °ÍÀÌ´Ù. ¿©·¯ ¾ð¾îµé °¡¿îµ¥ °£°áÇÔÀ¸·Î ¸í¼ºÀÌ ÀÖ´Â °ÍµéÀº »õ·Î¿î Âø»óÀ» ¾ò±â À§ÇØ ºÁ µÎ´Â °ÍÀÌ ÁÁÀ» °ÍÀÌ´Ù. Æ÷½º(Forth), Á¶ÀÌ(Joy), ¾ÆÀÌÄÜ(Icon) µîÀÌ ±×°ÍÀÌ´Ù.

4. ºñ±³

³»°¡ ¾Ë±â·Î ÀÌ ¹®Á¦¿¡ ´ëÇØ Ã³À½À¸·Î ±ÛÀ» ¾´ »ç¶÷Àº "¸Ç¸Õ½ºÀÇ ½ÅÈ­(the Mythical Man Month)"ÀÇ ÇÁ·¹µå ºê·è½º(Fred Brooks)ÀÌ´Ù. ±×´Â ÇÁ·Î±×·¡¸ÓµéÀÌ ÇÏ·ç¿¡ »ý¼ºÇÏ´Â ÄÚµåÀÇ ¾çÀº ¾ð¾î¿¡ »ó°ü¾øÀÌ °ÅÀÇ ¶È°°Àº °ÍÀ¸·Î º¸ÀÎ´Ù°í ½è´Ù. ³»°¡ ÀÌ ±ÛÀ» 20´ë Ãʹݿ¡ óÀ½ ÀоúÀ» ¶§ ±×°ÍÀº ³Ê¹«³ª ³î¶ó¿ü°í ¾öû³­ ³»¿ëÀ» ÇÔÃàÇÏ°í ÀÖ´Ù°í ´À²¼´Ù. ÀÌ ±ÛÀº (a) ¼ÒÇÁÆ®¿þ¾î¸¦ ´õ »¡¸® ¸¸µé±â À§ÇÑ ´Ü ÇϳªÀÇ ¹æ¹ýÀº ´õ¿í °£°áÇÑ ¾ð¾î¸¦ »ç¿ëÇÏ´Â °ÍÀ̸ç, (b) ¾Ö½á¼­ ÀÌ·¸°Ô ÇÑ »ç¶÷Àº ±×·¸°Ô ÇÏÁö ¾ÊÀº °æÀïÀÚµéÀ» ¾ÐµµÇÒ ¼ö ÀÖÀ» °ÍÀ̶ó´Â ¶æÀÌ µÈ´Ù.

ºê·è½ºÀÇ °¡¼³Àº, ±×°ÍÀÌ Áø½ÇÀ̶ó¸é, ¹Ù·Î ÇØÅ·ÀÇ ÇÙ½ÉÀ¸·Î º¸ÀδÙ. ±× ÀÌÈÄ·Î ³ª´Â Çü½ÄÀ» °®Ãá ¿¬±¸¿¡¼­ °³ÀÎ ÇÁ·ÎÁ§Æ®ÀÇ ÀÏÈ­µé±îÁö ±× Áú¹®°ú °ü·ÃÇÏ¿© ¾òÀ» ¼ö ÀÖ´Â ¸ðµç Áõ°Åµé¿¡ ¼¼½ÉÇÏ°Ô ÁÖÀǸ¦ ±â¿ï¿© ¿Ô´Ù. ±×¸®°í ±×ÀÇ ¸»°ú ¸ð¼øµÇ´Â Áõ°Å´Â ÀüÇô ãÀ» ¼ö ¾ø¾ú´Ù.

¹°·Ð °á·ÐÀ» ³»¸± ¸¸Å­ È®½ÇÇÑ Áõ°Å´Â ¾ÆÁ÷ ãÁö ¸øÇßÁö¸¸, ±×·± °ÍÀ» ±â´ëÇÏÁöµµ ¾Ê´Â´Ù. ·çÃ÷ ÇÁ·ºÇïÆ®(Lutz Prechelt)ÀÇ ÇÁ·Î±×·¡¹Ö ¾ð¾î ºñ±³¿Í °°Àº ¿¬±¸µéÀº, ³»°¡ ±â´ëÇÑ Á¾·ùÀÇ °á°ú°¡ ³ª¿À±â´Â ÇßÁö¸¸, ÀÇ¹Ì ÀÖ´Â °Ë»ç¶ó°í Çϱ⿡´Â ³Ê¹« ªÀº ¹®Á¦µéÀ» »ç¿ëÇÏ´Â °æÇâÀÌ ÀÖ´Ù. ´õ ÁÁÀº ¹æ¹ýÀº, ¸¸µå´Â µ¥ ÇÑ ´ÞÀº °É¸®´Â ÇÁ·Î±×·¥µé¿¡¼­ ±× ¾ð¾î°¡ ¾î¶°ÇÑ°¡¸¦ °Ë»çÇÏ´Â °ÍÀÌ´Ù. ±×¸®°í ³ªÃ³·³ ¾ð¾îÀÇ ÁÖµÈ ¸ñÀûÀÌ (¹«¾ùÀ» ´Ù »ý°¢ÇÑ µÚ¿¡ ÄÄÇ»ÅÍ¿¡°Ô ±×°ÍÀ» Áö½ÃÇÏ´Â °Íº¸´Ù) ¾Æ¿¹ ±×°ÍÀ» ÅëÇØ »ý°¢Çϱ⿡ ÁÁ¾Æ¾ß ÇÏ´Â °ÍÀ̶ó°í ¹Ï´Â´Ù¸é, À¯ÀÏÇÑ ÁøÂ¥ °Ë»ç´Â ±× ¾ð¾î·Î »õ·Î¿î ¾î¶² °ÍµéÀ» ¸¸µé ¼ö Àִ°¡¸¦ º¸´Â °ÍÀÌ´Ù.

¾ð¾î¿¡ ´ëÇÑ ÁøÂ¥ °Ë»ç´Â »õ·Î¿î ¹®Á¦¸¦ ¾ó¸¶³ª Àß ¹ß°ßÇÏ°í ÇØ°áÇÒ ¼ö Àִ°¡¸¦ º¸´Â °ÍÀÌÁö, ´Ù¸¥ »ç¶÷ÀÌ ÀÌ¹Ì °ø½ÄÀ» ¸¸µé¾î ³õÀº ¹®Á¦¸¦ ÇØ°áÇϱâ À§ÇØ ±× ¾ð¾î¸¦ ¾ó¸¶³ª Àß »ç¿ëÇÒ ¼ö Àִ°¡¸¦ º¸´Â °ÍÀÌ ¾Æ´Ï´Ù. ÀÌ µÑÀº ±âÁØÀÌ ¸Å¿ì ´Ù¸£´Ù. ¹Ì¼ú¿¡¼­ ÀÚ¼ö(embroidery)³ª ¸ðÀÚÀÌÅ©¿Í °°Àº ¸Åü´Â ¹«¾ùÀ» ¸¸µé°í ½ÍÀºÁö »çÀü¿¡ ¾Ë°í ÀÖ´Ù¸é ¸Å¿ì È¿°úÀûÀÌÁö¸¸, ±×·¸Áö ¾Ê´Ù¸é Á¤¸» ÁöÀúºÐÇØÁú »ÓÀÌ´Ù. ¾î¶² ¸ð½À(image)À» ±×·Á °¡¸é¼­ ±× ¸ð½ÀÀ» ã¾Æ³»°í ½ÍÀ» ¶§´Â (¿¹¸¦ µé¾î, »ç¶÷ÀÇ ¸ð½Àó·³ º¹ÀâÇÑ ÀÛ¾÷À» ÇÒ ¶§) ¿¬ÇÊÀ̳ª À×Å© ¿ö½Ã(ink wash)³ª À¯È­Ã³·³ Á» ´õ À¯µ¿ÀûÀÎ ¸Åü¸¦ »ç¿ëÇÒ ÇÊ¿ä°¡ ÀÖ´Ù. °Ô´Ù°¡ ÅÂÇǽºÆ®¸®(tapestry)³ª ¸ðÀÚÀÌÅ©°¡ ½ÇÁ¦·Î ¸¸µé¾îÁö´Â ¹æ½Ä¿¡¼­µµ ¸ÕÀú ±×¸²À» ±×¸®°í ´ÙÀ½¿¡ ±×°ÍÀ» º¹»çÇÑ´Ù. ("Ä«Å÷(cartoon)"À̶ó´Â ´Ü¾î´Â ¿ø·¡ ÀÌ·± ¸ñÀûÀ¸·Î ±×¸° ±×¸²À» °¡¸®Å°±â À§ÇØ »ç¿ëµÇ¾ú´Ù.)

ÀÌ°ÍÀº ÇÁ·Î±×·¡¹Ö ¾ð¾îµéÀÇ »ó´ëÀûÀÎ ÈûÀ» Á¤È®ÇÏ°Ô ºñ±³ÇÒ ¼ö ¾øÀ» °Í °°´Ù´Â ¸»ÀÌ´Ù. Á¤¹ÐÇÏ°Ô(precise)´Â ºñ±³ÇÏ°ÚÁö¸¸, Á¤È®ÇÏ°Ô(accurate)´Â ¾Æ´Ï´Ù. ƯÈ÷ ¾ð¾îÀÇ ºñ±³°¡ ¸ñÀûÀ̶ó°í ¸í¹éÈ÷ ¹àÈù ¿¬±¸¿¡¼­´Â ¾Æ¸¶µµ ±Ô¸ð°¡ ÀÛÀº ¹®Á¦µéÀ» »ç¿ëÇÒ °ÍÀÌ°í ÇÊ¿¬ÀûÀ¸·Î ¹Ì¸® Á¤ÀÇµÈ ¹®Á¦µéÀ» »ç¿ëÇÒ °ÍÀ̹ǷÎ, ´õ¿í °­·ÂÇÑ ¾ð¾îÀÇ ÈûÀ» °ú¼ÒÆò°¡Çϱ⠽¬¿ï °ÍÀÌ´Ù.

ÇØ´ç ºÐ¾ß¿¡¼­ ³ª¿Â º¸°í¼­µéÀÌ, ºñ·Ï "°úÇÐÀûÀÎ" ¿¬±¸µéº¸´Ù ´ú Á¤¹ÐÇÒ ¼ö¹Û¿¡ ¾ø°ÚÁö¸¸, Àǹ̴ ´õ Ŭ °Í °°´Ù. ¿¹¸¦ µé¾î, ¿¡¸¯½¼(Ericsson)ÀÇ ¿ïÇÁ ºñ°Å(Ulf Wiger)´Â ÇÑ [http]¿¬±¸¿¡¼­ ´ÙÀ½°ú °°ÀÌ ¾ó¶û(Erlang)ÀÌ C++º¸´Ù 4~10¹è °£°áÇϸç, ±×¿¡ µû¶ó ¼ÒÇÁÆ®¿þ¾î °³¹ßÀÌ ´õ ºü¸£´Ù°í °á·ÐÀ» ³»·È´Ù. ¿ªÀÚ ÁÖ: ¾ó¶û(Erlang)Àº ¿¡¸¯½¼(Ericsson)¿¡¼­ °³¹ßÇÑ ÇÔ¼öÇü ¾ð¾î(functional language)·Î¼­ ºÐ»ê Åë½Å ½Ã½ºÅÛ¿¡ ÀûÇÕÇÏ´Ù. ÀÌ À̸§Àº µ§¸¶Å©ÀÇ ¼öÇÐÀÚ A. K. ¾ó¶û(Erlang)¿¡¼­ ¿ÔÀ¸¸ç, ÀüÈ­ ÅëÈ­·®ÀÇ ´ÜÀ§·Î ¾²À̱⵵ ÇÑ´Ù.

¿¡¸¯½¼ ³»ºÎÀÇ °³¹ß ÇÁ·ÎÁ§Æ®µéÀ» ºñ±³ÇÑ °á°ú, ¼ÒÇÁÆ®¿þ¾î °³¹ßÀÇ ¸ðµç ´Ü°è¿¡¼­ ¾î¶² ¾ð¾î(¾ó¶û, Ç÷º½º(PLEX), C, C++, ÀÚ¹Ù(Java) µî)¸¦ »ç¿ëÇߴ°¡¿Í ¹«°üÇÏ°Ô ½Ã°£´ç ÁÙ ¼öÀÇ »ý»ê¼ºÀÌ ¼­·Î ºñ½ÁÇÑ °ÍÀ¸·Î º¸ÀδÙ. ¼­·Î ´Ù¸¥ ¾ð¾î¸¦ ±¸º° Áþ´Â °ÍÀº °á±¹ ¼Ò¼Ò ÄÚµåÀÇ ºÐ·®À̶ó´Â ¸»ÀÌ µÈ´Ù. ¿ªÀÚ ÁÖ: Ç÷º½º(Programming Language for EXchange)´Â ¿¡¸¯½¼¿¡¼­ °³¹ßÇÑ ½Ç½Ã°£ ³»Àå ½Ã½ºÅÛ(realtime embedded system) ¾ð¾îÀÌ´Ù.

¶ÇÇÑ ÀÌ ¿¬±¸´Â ºê·è½ºÀÇ Ã¥¿¡¼­ Àº¿¬Áß¿¡ ¾ð±ÞµÈ ³íÁ¡À» ¸í¹éÇÏ°Ô ´Ù·ç°í ÀÖ´Ù. (ºê·è½º´Â µð¹ö±×µÈ ÄÚµåÀÇ ÁÙ ¼ö¸¦ ¼Ã´Ù.) Áï, °­·ÂÇÑ ¾ð¾î·Î ¸¸µç ÇÁ·Î±×·¥µéÀº ¹ö±×µµ Àû´Ù. ¹ö±×°¡ Àû´Ù´Â °ÍÀº ³×Æ®¿öÅ© ½ºÀ§Ä¡(network switch) °°Àº ÀÀ¿ë ºÐ¾ß¿¡¼­´Â ±× ÀÚü°¡ ¸ñÀûÀ̸ç, ÇÁ·Î±×·¡¸ÓÀÇ »ý»ê¼ºº¸´Ù ´õ Áß¿äÇÒ ¼öµµ ÀÖ´Ù.

5. ÃëÇâ °Ë»ç

±Ã±ØÀûÀ¸·Î´Â Àڱ⠺»´É´ë·Î ÇൿÇØ¾ß ÇÑ´Ù°í »ý°¢ÇÑ´Ù. ¾î¶² ¾ð¾î·Î ÇÁ·Î±×·¡¹Ö ÇÑ´Ù´Â °ÍÀº ¹«½¼ ´À³¦Àΰ¡? ÃÖ¼±ÀÇ ¾ð¾î¸¦ ã´Â (¶Ç´Â ¼³°èÇÏ´Â) ¹æ¹ýÀº, ±× ¾ð¾î¸¦ ÅëÇØ ³»°¡ ¾ó¸¶³ª Àß »ý°¢ÇÒ ¼ö Àִ°¡¿¡ ´ëÇØ ÃÊ°í°¨µµÀÇ(hypersensitive) °¨°¢À» µ¿¿øÇÏ¿© ±× Áß ÃÖ°íÀÇ °ÍÀ» ¼±ÅÃ(¼³°è)ÇÏ´Â °ÍÀÌ´Ù. ¾î¶² ¾ð¾îÀÇ Æ¯Â¡ÀÌ ºÒÆíÇϰųª Á¦ÇÑÀûÀÎ °ÍÀÎÁö ¾Æ´ÑÁö´Â °ÆÁ¤ÇÏÁö ¾Ê¾Æµµ ¹Ù·Î ¾Ë ¼ö ÀÖÀ» °ÍÀÌ´Ù.

±×·± ÃÊ°í°¨µµÀÇ °¨°¢À» ¾ò±â À§Çؼ­´Â ³ë·ÂÀÌ ÇÊ¿äÇÏ´Ù. °á±¹¿¡´Â ¼­Åõ¸¥ ¾ð¾î·Î ÇÁ·Î±×·¡¹Ö ÇÏ´Â °ÍÀ» °ßµô ¼ö ¾øÀ» °ÍÀÌ´Ù. ³ª´Â ¸ÅÅ©·Î°¡ ¾ø´Â ¾ð¾î·Î ÇÁ·Î±×·¡¹Ö ÇÒ ¶§ ÂüÀ» ¼ö ¾øÀÌ Á¦Çѹ޴ °ÍÀ» ´À³¤´Ù. ÀÌ°ÍÀº µ¿ÀûÀÎ ÀÚ·áÇü ¼³Á¤(dynamic typing)¿¡ Àͼ÷ÇØÁø »ç¶÷µéÀÌ ¾î¿ ¼ö ¾øÀÌ º¯¼öµéÀÇ ÀÚ·áÇüÀ» ÀÏÀÏÀÌ ¼±¾ðÇØ¾ß ÇÏ´Â ¾ð¾î·Î ÇÁ·Î±×·¡¹Ö ÇØ¾ß ÇÒ ¶§ Á¦Çѹ޴ °ÍÀ» ´À³¢´Â °Í°ú ¸¶Âù°¡ÁöÀÌ´Ù. ¼­·Î ´Ù¸¥ ÀÚ·áÇüÀÇ °´Ã¼µéÀ» ÇϳªÀÇ ¸®½ºÆ®·Î ¸¸µé ¼ö ¾øÀ» ¶§µµ ±×·± ´À³¦À» ¹Þ´Â´Ù.

³ª¸¸ ±×·± °ÍÀÌ ¾Æ´Ï´Ù. ³ª´Â ÀÌ·± °æÇèÀ» ÇÑ ¸®½ºÇÁ ÇØÄ¿µéÀ» ¸¹ÀÌ ¾Ë°í ÀÖ´Ù. »ç½Ç ÇÁ·Î±×·¡¹Ö ¾ð¾îµéÀÇ »ó´ëÀûÀÎ ÈûÀ» Àç´Â °¡Àå Á¤È®ÇÑ Ã´µµ´Â, ±× ¾ð¾î¸¦ »ç¿ëÇÑ´Ù¸é ÀÀ¿ë ºÐ¾ß¿¡ »ó°ü¾øÀÌ ¾î¶² ÀÏÀÌ¶óµµ ÇØ ³¾ ¼ö ÀÖ´Â »ç¶÷µéÀÇ ºñÀ²ÀÏ °ÍÀÌ´Ù.

6. Á¦ÇѼº

´ëºÎºÐÀÇ ÇØÄ¿µéÀº ¾ð¾î¿¡¼­ Á¦Çѹ޴ ´À³¦ÀÌ µç´Ù´Â °ÍÀÌ ¹«½¼ ¶æÀÌ ¾Ë °ÍÀÌ´Ù. ±×·± ´À³¦ÀÌ µé¸é ¾î¶»°Ô µÇ´Â°¡? ÀÌ°ÍÀº °¡·Á°í ÇÑ ±æÀÌ Æó¼âµÇ¾î¼­ °¡°í ½ÍÀº °÷À¸·Î °¡±â À§ÇØ ¸Ö¸® ¿ìȸÇØ¾ß ÇÒ ¶§ ¹Þ´Â ´À³¦°ú °°À» °ÍÀ̶ó°í »ý°¢ÇÑ´Ù. ¹«¾ùÀΰ¡¸¦ ¸»ÇÏ°í ½ÍÀºµ¥ ¾ð¾î°¡ ±×°ÍÀ» Çã¶ôÇÏÁö ¾Ê´Â °ÍÀÌ´Ù.

³» »ý°¢¿¡ ¿©±â¿¡¼­ ÇÙ½ÉÀº, Á¦ÇÑÀûÀÎ ¾ð¾î´Â ÃæºÐÈ÷ °£°áÇÏÁö ¾ÊÀº °ÍÀ̶ó´Â »ç½ÇÀÌ´Ù. ´Ü¼øÈ÷ ÇÏ°íÀÚ ÇÏ´Â °ÍÀ» ¸»ÇÒ ¼ö ¾ø´Ù´Â °ÍÀÌ ¹®Á¦°¡ ¾Æ´Ï´Ù. ±× ¾ð¾î ¶§¹®¿¡ ¿ìȸÇØ¾ß ÇÏ´Â ±æÀÌ ±æ´Ù´Â °ÍÀÌ ¹®Á¦ÀÌ´Ù. ½ÇÇè»ï¾Æ ÀÌ·¸°Ô »ý°¢ÇØ º¸ÀÚ. ¸¸µé°í ½ÍÀº ¾î¶² ÇÁ·Î±×·¥ÀÌ Àִµ¥, ±× ¾ð¾î·Î´Â ³»°¡ ÇÏ°íÀÚ ÇÏ´Â ¹æ½ÄÀ¸·Î Ç¥ÇöÇÏÁö ¸øÇÏ°í, ±× ´ë½Å ´õ ªÀº ¾î¶² ´Ù¸¥ ¹æ½ÄÀ¸·Î ±× ÇÁ·Î±×·¥À» ¸¸µé ¼ö¹Û¿¡ ¾ø´Ù°í °¡Á¤ÇÏÀÚ. ÃÖ¼ÒÇÑ ³ª¶ó¸é, ±×°ÍÀ» ±×·¸°Ô Á¦ÇÑ¹Þ´Â´Ù°í ´À³¢Áö´Â ¾ÊÀ» °ÍÀÌ´Ù. ÀÌ°ÍÀº °¡·Á°í ÇÏ´Â ±æÀÌ Æó¼âµÇ¾úÁö¸¸, °æÂû°üÀÌ ±³Â÷·Î¿¡¼­ ¿ìȸ·Î ´ë½Å Áö¸§±æÀ» ¾Ë·Á ÁÖ´Â °Í°ú °°´Ù. ÈǸ¢ÇÏ´Ù!

³ª´Â Á¦ÇѼºÀÇ ´À³¦ ´ëºÎºÐÀÌ (90ÆÛ¼¾Æ®Âë?) ±× ¾ð¾î·Î ÇÁ·Î±×·¥À» ¸¸µé ¶§ ¸Ó¸® ¼Ó¿¡ ÀÖ´Â °Íº¸´Ù ´õ ±æ¾îÁú ¼ö¹Û¿¡ ¾ø´Ù´Â »ç½Ç¿¡¼­ ¿Â´Ù°í »ý°¢ÇÑ´Ù. Á¦ÇѼºÀº ´ëºÎºÐ °£°áÇÔÀÌ °á¿©µÈ °ÍÀÌ´Ù. ¾î¶² ¾ð¾î°¡ Á¦ÇÑÀûÀ¸·Î ´À²¸Áø´Ù¸é ±×°ÍÀº (´ëºÎºÐ) ±× ¾ð¾î°¡ ÃæºÐÈ÷ °£°áÇÏÁö ¾Ê´Ù´Â ÀǹÌÀ̸ç, ¾ð¾î°¡ °£°áÇÏÁö ¾ÊÀ» ¶§ ±×°ÍÀÌ Á¦ÇÑÀûÀ¸·Î ´À²¸Áú °ÍÀÌ´Ù.

7. °¡µ¶¼º

óÀ½¿¡ ÀοëÇÑ ±ÛÀº µÎ °¡Áö ´Ù¸¥ ¼ºÁú, ±ÔÄ¢¼º(regularity)°ú °¡µ¶¼º(readability)¿¡ ´ëÇØ ¾ð±ÞÇÏ°í ÀÖ´Ù. ³ª´Â ±ÔÄ¢¼ºÀÌ ¹«¾ùÀÎÁö, ȤÀº ±ÔÄ¢¼º°ú °¡µ¶¼º ÀÖ´Â Äڵ尡 °¡µ¶¼º¸¸ ÀÖ´Â Äڵ庸´Ù ¹«½¼ ÀåÁ¡ÀÌ ÀÖ´Â °ÍÀÎÁö Àß ¸ð¸£°Ú´Ù. ÇÏÁö¸¸ °¡µ¶¼ºÀÌ ¹«¾ùÀ» ¶æÇÏ´ÂÁö´Â ¾Ë°í ÀÖÀ¸¸ç, ÀÌ°Í ¶ÇÇÑ °£°áÇÔ°ú °ü·ÃµÇ¾î ÀÖ´Ù°í »ý°¢ÇÑ´Ù.

ÀÌ ¶§ ÄÚµåÀÇ °³º° ÁÙµéÀÇ °¡µ¶¼º°ú ÇÁ·Î±×·¥ ÀüüÀÇ °¡µ¶¼ºÀº ÁÖÀÇÇؼ­ ±¸ºÐÇØ¾ß ÇÑ´Ù. ¿©±â¼­ Áß¿äÇÑ °ÍÀº µÎ ¹ø° °ÍÀÌ´Ù. º£ÀÌÁ÷(Basic)ÀÇ ÇÑ ÁÙÀº ¸®½ºÇÁÀÇ ÇÑ ÁÙº¸´Ù ´õ Àб⠽±´Ù´Â µ¥¿¡´Â µ¿ÀÇÇÑ´Ù. ÇÏÁö¸¸ º£ÀÌÁ÷À¸·Î ¸¸µç ÇÁ·Î±×·¥Àº (ƯÈ÷ ÀÏ´Ü ±×¸°½ºÆÝ ¼¼°è(Greenspunland)·Î ³Ñ¾î µé¾î°¬´Ù¸é) ¸®½ºÇÁ·Î ¸¸µç °°Àº ÇÁ·Î±×·¥º¸´Ù ÁÙ ¼ö°¡ ´õ ¸¹À» °ÍÀÌ´Ù. ±×¸®°í º£ÀÌÁ÷ ÇÁ·Î±×·¥À» ÀÐÀ» ¶§ µå´Â ÃÑ ³ë·ÂÀº ºÐ¸íÈ÷ ´õ Ŭ °ÍÀÌ´Ù. ¿ªÀÚ ÁÖ: C³ª Æ÷Æ®¶õ(Fortran)À¸·Î ¸¸µç º¹ÀâÇÑ ÇÁ·Î±×·¥¿¡¼­ ÁöÀúºÐÇÑ Àý¹Ý ºÎºÐÀº Ä¿¸Õ ¸®½ºÇÁ(Common Lisp)·Î ±¸ÇöµÇ¾ú´Ù´Â '±×¸°½ºÆÝ(Greenspun)ÀÇ ÇÁ·Î±×·¡¹ÖÀÇ ¿­ ¹ø° ¹ýÄ¢'ÀÌ ÀÖ´Ù. ±×¸°½ºÆÝ ¼¼°èÀÇ º£ÀÌÁ÷ ÇÁ·Î±×·¥µµ Àý¹ÝÀº ¸®½ºÇÁ·Î ±¸ÇöµÇ¾úÀ» Å×´Ï ¸®½ºÇÁ·Î ¸¸µç ÇÁ·Î±×·¥º¸´Ù ´ç¿¬È÷ ´õ ±æ °ÍÀÌ´Ù.

(FIXME: ¿©±â¼­µµ ¿ªÀÚÁÖÀÇ ±×¸°½ºÆÝ À̾߱Ⱑ Á¶±Ý ÀÌ»óÇÕ´Ï´Ù. º£ÀÌÁ÷ ¾ð¾î·Î º¹ÀâÇÑ ÇÁ·Î±×·¥À» ÀÛ¼ºÇß´Ù¸é, °ÅÀÇ Æ²¸²¾øÀÌ Ä¿¸Õ¸®½ÀÀÇ Àý¹ÝÀ» ¾ûÅ͸®·Î ±¸ÇöÇßÀ» °Å¶ó´Â ÀǹÌÁÒ.)

ÃÑ ³ë·Â = ÁÙ´ç ³ë·Â x ÁÙ ¼ö

°¡µ¶¼ºµµ Èûó·³ °£°áÇÔ°ú Á÷Á¢ ºñ·Ê¸¦ ÀÌ·ç´ÂÁö´Â ºÐ¸íÇÏÁö ¾ÊÁö¸¸, °£°áÇÔÀº (À§ÀÇ ½Ä¿¡ º¸ÀÌ´Â ¼öÇÐÀûÀÎ Àǹ̿¡¼­) °¡µ¶¼ºÀÇ ÇÑ ¿ä¼ÒÀÌ´Ù. ±×·¡¼­ ¾ð¾îÀÇ ¸ñÇ¥°¡ °£°áÇÔÀÌ ¾Æ´Ï¶ó °¡µ¶¼ºÀ̶ó°í ÇÏ´Â °ÍÀº º°·Î Àǹ̰¡ ¾ø´Â ¸»ÀÏ ¼ö ÀÖ´Ù. ÀÌ ¸»Àº ±× ¸ñÇ¥°¡ °¡µ¶¼ºÀÌ ¾Æ´Ï¶ó °¡µ¶¼ºÀ̶ó°í (µ¿¾î ¹Ýº¹) ÇÏ´Â °Í°ú °°À» ¼ö ÀÖ´Ù.

'ÇÑ ÁÙÀÇ °¡µ¶¼º(readability-per-line)'À̶õ, ±× ¾ð¾î¸¦ óÀ½ Á¢ÇÑ »ç¿ëÀڵ鿡°Ô ¼Ò½º Äڵ尡 µÎ·ÆÁö ¾Ê°Ô º¸Àδٴ ¹Ù·Î ±× ¶æÀÌ´Ù. ±×·¡¼­ 'ÇÑ ÁÙÀÇ °¡µ¶¼º'Àº, ºñ·Ï ¼³°è Ãø¸é¿¡¼­´Â ¾È ÁÁÀº °áÁ¤À̶óµµ, ¸¶ÄÉÆà Ãø¸é¿¡¼­´Â ÁÁÀº °áÁ¤ÀÏ ¼ö ÀÖ´Ù. ÀÌ°ÍÀº »ç¶÷µéÀÌ ÇҺηΠºñ¿ëÀ» ÁöºÒÇÏ°Ô ÇÏ´Â ¸Å¿ì ¼º°øÀûÀÎ ¼ö¿Ï°ú ÇüÅ°¡ ¶È°°´Ù. Áï, ³ôÀº ¼±ºÒ °¡°ÝÀ¸·Î »ç¶÷µéÀ» ³î¶ó°Ô ÇÏ´Â ´ë½Å, ³·Àº ¿ù ÇҺαÝÀ» ¸»ÇØ ÁÖ´Â °ÍÀÌ´Ù. ÇÏÁö¸¸ ÇҺΠ°èȹÀº ±¸¸ÅÀÚ ÀÔÀå¿¡¼­´Â °á±¹ ¼ÕÇØÀÌ´Ù. ´Ü¼øÇÑ 'ÇÑ ÁÙÀÇ °¡µ¶¼º'ÀÌ ÇÁ·Î±×·¡¸Ó¿¡°Ô ±×·¯ÇÑ °Í°ú ¸¶Âù°¡ÁöÀÌ´Ù. ±¸¸ÅÀÚ´Â ±× ³·°í ³·Àº ºñ¿ëÀ» ¿©·¯ ¹ø ÁöºÒÇØ¾ß ÇÒ °ÍÀÌ°í, ÇÁ·Î±×·¡¸Ó´Â °³º°ÀûÀ¸·Î Àб⠽¬¿î ÁÙµéÀ» ¿©·¯ ÁÙ Àоî¾ß ÇÒ °ÍÀÌ´Ù.

ÀÌ·± ½ÄÀ¸·Î ±ÕÇüÀ» ¸ÂÃß´Â °Í(tradeoff)Àº ÇÁ·Î±×·¡¹Ö ¾ð¾î¸¦ °ú°Å·Î µ¹·Á³õ´Â °ÍÀÌ´Ù. ¼Ò¼³À̳ª ½Å¹® ±â»ç¸¦ Àд °Í¿¡ Àͼ÷ÇÏ´Ù¸é, ¼öÇÐ ³í¹®À» óÀ½ ÀÐ¾î º¸´Â °ÍÀº ´çȲ½º·¯¿ï ¼ö ÀÖ´Ù. ÇÑ ÆäÀÌÁö¸¦ Àд µ¥ ¹Ý ½Ã°£ÀÌ °É¸± ¼öµµ ÀÖ´Ù. ±× ±âÈ£°¡ ¹®Á¦ÀÎ °Íó·³ ´À²¸Áú ¼ö ÀÖÁö¸¸, »ç½ÇÀº ±×·¸Áö ¾ÊÀº °ÍÀÌ ºÐ¸íÇÏ´Ù. ¼öÇÐ ³í¹®ÀÌ Àб⠾î·Á¿î °ÍÀº °Å±â¿¡ ´ã±ä »ý°¢ÀÌ ¾î·Æ±â ¶§¹®ÀÌ´Ù. ±×°Í°ú °°Àº »ý°¢À» (¼öÇÐÀÚµéÀÌ °£°áÇÑ ±âÈ£¸¦ ¹ßÀü½ÃÅ°±â Àü¿¡ ±×·¡¾ß ÇßµíÀÌ) »ê¹®(prose)À¸·Î Ç¥ÇöÇÑ´Ù°í Çؼ­ ÀбⰡ ´õ ½¬¿öÁöÁö´Â ¾ÊÀ» °ÍÀÌ´Ù. ±× ³í¹®Àº Ã¥¸¸Å­ µÎ²¨¿öÁú °ÍÀ̱⠶§¹®ÀÌ´Ù.

8. ¾î´À ¹üÀ§±îÁö?

¸¹Àº »ç¶÷µéÀÌ '°£°áÇÔ = Èû'À̶ó´Â »ý°¢À» ¹«½ÃÇØ ¿Ô´Ù. ³ª´Â ´Ü¼øÈ÷ ÀÌ µÑÀÌ °°ÀºÁö ¾Æ´ÑÁö ³íÀïÇÏ´Â °Íº¸´Ù´Â, ¾î´À ¹üÀ§±îÁö '°£°áÇÔ = Èû'ÀÎÁö ¹¯´Â °ÍÀÌ ´õ À¯¿ëÇÒ °ÍÀ̶ó°í »ý°¢ÇÑ´Ù. ºÐ¸íÈ÷ °£°áÇÔÀº °í±Þ ¾ð¾îµéÀÌ ÁöÇâÇÏ´Â ¹ÙÀÇ ¸¹Àº ºÎºÐÀ» Â÷ÁöÇϱ⠶§¹®ÀÌ´Ù. °£°áÇÔÀÌ ¾ð¾îµéÀÌ ÁöÇâÇÏ´Â ÀüºÎ°¡ ¾Æ´Ï¶ó¸é, ±× ³ª¸ÓÁö´Â ¹«¾ùÀ̸ç, ±×·± ´Ù¸¥ ±â´ÉµéÀº »ó´ëÀûÀ¸·Î ¾ó¸¶³ª Áß¿äÇÑ°¡?

ÀÌ°ÍÀ» Á¦¾ÈÇÏ´Â °ÍÀº ´ÜÁö ³íÀïÀ» ´õ ±³¾ç ÀÖ°Ô ÇÏ·Á´Â °ÍÀÌ ¾Æ´Ï´Ù. ³ª´Â Á¤¸»·Î ±× ´äÀ» ¾Ë°í ½Í´Ù. ¾î¶² ¾ð¾î°¡ ±× ÀÚü¿¡ µæÀÌ µÇ´Â °Íµµ ¾øÀÌ Áö³ªÄ¡°Ô °£°áÇØ º» ÀûÀÌ Á¤¸» ÀÖ¾ú´Â°¡?

óÀ½¿¡ ¼¼¿î °¡¼³¿¡¼­ ³ª´Â ƯÀÌÇÑ(pathological) »ç·ÊµéÀ» Á¦¿ÜÇÑ´Ù¸é °£°áÇÔÀÌ Èû°ú µ¿ÀÏÇÑ °ÍÀ¸·Î °£ÁÖÇصµ µÉ °ÍÀ̶ó°í »ý°¢Çß´Ù. ÀÌ ¸»Àº, ¾î´À ´©°¡ ¼³°èÇÒ ¾î¶°ÇÑ ¾ð¾î¿¡¼­µµ ÀÌ µÑÀº µ¿ÀÏÇÒ °ÍÀÌÁö¸¸, ´©±º°¡°¡ ÀÌ °¡¼³À» ¸í¹éÈ÷ ¹ÝÁõÇϱâ À§ÇØ ¾î¶² ¾ð¾î¸¦ ¼³°èÇÏ°í ½Í´Ù¸é ¾Æ¸¶ ±×·¸°Ô ÇÒ ¼öµµ ÀÖÀ» °ÍÀ̶ó´Â ¶æÀ̾ú´Ù. ÇÏÁö¸¸ ±×·² ¼ö ÀÖ´Ù°í´Â »ç½Ç ¹ÏÁö ¾Ê´Â´Ù.

9. ÇÁ·Î±×·¥ÀÌ ¾Æ´Ï¶ó ¾ð¾î

¿ì¸®´Â °³º° ÇÁ·Î±×·¥ÀÌ ¾Æ´Ï¶ó ¾ð¾îÀÇ °£°áÇÔ¿¡ ´ëÇØ À̾߱âÇÏ°í ÀÖ´Ù´Â °ÍÀ» ºÐ¸íÈ÷ ÇÒ ÇÊ¿ä°¡ ÀÖ´Ù. °³º° ÇÁ·Î±×·¥µéÀ» ´Ü´ÜÈ÷ ¾ÐÃàÇؼ­ ¸¸µå´Â °ÍÀº Ʋ¸²¾øÀÌ °¡´ÉÇÏ´Ù.

³ª´Â ÀÌ Á¡¿¡ ´ëÇØ "On Lisp"¿¡ ¾´ ¹Ù ÀÖ´Ù. º¹ÀâÇÑ ¸ÅÅ©·Î(macro)´Â ±× ÀÚüÀÇ ±æÀ̵µ ÁÙÀÇ Æø¿¡ ¸ÂÃç ¿©·¯ ¹ø ÁÙ¿© Áà¾ß ÇÒ °ÍÀÌ´Ù. Áö±Ý ¸¸µç ¾î¶² ÅÓ¼ö·èÇÑ ¸ÅÅ©·Î¸¦ »ç¿ëÇÒ ¶§¸¶´Ù ÄÚµå ¿­ ÁÙÀ» ÁÙÀÏ ¼ö Àִµ¥, ±× ¸ÅÅ©·Î ÀÚü°¡ ÄÚµå ¿­ ÁÙÀ» Â÷ÁöÇÑ´Ù¸é, ±× ¸ÅÅ©·Î¸¦ µÎ ¹ø ÀÌ»ó »ç¿ëÇØ¾ß ÃÑÇÕÀûÀ¸·Î ÁÙ ¼ö¸¦ ¾Æ³¢´Â °ÍÀÌ µÉ °ÍÀÌ´Ù. ÇÏÁö¸¸ ºñ·Ï ±×·¸´Ù Çصµ ÀÌ°ÍÀº ÁÁÀº ¼ö°¡ ¾Æ´Ï´Ù. ¸ÅÅ©·Î Á¤ÀÇ´Â ÀÏ¹Ý Äڵ庸´Ù ´õ Àб⠾î·Æ±â ¶§¹®ÀÌ´Ù. °¡µ¶¼º¿¡¼­ ÃÑÇÕÀÇ Çâ»óÀ» ¾ò±â Àü¿¡ ÀÌ¹Ì ±× ¸ÅÅ©·Î¸¦ ¿­ ¹ø¿¡¼­ ½º¹« ¹øÀº ½á¾ß ÇÒ °ÍÀÌ´Ù.

¸ðµç ¾ð¾îµé¿¡´Â ÀÌ·± ½ÄÀ¸·Î ±ÕÇüÀ» ¸ÂÃß´Â ¹æ¹ýÀÌ ÀÖÀ» °ÍÀ̶ó°í È®½ÅÇÑ´Ù. (¾ð¾î°¡ °­·ÂÇÒ¼ö·Ï µû³¾ ¼ö ÀÖ´Â °Íµµ ´õ ¸¹¾ÆÁöÁö ¾Ê°Ú´Â°¡ ÇÏ´Â ÀǽÉÀÌ µé±âµµ ÇÑ´Ù.) ÇÁ·Î±×·¡¸Ó¶ó¸é ¾î¶² ¶È¶ÈÇÑ »ç¶÷ÀÌ ¼ö»ó½Àº ÇÁ·Î±×·¡¹Ö ±â¹ýÀ» ½á¼­ ±Øµµ·Î ª°Ô ¸¸µé¾î ³õÀº Äڵ带 º» ÀûÀÌ ÀÖÀ» °ÍÀÌ´Ù.

ÀÌÁ¦ ÀÌ Á¡¿¡ ´ëÇؼ­´Â ´õ ÀÌ»ó ³íÀïÀÌ ¾øÀ» °ÍÀÌ´Ù. ÃÖ¼ÒÇÑ ³»°¡ ´õ ÇÒ ¸»Àº ¾ø´Ù. °³º° ÇÁ·Î±×·¥µéÀº ±× ÀÚü¿¡ µæÀÌ µÇ´Â °Íµµ ¾øÀÌ Áö³ªÄ¡°Ô °£°áÇØÁú ¼öµµ ÀÖ´Ù. ¿©±â¼­ Áú¹®Àº, ¾ð¾îµµ ±×·² ¼ö Àִ°¡ÀÌ´Ù. ¾ð¾î°¡ ÇÁ·Î±×·¡¸ÓµéÀ» °­Á¦ÇÏ¿©, ÀüüÀûÀÎ °¡µ¶¼ºÀ» Èñ»ýÇϸ鼭±îÁö (¿ä¼Ò(element)µéÀÌ) ªÀº Äڵ带 ¸¸µé°Ô ÇÒ ¼ö Àִ°¡?

¾î¶² ¾ð¾î°¡ Áö³ªÄ¡°Ô °£°áÇØÁö´Â °ÍÀ» »ó»óÇϱ⠾î·Á¿î ÇÑ °¡Áö ÀÌÀ¯´Â, ¾î¶² °ÍÀ» Ç¥ÇöÇÏ´Â °úµµÇÏ°Ô Ãà¾àµÈ ¹æ½ÄÀÌ ÀÖ´Ù¸é, ´õ ±æ°Ô Ç¥ÇöÇÏ´Â ¹æ½Äµµ ÀÖÀ» °ÍÀ̱⠶§¹®ÀÌ´Ù. ¿¹¸¦ µé¾î, ¸®½ºÇÁ ÇÁ·Î±×·¥ÀÌ ¸ÅÅ©·Î³ª °íÂ÷ ÇÔ¼ö(higher-order function)¸¦ ¸¹ÀÌ »ç¿ëÇÏ¿© ³Ê¹« ¾ÐÃàµÈ °Íó·³ º¸Àδٸé, ¿øÇÏ´Â ¹Ù¿¡ µû¶ó ÆĽºÄ®°ú ÇüÅ°¡ ¶È°°°Ô Äڵ带 ÀÛ¼ºÇÒ ¼öµµ ÀÖÀ» °ÍÀÌ´Ù. ¾ÆÅ©(Arc)¿¡¼­ ÆÑÅ丮¾ó(factorial)À» ´ÙÀ½°ú °°Àº °íÂ÷ ÇÔ¼ö È£Ãâ·Î Ç¥ÇöÇÏ°í ½ÍÁö ¾Ê´Ù¸é,

(rec zero 1 * 1-)

´ÙÀ½°ú °°ÀÌ Àç±ÍÀûÀÎ Á¤ÀÇ·Î ÀÛ¼ºÇÒ ¼öµµ ÀÖ´Ù.

(rfn fact (x) (if (zero x) 1 (* x (fact (1- x)))))

¿ªÀÚ ÁÖ: °íÂ÷ ÇÔ¼ö(higher-order function)´Â ÇÔ¼ö¸¦ ÀÎÀÚ·Î ¹Þ°Å³ª °á°ú·Î ¹ÝȯÇÏ´Â ÇÔ¼öÀÌ´Ù. ¾ÆÅ©(Arc)´Â Æú ±×·¹À̾öÀÌ ¸®½ºÇÁ¸¦ ±âÃÊ·Î »õ·Ó°Ô ¼³°èÇØ °¡°í ÀÖ´Â ÇÁ·Î±×·¡¹Ö ¾ð¾îÀÌ´Ù.

Áö±ÝÀº ¾Æ¹« ¿¹µµ ¸Ó¸®¿¡ ¶°¿À¸£Áö ¾ÊÁö¸¸, ¾î¶² ¾ð¾î°¡ Áö³ªÄ¡°Ô °£°áÇØÁú ¼ö Àִ°¡ÀÇ ¹®Á¦´Â Ç×»ó °ü½ÉÀÌ ÀÖ´Ù. ³­ÇØÇÏ°í ºÒ°¡ÇØÇÑ ¹æ½ÄÀ¸·Î Äڵ带 ÀÛ¼ºÇϵµ·Ï °­¿äÇÏ´Â ¾ð¾î°¡ Àִ°¡? ±×·± ¿¹°¡ ÀÖ´Ù¸é, Á¤¸» °£ÀýÈ÷ ±×°ÍÀ» º¸°í ½Í´Ù.

(Âü°í: ³»°¡ ã°í ÀÖ´Â °ÍÀº ¾Õ¿¡¼­ ¹¦»çÇÑ "¿ä¼Ò"µéÀ̶ó´Â ôµµ¿¡ µû¶ó ¸Å¿ì ¾ÐÃàµÈ ÇÁ·Î±×·¥ÀÌÁö, ´Ü¼øÈ÷ ±¸ºÐÀÚ¸¦ »ý·«ÇÒ ¼ö Àְųª ¸ðµç À̸§ÀÌ ÇÑ ±ÛÀÚ·Î µÇ¾î À־ ªÀº ÇÁ·Î±×·¥ÀÌ ¾Æ´Ï´Ù.)

ID
Password
Join
His heart was yours from the first moment that you met.


sponsored by andamiro
sponsored by cdnetworks
sponsored by HP

Valid XHTML 1.0! Valid CSS! powered by MoniWiki
last modified 2004-12-15 07:47:48
Processing time 0.0068 sec