ÀÌ ÆäÀÌÁö´Â ȣȯ¼ºÀ» À§ÇØ ³²°ÜÁ³½À´Ï´Ù. [À̰÷ À¸·Î À̵¿]ÇØÁÖ¼¼¿ä.

2004³â 12¿ù 15ÀÏ 수요일

the script language, Lua

Programming

 ³»°¡ ³Ê¹« À̳ðÀ» °ú¼ÒÆò°¡Çß³ª, -_ -;

 ÇöÀç lua´Â ¹öÀüÀÌ 5.x´ë´Ù. ±×·¸´Ù°í´Â ÇØµµ ÀÌÀü±îÁö ³»°¡ Lua¿¡ ´ëÇØ °®°í ÀÖ´ø »ý°¢Àº "±×Àú, ÈçÇϰí ÈçÇÑ ±â´ÉÀÌ Á» ¶³¾îÁö´Â °ÔÀÓ¿¡ ½ºÅ©¸³Æ®¿£ÁøÀ¸·Î ÀÚÁÖ ¾²ÀÌ´Â ¾ð¾î" À̾ú´Ù. À̰ÍÀº ¸îÀÏÀü¿¡ ´Ù¿î·Îµå ¹Þ¾ÒÀ»¶§ ¼Ò½ºÆÄÀÏÇüÅ·ΠÁ¦°øµÇ°í, msvc ÇÁ·ÎÁ§Æ® ÆÄÀϵµ Á¦°øµÇÁö ¾Ê°í ±×³É "install" ¹®¼­ÆÄÀÏ¿¡ ÀÌ·¯ÀÌ·¯ÇÑ ÆÄÀϵéÀ» ¹­¾î¼­ ¶óÀ̺귯¸®¸¦ ¸¸µé°í ¸µÅ©Çؼ­ ÀÎÅÍÇÁ¸®ÅÍ¿Í ÄÄÆÄÀÏ·¯¸¦ ¸¸µé¶ó°í µÇ¾îÀÖ´Â ºÎ½ÇÇÏ´Ù°í »ý°¢ÇÒ¼ö ÀÖ´Â °ÍÀ» º»°Íµµ ÀÌ·¯ÇÑ ³» Lua¿¡ ´ëÇÑ ¹è°æ¿¡ ÈûÀ» ´õÇØ ÁÖ¾ú°í, ÀÎÅÍÇÁ¸®Å͸¸ Æ÷ÇÔÇÑ´Ù¸é ¼Ò½ºÆÄÀϵµ °Ü¿ì(?) ÁÖ¼®À» Æ÷ÇÔÇÏ¿© 25¸¸¹ÙÀÌÆ®¹Û¿¡ µÇÁö ¾ÊÀº ³ª¿¡°Ô Lua¿¡ ´ëÇØ °ú¼ÒÆò°¡¸¦ ÇÏÁö ¾ÊÀ» ¼ö ¾ø°Ô ²û ¸¸µé¾ú´Ù.

 ±×·±µ¥, ÀÌ ½ºÅ©¸³Æ® ¾ð¾îÀÇ °ø½Ä µµÅ¥¸ÕÆ®, offline¿¡¼­ ÆÈ¸±»Ó ¾Æ´Ï¶ó, ¿Â¶óÀÎ ÇüÅ·ΠÀÎÅͳݿ¡¼­ Á¦°øµÇ´Â, ¸¦ º¸¸é¼­ ³» »ý°¢Àº ¼­¼­È÷ ¹Ù²î±â ½ÃÀÛÇÏ¿´´Ù. ¹¹ ±×·¡ºÃÀÚ ¾ÆÁ÷ ÀÌ ¾ð¾î¿¡ ´ëÇØ ÀÚ¼¼È÷ ¾Ë°ÔµÈ°Ô ¸î½Ã°£µµ Áö³ªÁö ¾Ê¾ÒÁö¸¸, ³Ê¹« ¸·°­Çϰí flexibleÀÌ ¹ºÁö¸¦ ³ª¿¡°Ô º¸¿©Áá´Ù. ¹°·Ð, ´Ù¸¥ ½ºÅ©¸³Æ® ¾ð¾î¿¡¼­µµ ´ëºÎºÐ Áö¿øÇϰÚÁö¸¸, ÀÏ´Ü ¿©·¯°¡Áö Àǹ̷Π°´Ã¼ ÁöÇâ ÇÁ·Î±×·¡¹ÖÀÌ °¡´ÉÇϰí, ³Ê¹«³ª ÀÚÀ¯ÀÚÀç´Ù. °Ü¿ì ÁÖ¼®ÀÌ Æ÷ÇÔµÈ 25¸¸ ¹ÙÀÌÆ®(lineÀÌ ¾Æ´Ô!)Â¥¸® ½ºÅ©¸³Æ®¾ð¾î¿¡¼­ ¿ÀÆÛ·¹ÀÌÅÍ ¿À¹ö·ÎµùÀÌ °¡´ÉÇϰí, coroutine, ±âŸ ´Ù ¼³¸íÇϱ⠾î·Á¿î ¸¹Àº ºÎºÐÀÌ ³ª¸¦ °¨µ¿½ÃÄ×´Ù.

 ±â²¯ÇØ¾ß 98³âÂë ½ÃÀÛÇÑÁپ˾Ҵµ¥ ¾Ë°Ô ¸ð¸£°Ô 93³â¿¡ óÀ½ ¸¸µé¾îÁø ¾ð¾î¶ó´Ï :) Lua¿¡ ´ëÇØ Creator°¡ Á÷Á¢¾´ ¹®¼­¸¦ Àо´Ï Creator°¡ ¾ð¾îÇп¡ »ó´çÈ÷ ±íÀº Á¶¿¹°¡ ÀÖ´Ù´Â °Íµµ ¾Ë°ÔµÇ¾ú´Ù. ÀúÀÚ(µé)¿¡ ´ëÇØ Àá±ñ µÞÁ¶»ç¸¦ ÇØº¸´Ï, ºê¶óÁúÀÇ  PUC-Rio ¶ó´Â ´ëÇÐÀÇ Á¶±³¼ö´Ù. :)

 ÀÏ´Ü ¾ð¾î¿¡¼­ built-in typeÀº µü ¼¼°¡Áö´Ù. number, string, table. ¸ðµç ±âŸ ÀڷᱸÁ¶´Â table·Î ´Ù ±¸ÇöÇÑ´Ù. :) lambda ÇÔ¼öµµ Áö¿øÇϰí,

    co = coroutine.create( function ()
           print("co", coroutine.yield());
         end);
    coroutine.resume(co);
    coroutine.resume(co, 4, 5);

 coroutineÀ» ÀÌ¿ëÇÏ°í °®Àº ÀÌ»óÇÑ ÁþµéÀ» ´ÙÇϰí, ½ºÅ©¸³Æ®¶ó¸é ´ç¿¬È÷ °¡Á®¾ßÇÒ °ÍÀ̰ÚÁö¸¸, interpret ¾ð¾î¸¦ ¿À·§¸¸¿¡ »ç¿ëÇÏ´Ùº¸´Ï ³Ê¹« ¹Ý°©°í-_ -ÁöÀû À¯Èñ¸¦ ³ª¿¡°Ô ÁÖ±â ÃæºÐÇß´Ù.

 the key feature of corutine is their ability to turn upside-down the relationship between caller and callee.

