ÀÌ ÆäÀÌÁö´Â ȣȯ¼ºÀ» À§ÇØ ³²°ÜÁ³½À´Ï´Ù. [À̰÷ À¸·Î À̵¿]ÇØÁÖ¼¼¿ä.
2004³â 12¿ù 15ÀÏ 수요일
the script language, Lua
³»°¡ ³Ê¹« À̳ðÀ» °ú¼ÒÆò°¡Çß³ª, -_ -;
ÇöÀç 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:
- Programming in Lua online book - http://www.lua.org/pil/index.html
- Official Site - http://www.lua.org/home.html
- Download Lua 5.0.2 http://www.lua.org/ftp/lua-5.0.2.tar.gz (needs to compile)
»ç¿ëµÈ À¯¸íÇÑ ÇÁ·ÎÁ§Æ®:
- ¹ß´õ½º°ÔÀÌÆ®
- Ȩ¿ùµå2
- ¿ùµå ¿Àºê ¿öÅ©·¡ÇÁÆ®
Æ®·¢¹é
closed.







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