· 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
You will gain money by a speculation or lottery.


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.0066 sec