Àλó ±íÀº ±¸Àý & ±â´É.

ÇÔ¼ö³»¿¡¼­ ´Ù¸¥ÇÔ¼ö¸¦ È£ÃâÇÒ¶§ ÀϹÝÀûÀ¸·Î ÄÄÆÄÀÏ·¯´Â, ½ºÅÃÀ» ÇöÀç ÇÔ¼öÀÇ Á¤º¸¸¦ ÀúÀåÇϱâÀ§ÇØ Áö±ÝÀÇ ½ºÅÃÀ» ±×´ë·ÎµÎ°í ½ºÅÿ¡ ÇÊ¿äÇÑ Á¤º¸¸¦ ÀúÀåÇÏ°í »õ·ÎÈÆ¿î ÇÔ¼ö¿¡¼­ ÀÏÁ¤ÇÑ ½ºÅÃÀ» ´Ù½Ã Àâ¾Æ »ç¿ëÇÑ´Ù. ÀϹÝÀûÀ¸·Î ¹«ºÐº°ÇÑ recursive¸¦ »ç¿ëÇÒ¶§, ÀÌ·¯ÇÑ ÀÌÀ¯·Î stack overflow°¡ ³ª°ïÇÑ´Ù. "proper tail calls" À̶õ, ÇÔ¼ö¿¡¼­ ´Ù¸¥ ÇÔ¼ö¸¦ È£ÃâÇÒ¶§, ´õÀÌ»ó ÇöÀç ÇÔ¼öÀÇ ½ºÅÃÀ» À¯ÁöÇÒ Çʿ並 ´À³¢Áö ¸øÇÏ¸é ½ºÅÃÀ» Á¤¸®ÇÏ°í »õ·Î¿î ÇÔ¼ö°¡ ±× À§Ä¡ÀÇ ½ºÅÃÀ» »ç¿ëÇÏ´Â °ÍÀ» ÀǹÌÇÑ´Ù. ¿¹¸¦ µé¾îº¸¸é,

function f(x)
    return f(x+1);
end;

 À§ÀÇ ÇÔ¼ö f¿¡¼­ Àç±ÍÀûÀ¸·Î f(x+1)¸¦ È£ÃâÇÒ¶§ »ç½Ç ÇöÀç ÇÔ¼ö´Â ´õÀÌ»ó Á¸ÀçÇÒ Çʿ䰡 ¾ø°ÔµÈ´Ù. µû¶ó¼­ ¿©±â¼­ proper tail callÀÌ Àû¿ëµÈ´Ù. ±×·¯¹Ç·Î ÀÌ Àç±ÍÇÔ¼ö´Â Àû¾îµµ stack overflow´Â ÀϾÁö ¾Ê´Â´Ù. -_ -; ÀÌ·¯ÇÑ ±â´ÉÀÌ lua¿¡ Àû¿ëÀÌ µÇ¾ú´Ù°í ÇÑ´Ù. °©ÀÚ±â vc++¿¡¼­ ÀÌ·¯ÇÑ ÃÖÀûÈ­°¡ ÀÖ´ÂÁö ±Ã±ÝÇØÁ³´Ù. ÇÏÁö¸¸ ¾îµð¿¡¼­ °ü·Ã Á¤º¸¸¦ ã¾Æº¼¼ö°¡ ¾ø´Ù. ±×·±µ¥ ÀÌ·¸°Ô ÇÏ¸é ¹®Á¦°¡ µð¹ö±ëÀ» ÇÒ¶§, call_stackÀ» ÀÚÁÖ »ìÆìº¸´Âµ¥, À½... ¾îÂ÷ÇÇ release¿¡¼­¸¸ ÃÖÀûÈ­°¡ ÀϾ¸é µÇ´Â°É±î. Àá½Ã »ý°¢Çغ¸´Ï vc++¿¡¼­ ÀÌ·¯ÇÑ ÃÖÀûÈ­¸¦ ¾ÈÇßÀ» ÀÌÀ¯°¡ ¾ø´Ù°í »ý°¢µÈ´Ù.

 Àâ´ãÀÌ ³Ê¹« ±æ¾îÁ³´Ù. °á·ÐÀº "Lua is the one script language for me". óÀ½¿¡ »ç½Ç pythonÀ» ÇÁ·Î±×·¥¿¡ ÀÓº£µùÇØ¼­ »ç¿ëÇÏ·Á°í Çߴµ¥, (¿¹ÀüºÎÅÍ pythonÀ» Á¶±Ý ÁÁ¾ÆÇϱäÇß´Ù. Áý¿¡µµ ¹«·Á ¿À·¡Àü¿¡ Á÷Á¢ ±¸ÀÔÇÑ Ã¥ÀÌ ÇÑ±Ç Á¸ÀçÇÑ´Ù!)  ¿µ embedding°ü·Ã api ·¹ÆÛ·±½º°¡ ÀÌ»óÇØ¼­ Æ÷±âÇß´Ù!

ps. ¿ÏÀüÈ÷ Ⱦ¼³¼ö¼³ Lua¿¡ ´ëÇÑ ±ØÂùÀÌ ´ã±ä ±ä "Àâ´ã"±ÛÀÌ µÇ¾ú´Ù.
ps. (function () this.body = nil; end)();

ÂüÁ¶URL: 

»ç¿ëµÈ À¯¸íÇÑ ÇÁ·ÎÁ§Æ®:

  • ¹ß´õ½º°ÔÀÌÆ®
  • Ȩ¿ùµå2
  • ¿ùµå ¿Àºê ¿öÅ©·¡ÇÁÆ®

±Û¾´ÀÌ: icedac | ³¯Â¥: 17:50 | Æ®·¢¹é (0)

Æ®·¢¹é

TrackBack URL :
closed.

Ä¿¸àÆ®


ari

Tail recursion¿¡ ´ëÇÑ ÃÖÀûÈ­´Â ÀÌ¹Ì °ÅÀÇ ¸ðµç ¾ð¾î¿¡¼­ ±âº»ÀûÀ¸·Î Áö¿øÇϰí ÀÖ½À´Ï´Ù. VC++µµ ¹°·ÐÀ̱¸¿ä.

2004-12-15
09:09:09

« ÀÌÀü ÆäÀÌÁö       ´ÙÀ½ ÆäÀÌÁö »
Powered by
Movable Type 2.63