<!DOCTYPE html>
<html class="client-nojs" lang="ru" dir="ltr"><head>
    <meta charset="UTF-8">
    <title>Lua</title>
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <link rel="icon" type="image/png" href="./_res_/favicon.png">
    <link rel="canonical" href="https://ru.wikipedia.org/wiki/Lua"> <link href="./_mw_/ext.cite.styles.css" rel="stylesheet" type="text/css">
    <link href="./_mw_/ext.math.styles.css" rel="stylesheet" type="text/css">
    <link href="./_mw_/ext.pygments.css" rel="stylesheet" type="text/css">
    <link href="./_mw_/skins.vector.styles.legacy.css" rel="stylesheet" type="text/css">
    <meta name="ResourceLoaderDynamicStyles" content="">
    <link href="./_mw_/ext.gadget.common-site.css" rel="stylesheet" type="text/css">
    <link href="./_mw_/ext.gadget.logo.css" rel="stylesheet" type="text/css">
    <link rel="stylesheet" type="text/css" href="./_mw_/site.styles.css">
    <link rel="stylesheet" type="text/css" href="./_mw_/noscript.css">
    <link rel="stylesheet" type="text/css" href="./_res_/footer.css">
    <link rel="stylesheet" type="text/css" href="./_res_/vector.css">
  </head>

  <body class="skin-vector-legacy mediawiki ltr sitedir-ltr mw-hide-empty-elt ns-0 ns-subject page-Lua rootpage-Lua skin-vector action-view">
    <div id="content" class="mw-body" role="main">
      <a id="top"></a>
      <h1 id="firstHeading" class="firstHeading mw-first-heading"><span class="mw-page-title-main">Lua</span></h1>
      <div id="bodyContent" class="vector-body">
        <div id="contentSub">
          <div id="mw-content-subtitle"></div>
        </div>
        <div id="mw-content-text" class="mw-body-content mw-content-ltr" lang="ru" dir="ltr"><div class="mw-content-ltr mw-parser-output" lang="ru" dir="ltr"><div role="note" class="hatnote navigation-not-searchable dabhide">Запрос «Луа» перенаправляется сюда; см. также <a href="%D0%9B%D1%83%D0%B0_(%D0%9F%D1%80%D0%B8%D0%BC%D0%BE%D1%80%D1%81%D0%BA%D0%B0%D1%8F_%D0%A8%D0%B0%D1%80%D0%B0%D0%BD%D1%82%D0%B0)" title="Луа (Приморская Шаранта)">другие значения</a>.</div>
<style data-mw-deduplicate="TemplateStyles:r148513636">
/* start https://ru.wikipedia.org/ */


.mw-parser-output .ambox{align-items:center;border:1px solid var(--border-color-base,#a2a9b1);border-left:10px solid #36c;background:var(--background-color-neutral-subtle,#f8f9fa);box-sizing:border-box;display:flex;margin:0 10%}html body.mediawiki.skin-minerva .mw-parser-output .ambox{border-width:0 0 0 4px}.mw-parser-output .ambox+link+.ambox,.mw-parser-output .ambox+link+style+.ambox,.mw-parser-output .ambox+link+link+.ambox,.mw-parser-output .ambox+.mw-empty-elt+link+.ambox,.mw-parser-output .ambox+.mw-empty-elt+link+style+.ambox,.mw-parser-output .ambox+.mw-empty-elt+link+link+.ambox{margin-top:-1px}html body.mediawiki .mw-parser-output .ambox.mbox-small-left{margin:4px 1em 4px 0;overflow:hidden;width:238px;border-collapse:collapse;font-size:88%;line-height:1.25em}.mw-parser-output .ambox-speedy{border-left:10px solid var(--border-color-error,#b32424);background-color:var(--background-color-error-subtle,#fee7e6)}.mw-parser-output .ambox-delete{border-left:10px solid var(--border-color-error,#b32424)}.mw-parser-output .ambox-content{border-left:10px solid #f28500}.mw-parser-output .ambox-style{border-left:10px solid var(--color-warning,#edab00)}.mw-parser-output .ambox-good{border-left:10px solid #66cc44}.mw-parser-output .ambox-discussion{border-left:10px solid #339966}.mw-parser-output .ambox-merge{border-left:10px solid #9932cc}.mw-parser-output .ambox-move{border-left:10px solid #9932cc}.mw-parser-output .ambox-protection{border-left:10px solid #a2a9b1}.mw-parser-output .ambox .mbox-text{border:none;padding:0.25em 0.5em;width:100%}.mw-parser-output .ambox .mbox-image{border:none;padding:2px 0 2px 0.5em;text-align:center}.mw-parser-output .ambox .mbox-imageright{border:none;padding:2px 0.5em 2px 0;text-align:center}.mw-parser-output .ambox .mbox-empty-cell{border:none;padding:0;width:1px}.mw-parser-output .ambox .mbox-image-div{width:52px}.mw-parser-output .ambox .mbox-textsmall-div{font-size:90%}html.client-js body.skin-minerva .mw-parser-output .mbox-text-span{margin-left:23px!important}@media(max-width:1366px){.mw-parser-output .ambox{margin-left:6%;margin-right:6%}}@media(max-width:719px){.mw-parser-output .ambox{margin-left:0;margin-right:0}}


/* end   https://ru.wikipedia.org/ */
</style>
<table class="infobox infobox-ece1e2398c06e8e5" style="" data-name="Язык программирования"><tbody><tr><th colspan="2" scope="colgroup" class="infobox-above" style="">Lua</th></tr><tr><td colspan="2" class="infobox-image" style=""> <span data-wikidata-claim-id="q207316$4FE9DF6E-949D-4BE8-ACE3-777A7C14DB5E" class="wikidata-claim" data-wikidata-property-id="P154"><span class="wikidata-snak wikidata-main-snak"><span typeof="mw:File/Frameless"><img alt="Изображение логотипа" src="./_assets_/0c70a452f799bfe840676ee341124611/Lua-Logo.svg.png" decoding="async" width="80" height="80" class="mw-file-element" data-file-width="947" data-file-height="947" loading="lazy"></span></span></span> </td></tr>
<tr>
<th scope="row" class="plainlist">Класс языка</th>
<td class="plainlist">
<span data-wikidata-claim-id="Q207316$e0aeaeb1-4d4d-7758-ab0b-5063c0cf18da" class="wikidata-claim" data-wikidata-property-id="P31"><span class="wikidata-snak wikidata-main-snak"><a href="%D0%AF%D0%B7%D1%8B%D0%BA_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D1%8F" title="Язык программирования">язык программирования</a></span></span></td>
</tr>
<tr>
<th scope="row" class="plainlist">Появился в</th>
<td class="plainlist">
<span data-wikidata-claim-id="Q207316$7178d2ca-40cb-8fd3-aac7-e7bf39acbfbb" class="wikidata-claim" data-wikidata-property-id="P571"><span class="wikidata-snak wikidata-main-snak"><span class="nowrap"><a href="1993_%D0%B3%D0%BE%D0%B4" title="1993 год">1993</a></span></span><sup id="cite_ref-_4c79a8b56e7ac852_3-0" class="reference"><a href="#cite_note-_4c79a8b56e7ac852-3"><span class="cite-bracket">[</span>3<span class="cite-bracket">]</span></a></sup></span></td>
</tr>
<tr>
<th scope="row" class="plainlist">Автор</th>
<td class="plainlist">
<span data-wikidata-property-id="P287" class="no-wikidata"><a href="%D0%98%D0%B5%D1%80%D1%83%D0%B7%D0%B0%D0%BB%D0%B8%D0%BC%D1%81%D0%BA%D0%B8%2C_%D0%A0%D0%BE%D0%B1%D0%B5%D1%80%D1%82%D1%83" title="Иерузалимски, Роберту">Роберту Иерузалимски</a>, <br>Валдемар Селиш, <br>Луиш Энрике ди Фигейреду</span></td>
</tr>
<tr>
<th scope="row" class="plainlist">Разработчик</th>
<td class="plainlist">
<span data-wikidata-claim-id="Q207316$9e31c026-4f03-ac50-f599-6ca9fb15e90f" class="wikidata-claim" data-wikidata-property-id="P178"><span class="wikidata-snak wikidata-main-snak"><a href="%D0%98%D0%B5%D1%80%D1%83%D0%B7%D0%B0%D0%BB%D0%B8%D0%BC%D1%81%D0%BA%D0%B8%2C_%D0%A0%D0%BE%D0%B1%D0%B5%D1%80%D1%82%D1%83" title="Иерузалимски, Роберту">Роберту Иерузалимски</a></span><sup id="cite_ref-_60f51cf5d8eca27b_1-1" class="reference"><a href="#cite_note-_60f51cf5d8eca27b-1"><span class="cite-bracket">[</span>1<span class="cite-bracket">]</span></a></sup></span></td>
</tr>
<tr>
<th scope="row" class="plainlist"><a href="%D0%A0%D0%B0%D1%81%D1%88%D0%B8%D1%80%D0%B5%D0%BD%D0%B8%D0%B5_%D0%B8%D0%BC%D0%B5%D0%BD%D0%B8_%D1%84%D0%B0%D0%B9%D0%BB%D0%B0" title="Расширение имени файла">Расширение</a> файлов</th>
<td class="plainlist">
<span data-wikidata-claim-id="Q207316$667d7041-43ff-54fe-fb4f-e2c64fc10c03" class="wikidata-claim" data-wikidata-property-id="P1195"><span class="wikidata-snak wikidata-main-snak"><code>.lua</code></span><sup id="cite_ref-_f6794e01c978dae3_4-0" class="reference"><a href="#cite_note-_f6794e01c978dae3-4"><span class="cite-bracket">[</span>4<span class="cite-bracket">]</span></a></sup><sup id="cite_ref-_0e36914d50f06bfa_5-0" class="reference"><a href="#cite_note-_0e36914d50f06bfa-5"><span class="cite-bracket">[</span>5<span class="cite-bracket">]</span></a></sup></span>, <span data-wikidata-claim-id="Q207316$b18151c4-4d98-ea5c-3d75-05a832e70087" class="wikidata-claim" data-wikidata-property-id="P1195"><span class="wikidata-snak wikidata-main-snak"><code>.luna</code></span></span>, <span data-wikidata-claim-id="Q207316$955436aa-4ba1-6aff-40e4-987340301b30" class="wikidata-claim" data-wikidata-property-id="P1195"><span class="wikidata-snak wikidata-main-snak"><code>.lunaire</code></span></span> или <span data-wikidata-claim-id="Q207316$2e407a28-449f-2d02-74b4-fe6c1770aa07" class="wikidata-claim" data-wikidata-property-id="P1195"><span class="wikidata-snak wikidata-main-snak"><code>.anair</code></span></span></td>
</tr>
<tr>
<th scope="row" class="plainlist"><a href="%D0%A1%D1%82%D0%B0%D0%B4%D0%B8%D0%B8_%D1%80%D0%B0%D0%B7%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D0%BA%D0%B8_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%BD%D0%BE%D0%B3%D0%BE_%D0%BE%D0%B1%D0%B5%D1%81%D0%BF%D0%B5%D1%87%D0%B5%D0%BD%D0%B8%D1%8F" title="Стадии разработки программного обеспечения">Выпуск</a></th>
<td class="plainlist">
<span data-wikidata-property-id="P348" class="no-wikidata"><ul><li><span class="wikidata-claim" data-wikidata-property-id="P348" data-wikidata-claim-id="Q207316$ebbe9d79-4e90-fc4f-136b-6d4332ed36ca"><span class="wikidata-snak wikidata-main-snak">5.5</span> (<span data-wikidata-hash="fedfe19de2b0fd2135de508a54da4bdb1ef9d000" class="wikidata-snak"><span class="nowrap"><a href="22_%D0%B4%D0%B5%D0%BA%D0%B0%D0%B1%D1%80%D1%8F" title="22 декабря">22 декабря</a> <a href="2025_%D0%B3%D0%BE%D0%B4" title="2025 год">2025</a></span></span>)<sup id="cite_ref-_035fee4e911e47ab_2-0" class="reference"><a href="#cite_note-_035fee4e911e47ab-2"><span class="cite-bracket">[</span>2<span class="cite-bracket">]</span></a></sup></span></li></ul></span></td>
</tr>
<tr>
<th scope="row" class="plainlist">Испытал влияние</th>
<td class="plainlist">
<span data-wikidata-claim-id="Q207316$0652b988-4274-129f-61b6-132749e8056c" class="wikidata-claim" data-wikidata-property-id="P737"><span class="wikidata-snak wikidata-main-snak"><a href="C%2B%2B" title="C++"><span lang="C++">C++</span></a></span></span>, <span data-wikidata-claim-id="Q207316$045f4d4f-4cba-7174-0080-47215fc62fff" class="wikidata-claim" data-wikidata-property-id="P737"><span class="wikidata-snak wikidata-main-snak"><a href="%D0%9A%D0%BB%D1%83" title="Клу">Клу</a></span></span>, <span data-wikidata-claim-id="Q207316$49b8bab2-4a0b-c97f-f835-2b75f7d4b82e" class="wikidata-claim" data-wikidata-property-id="P737"><span class="wikidata-snak wikidata-main-snak"><span lang="en"><style data-mw-deduplicate="TemplateStyles:r138326222">
/* start https://ru.wikipedia.org/ */


.mw-parser-output .ts-Wikidata-redLink a{background:none;padding:0}.mw-parser-output .ts-Wikidata-redLink a.external{color:#ba0000;color:var(--color-link-red,#ba0000)}.mw-parser-output .ts-Wikidata-redLink a.external:visited{color:#a55858;color:var(--color-link-red--visited,#a55858)}


/* end   https://ru.wikipedia.org/ */
</style><span class="ts-Wikidata-redLink "><a class="external text" href="https://ru.wikipedia.org/w/index.php?title=Simple_Object_Language&amp;action=edit&amp;editintro=T:Нет_статьи/editintro&amp;preload=T:Нет_статьи/preload&amp;preloadparams%5B%5D=Q15712808&amp;preloadparams%5B%5D=Simple+Object+Language&amp;preloadparams%5B%5D=%D0%A3%D0%BD%D0%B8%D0%B2%D0%B5%D1%80%D1%81%D0%B0%D0%BB%D1%8C%D0%BD%D0%B0%D1%8F+%D0%BA%D0%B0%D1%80%D1%82%D0%BE%D1%87%D0%BA%D0%B0">Simple Object Language</a></span></span></span></span>, <span data-wikidata-claim-id="Q207316$6953cde4-42dc-e4c6-f604-c69126ec65c6" class="wikidata-claim" data-wikidata-property-id="P737"><span class="wikidata-snak wikidata-main-snak">DEL</span></span>, <span data-wikidata-claim-id="Q207316$3A9DED30-D22E-4415-87FF-30D28E6D7FF0" class="wikidata-claim" data-wikidata-property-id="P737"><span class="wikidata-snak wikidata-main-snak"><a href="%D0%A1%D0%BD%D0%BE%D0%B1%D0%BE%D0%BB" title="Снобол">Снобол</a></span></span>, <span data-wikidata-claim-id="Q207316$83D3D0F3-5A16-45C8-BCEE-CFC17F515511" class="wikidata-claim" data-wikidata-property-id="P737"><span class="wikidata-snak wikidata-main-snak"><a href="%D0%9C%D0%BE%D0%B4%D1%83%D0%BB%D0%B0" title="Модула">Модула</a></span></span>, <span data-wikidata-claim-id="Q207316$e590ab7d-3103-40c1-89b6-3537a27eb1be" class="wikidata-claim" data-wikidata-property-id="P737"><span class="wikidata-snak wikidata-main-snak"><a href="%D0%9C%D0%BE%D0%B4%D1%83%D0%BB%D0%B0-2" title="Модула-2">Модула-2</a></span></span> и <span data-wikidata-claim-id="Q207316$5a164415-90f4-476f-bad3-4bcec188be08" class="wikidata-claim" data-wikidata-property-id="P737"><span class="wikidata-snak wikidata-main-snak"><a href="Scheme" title="Scheme"><span lang="Scheme">Scheme</span></a></span></span></td>
</tr>
<tr>
<th scope="row" class="plainlist"><a href="%D0%9B%D0%B8%D1%86%D0%B5%D0%BD%D0%B7%D0%B8%D1%8F_%D0%BD%D0%B0_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%BD%D0%BE%D0%B5_%D0%BE%D0%B1%D0%B5%D1%81%D0%BF%D0%B5%D1%87%D0%B5%D0%BD%D0%B8%D0%B5" title="Лицензия на программное обеспечение">Лицензия</a></th>
<td class="plainlist">
<span data-wikidata-claim-id="Q207316$ec7332a8-4b4c-97eb-6d98-bde0f8f92536" class="wikidata-claim" data-wikidata-property-id="P275"><span class="wikidata-snak wikidata-main-snak"><a href="%D0%9B%D0%B8%D1%86%D0%B5%D0%BD%D0%B7%D0%B8%D1%8F_MIT" title="Лицензия MIT">лицензия MIT</a></span><sup id="cite_ref-_a620648b3c13f85d_6-0" class="reference"><a href="#cite_note-_a620648b3c13f85d-6"><span class="cite-bracket">[</span>6<span class="cite-bracket">]</span></a></sup><sup id="cite_ref-_f99e1aaed0cb6e18_7-0" class="reference"><a href="#cite_note-_f99e1aaed0cb6e18-7"><span class="cite-bracket">[</span>7<span class="cite-bracket">]</span></a></sup></span></td>
</tr>
<tr>
<th scope="row" class="plainlist">Сайт</th>
<td class="plainlist">
<span data-wikidata-claim-id="Q207316$A982B375-0317-4344-9C25-D1255265631A" class="wikidata-claim" data-wikidata-property-id="P856"><span class="wikidata-snak wikidata-main-snak"><a rel="nofollow" class="external text" href="https://www.lua.org/">lua.org</a>&nbsp;<span class="ref-info" title="на английском языке" style="cursor:help;">(англ.)</span></span></span><br><span data-wikidata-claim-id="Q207316$e33bcfd2-4974-fa3e-b04c-6ca9605168f8" class="wikidata-claim" data-wikidata-property-id="P856"><span class="wikidata-snak wikidata-main-snak"><a rel="nofollow" class="external text" href="https://www.lua.org/portugues.html">lua.org/portugues…</a>&nbsp;<span class="ref-info" title="на португальском языке" style="cursor:help;">(порт.)</span></span></span></td>
</tr>
<tr>
<th scope="row" class="plainlist"><a href="%D0%9E%D0%BF%D0%B5%D1%80%D0%B0%D1%86%D0%B8%D0%BE%D0%BD%D0%BD%D0%B0%D1%8F_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D0%B0" title="Операционная система">ОС</a></th>
<td class="plainlist">
<span data-wikidata-claim-id="Q207316$7e6da60d-4641-13dc-5f27-4930fe3d65d3" class="wikidata-claim" data-wikidata-property-id="P306"><span class="wikidata-snak wikidata-main-snak"><a href="%D0%9A%D1%80%D0%BE%D1%81%D1%81%D0%BF%D0%BB%D0%B0%D1%82%D1%84%D0%BE%D1%80%D0%BC%D0%B5%D0%BD%D0%BD%D0%BE%D1%81%D1%82%D1%8C" title="Кроссплатформенность">кроссплатформенность</a></span><sup id="cite_ref-_f2c6299e60c63ba9_8-0" class="reference"><a href="#cite_note-_f2c6299e60c63ba9-8"><span class="cite-bracket">[</span>8<span class="cite-bracket">]</span></a></sup></span></td>
</tr><tr><td colspan="2" class="infobox-below" style=";"><span data-wikidata-claim-id="Q207316$30d51a88-4550-84d1-98ef-d008829a68b3" class="wikidata-claim" data-wikidata-property-id="P373"><span class="wikidata-snak wikidata-main-snak"><span typeof="mw:File"><a href="https://commons.wikimedia.org/wiki/Category:Lua_(programming_language)" title="commons:Category:Lua (programming language)" class="external"><img alt="Логотип Викисклада" src="./_assets_/0c70a452f799bfe840676ee341124611/Commons-logo.svg.png" decoding="async" width="15" height="20" class="mw-file-element" data-file-width="1024" data-file-height="1376" loading="lazy"></a></span>&nbsp;<a href="https://commons.wikimedia.org/wiki/Category:Lua_(programming_language)" class="extiw external" title="commons:Category:Lua (programming language)">Медиафайлы на Викискладе</a></span></span></td></tr>
</tbody></table>
<p><b>Lua</b> (<i>лу́а</i>, с&nbsp;<a href="%D0%9F%D0%BE%D1%80%D1%82%D1%83%D0%B3%D0%B0%D0%BB%D1%8C%D1%81%D0%BA%D0%B8%D0%B9_%D1%8F%D0%B7%D1%8B%D0%BA" title="Португальский язык">порт.</a><span class="nowrap"> —</span> «луна»<sup id="cite_ref-luaabout_9-0" class="reference"><a href="#cite_note-luaabout-9"><span class="cite-bracket">[</span>9<span class="cite-bracket">]</span></a></sup>)&nbsp;— <a href="%D0%A1%D1%86%D0%B5%D0%BD%D0%B0%D1%80%D0%BD%D1%8B%D0%B9_%D1%8F%D0%B7%D1%8B%D0%BA" title="Сценарный язык">скриптовый</a> <a href="%D0%AF%D0%B7%D1%8B%D0%BA_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D1%8F" title="Язык программирования">язык программирования</a>, разработанный в подразделении Tecgraf (<i>Computer Graphics Technology Group</i>) <span data-interwiki-lang="en" data-interwiki-article="Pontifical Catholic University of Rio de Janeiro">Католического университета Рио-де-Жанейро</span> (<a href="%D0%91%D1%80%D0%B0%D0%B7%D0%B8%D0%BB%D0%B8%D1%8F" title="Бразилия">Бразилия</a>). Интерпретатор языка <a href="%D0%A1%D0%B2%D0%BE%D0%B1%D0%BE%D0%B4%D0%BD%D0%BE%D0%B5_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%BD%D0%BE%D0%B5_%D0%BE%D0%B1%D0%B5%D1%81%D0%BF%D0%B5%D1%87%D0%B5%D0%BD%D0%B8%D0%B5" title="Свободное программное обеспечение">свободно распространяется</a> с открытым исходным кодом на <a href="%D0%A1%D0%B8_(%D1%8F%D0%B7%D1%8B%D0%BA_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D1%8F)" title="Си (язык программирования)">языке программирования Си</a>.
</p><p>По идеологии и реализации язык Lua ближе всего к <a href="JavaScript" title="JavaScript">JavaScript</a>, в частности, он также реализует <a href="%D0%9F%D1%80%D0%BE%D1%82%D0%BE%D1%82%D0%B8%D0%BF%D0%BD%D0%BE%D0%B5_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5" title="Прототипное программирование">прототипную</a> модель <a href="%D0%9E%D0%B1%D1%8A%D0%B5%D0%BA%D1%82%D0%BD%D0%BE-%D0%BE%D1%80%D0%B8%D0%B5%D0%BD%D1%82%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%BD%D0%BE%D0%B5_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5" title="Объектно-ориентированное программирование">ООП</a>, но отличается Паскале-подобным синтаксисом и более мощными и гибкими конструкциями. Характерной особенностью Lua является реализация большого числа программных сущностей минимумом синтаксических средств. Так, все составные пользовательские типы данных (<a href="%D0%9C%D0%B0%D1%81%D1%81%D0%B8%D0%B2_(%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5)" class="mw-redirect" title="Массив (программирование)">массивы</a>, <a href="%D0%97%D0%B0%D0%BF%D0%B8%D1%81%D1%8C_(%D1%82%D0%B8%D0%BF_%D0%B4%D0%B0%D0%BD%D0%BD%D1%8B%D1%85)" title="Запись (тип данных)">структуры</a>, <a href="%D0%9C%D0%BD%D0%BE%D0%B6%D0%B5%D1%81%D1%82%D0%B2%D0%BE_(%D1%82%D0%B8%D0%BF_%D0%B4%D0%B0%D0%BD%D0%BD%D1%8B%D1%85)" title="Множество (тип данных)">множества</a>, <a href="%D0%9E%D1%87%D0%B5%D1%80%D0%B5%D0%B4%D1%8C_(%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5)" title="Очередь (программирование)">очереди</a>, <a href="%D0%A1%D0%BF%D0%B8%D1%81%D0%BE%D0%BA_(%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5)" class="mw-redirect" title="Список (программирование)">списки</a>) реализуются через механизм <i>таблиц</i>, а механизмы <a href="%D0%9E%D0%B1%D1%8A%D0%B5%D0%BA%D1%82%D0%BD%D0%BE-%D0%BE%D1%80%D0%B8%D0%B5%D0%BD%D1%82%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%BD%D0%BE%D0%B5_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5" title="Объектно-ориентированное программирование">объектно-ориентированного программирования</a>, включая <a href="%D0%9C%D0%BD%D0%BE%D0%B6%D0%B5%D1%81%D1%82%D0%B2%D0%B5%D0%BD%D0%BD%D0%BE%D0%B5_%D0%BD%D0%B0%D1%81%D0%BB%D0%B5%D0%B4%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5" title="Множественное наследование">множественное наследование</a>&nbsp;— с использованием <i>метатаблиц</i>, которые также отвечают за <a href="%D0%9F%D0%B5%D1%80%D0%B5%D0%B3%D1%80%D1%83%D0%B7%D0%BA%D0%B0_%D0%BE%D0%BF%D0%B5%D1%80%D0%B0%D1%82%D0%BE%D1%80%D0%BE%D0%B2" title="Перегрузка операторов">переопределение операций</a> и ряд других возможностей.
</p><p>Lua предназначен для пользователей, не являющихся профессиональными программистами, вследствие чего большое внимание уделено простоте дизайна и лёгкости обучения. Язык широко используется для создания тиражируемого программного обеспечения (например, на нём написан графический интерфейс пакета <a href="Adobe_Photoshop_Lightroom" title="Adobe Photoshop Lightroom">Adobe Lightroom</a>). Также получил известность как язык программирования уровней и расширений во многих играх<sup id="cite_ref-pollres_10-0" class="reference"><a href="#cite_note-pollres-10"><span class="cite-bracket">[</span>10<span class="cite-bracket">]</span></a></sup>, в том числе <a href="Garry%E2%80%99s_Mod" title="Garry’s Mod">Garry’s Mod</a>, <a href="Minetest" class="mw-redirect" title="Minetest">Luanti</a>, <a href="Factorio" title="Factorio">Factorio</a> и <a href="Roblox_Studio" class="mw-redirect" title="Roblox Studio">Roblox Studio</a>.
</p>

<div class="mw-heading mw-heading2"><h2 id="История"><span id=".D0.98.D1.81.D1.82.D0.BE.D1.80.D0.B8.D1.8F"></span>История</h2></div>
<p>Язык разработан подразделением Tecgraf (группа технологий компьютерной графики), Католического университета Рио-де-Жанейро в Бразилии, история языка ведёт отсчёт с 1993&nbsp;года. Авторы языка&nbsp;— <a href="%D0%98%D0%B5%D1%80%D1%83%D0%B7%D0%B0%D0%BB%D0%B8%D0%BC%D1%81%D0%BA%D0%B8%2C_%D0%A0%D0%BE%D0%B1%D0%B5%D1%80%D1%82%D1%83" title="Иерузалимски, Роберту">Роберту Иерузалимски</a>, Луиш Энрике ди Фигейреду (<i>Luiz Henrique de Figueiredo</i>) и Валдемар Селиш (<i>Waldemar Celes</i>). Lua распространяется свободно, с открытым исходным кодом на <a href="%D0%A1%D0%B8_(%D1%8F%D0%B7%D1%8B%D0%BA_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D1%8F)" title="Си (язык программирования)">языке Си</a>.
</p><p>Как отметил Луиш Энрике ди Фигейреду, Lua&nbsp;— единственный язык программирования, разработанный в <a href="%D0%A0%D0%B0%D0%B7%D0%B2%D0%B8%D0%B2%D0%B0%D1%8E%D1%89%D0%B8%D0%B5%D1%81%D1%8F_%D1%81%D1%82%D1%80%D0%B0%D0%BD%D1%8B" title="Развивающиеся страны">развивающейся стране</a> и получивший всемирное признание, которое, в частности, выразилось в приглашении на конференцию <span data-interwiki-lang="en" data-interwiki-article="HOPL">HOPL</span><sup id="cite_ref-_351cd094b07f2e63_11-0" class="reference"><a href="#cite_note-_351cd094b07f2e63-11"><span class="cite-bracket">[</span>11<span class="cite-bracket">]</span></a></sup>.
</p><p>Историческими родителями языка были языки конфигурирования и описания данных <i>SOL</i> (Simple Object Language) и <i>DEL</i> (Data-Entry Language)<sup id="cite_ref-12" class="reference"><a href="#cite_note-12"><span class="cite-bracket">[</span>12<span class="cite-bracket">]</span></a></sup>, они были независимо разработаны в Tecgraf в 1992—1993&nbsp;годах для добавления некоторой гибкости в два отдельных проекта (оба были интерактивными графическими приложениями для конструкторских нужд в компании <a href="Petrobras" title="Petrobras">Petrobras</a>). В SOL и DEL отсутствовали какие-либо управляющие конструкции, и Petrobras чувствовал растущую необходимость в добавлении к ним полноценного программирования.
</p><p>Как пишет автор языка в <i>The Evolution of Lua</i>:<sup id="cite_ref-_0c20ebd0e307212b_13-0" class="reference"><a href="#cite_note-_0c20ebd0e307212b-13"><span class="cite-bracket">[</span>13<span class="cite-bracket">]</span></a></sup>
</p><p><style data-mw-deduplicate="TemplateStyles:r128273053">
/* start https://ru.wikipedia.org/ */


.mw-parser-output .ts-Начало_цитаты-source{margin:1em 0 0 5%}.mw-parser-output .ts-Начало_цитаты-quote .ts-oq{margin:0 -32px -8px}body.skin-minerva .mw-parser-output .ts-Начало_цитаты-quote .ts-oq{margin-left:0}.mw-parser-output .ts-Начало_цитаты-quote .ts-oq .ts-oq-header.ts-oq-header,.mw-parser-output .ts-Начало_цитаты-quote .ts-oq .ts-oq-content{padding-left:32px;padding-right:1.052632em}.mw-parser-output .ts-Начало_цитаты-quote .ts-oq .ts-oq-content{padding:8px 32px}.mw-parser-output .reference-text .ts-Начало_цитаты-quote{margin:0}


/* end   https://ru.wikipedia.org/ */
</style>
</p>
<blockquote class="ts-Начало_цитаты-quote"><p>
В 1993&nbsp;году единственным реальным претендентом был <a href="Tcl" title="Tcl">Tcl</a>, который был специально создан для встраивания в приложения. Однако у Tcl был непривычный синтаксис, не было хорошей поддержки описания данных, и запускался он только на платформах <a href="Unix" title="Unix">Unix</a>. Мы не рассматривали <a href="%D0%9B%D0%B8%D1%81%D0%BF" title="Лисп">Лисп</a> или <a href="Scheme" title="Scheme">Scheme</a> из-за их недружелюбного синтаксиса. <a href="Python" title="Python">Python</a> был ещё во младенческом возрасте. В атмосфере «сделай сам», которая тогда царила в Tecgraf, было вполне естественно, что мы решили разработать свой собственный скриптовый язык. Из-за того, что большинство пользователей не было профессиональными программистами, языку следовало избегать замысловатого синтаксиса и семантики. Реализация нового языка должна быть легко <a href="%D0%9F%D0%BE%D1%80%D1%82%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%BD%D0%BE%D0%B3%D0%BE_%D0%BE%D0%B1%D0%B5%D1%81%D0%BF%D0%B5%D1%87%D0%B5%D0%BD%D0%B8%D1%8F" title="Портирование программного обеспечения">портируема</a>, так как клиенты Tecgraf имели очень разнообразные платформы. Наконец, поскольку мы ожидали, что другим продуктам Tecgraf также понадобится встроенный скриптовый язык, новый язык должен следовать примеру SOL и предоставляться в виде библиотеки с <a href="%D0%98%D0%BD%D1%82%D0%B5%D1%80%D1%84%D0%B5%D0%B9%D1%81_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D1%8F_%D0%BF%D1%80%D0%B8%D0%BB%D0%BE%D0%B6%D0%B5%D0%BD%D0%B8%D0%B9" class="mw-redirect" title="Интерфейс программирования приложений">API</a> на <a href="%D0%A1%D0%B8_(%D1%8F%D0%B7%D1%8B%D0%BA_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D1%8F)" title="Си (язык программирования)">C</a>.</p></blockquote>
<p>Lua 1.0 была спроектирована таким образом, что конструкторы объектов, тогда чуть отличавшиеся от текущего лёгкого и гибкого стиля, включали в себя синтаксис языка SOL (отсюда название Lua: по-португальски <span lang="pt" style="font-style:italic;">sol</span>&nbsp;— «солнце», <span lang="pt" style="font-style:italic;">lua</span>&nbsp;— «луна»). Управляющие конструкции Lua в основном заимствованы из <a href="%D0%9C%D0%BE%D0%B4%D1%83%D0%BB%D0%B0-2" title="Модула-2">Модулы-2</a> (if, while, repeat/until), хотя на них также повлияли <a href="%D0%9A%D0%BB%D1%83" title="Клу">Клу</a> (<a href="%D0%9F%D0%B0%D1%80%D0%B0%D0%BB%D0%BB%D0%B5%D0%BB%D1%8C%D0%BD%D0%BE%D0%B5_%D0%BF%D1%80%D0%B8%D1%81%D0%B2%D0%B0%D0%B8%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5" class="mw-redirect" title="Параллельное присваивание">параллельное присваивание</a>, множественное <a href="%D0%A2%D0%B8%D0%BF_%D0%B2%D0%BE%D0%B7%D0%B2%D1%80%D0%B0%D1%89%D0%B0%D0%B5%D0%BC%D0%BE%D0%B3%D0%BE_%D0%B7%D0%BD%D0%B0%D1%87%D0%B5%D0%BD%D0%B8%D1%8F" title="Тип возвращаемого значения">возвращаемое значение функции</a> как более простая альтернатива вместо <a href="%D0%9F%D0%B5%D1%80%D0%B5%D0%B4%D0%B0%D1%87%D0%B0_%D0%BF%D0%BE_%D1%81%D1%81%D1%8B%D0%BB%D0%BA%D0%B5" class="mw-redirect" title="Передача по ссылке">передачи параметров по ссылке</a> или явных <a href="%D0%A3%D0%BA%D0%B0%D0%B7%D0%B0%D1%82%D0%B5%D0%BB%D1%8C_(%D1%82%D0%B8%D0%BF_%D0%B4%D0%B0%D0%BD%D0%BD%D1%8B%D1%85)" title="Указатель (тип данных)">указателей</a>), <a href="C%2B%2B" title="C++">C++</a> («отличная идея объявлять <a href="%D0%9B%D0%BE%D0%BA%D0%B0%D0%BB%D1%8C%D0%BD%D0%B0%D1%8F_%D0%BF%D0%B5%D1%80%D0%B5%D0%BC%D0%B5%D0%BD%D0%BD%D0%B0%D1%8F" title="Локальная переменная">локальные переменные</a> лишь тогда, когда они нужны»), <a href="%D0%A1%D0%BD%D0%BE%D0%B1%D0%BE%D0%BB" title="Снобол">Снобол</a> и <a href="Awk" class="mw-redirect" title="Awk">awk</a> (<a href="%D0%90%D1%81%D1%81%D0%BE%D1%86%D0%B8%D0%B0%D1%82%D0%B8%D0%B2%D0%BD%D1%8B%D0%B9_%D0%BC%D0%B0%D1%81%D1%81%D0%B8%D0%B2" title="Ассоциативный массив">ассоциативные массивы</a>). Создатели Lua также признают, что единый вездесущий механизм структурирования данных в Lisp и Scheme (<a href="%D0%A1%D0%B2%D1%8F%D0%B7%D0%BD%D1%8B%D0%B9_%D1%81%D0%BF%D0%B8%D1%81%D0%BE%D0%BA" title="Связный список">связный список</a>) оказал большое влияние на их решение о выборе таблиц в качестве основной структуры данных для Lua<sup id="cite_ref-ddj96_14-0" class="reference"><a href="#cite_note-ddj96-14"><span class="cite-bracket">[</span>14<span class="cite-bracket">]</span></a></sup>.
</p><p>Версии Lua вплоть до 5.0 выпускались под лицензией, подобной <a href="%D0%9B%D0%B8%D1%86%D0%B5%D0%BD%D0%B7%D0%B8%D1%8F_BSD" class="mw-redirect" title="Лицензия BSD">лицензии BSD</a>. Начиная с версии 5.0 и выше Lua распространяется под <a href="%D0%9B%D0%B8%D1%86%D0%B5%D0%BD%D0%B7%D0%B8%D1%8F_MIT" title="Лицензия MIT">лицензией MIT</a>. Обе лицензии являются <a href="%D0%A0%D0%B0%D0%B7%D1%80%D0%B5%D1%88%D0%B8%D1%82%D0%B5%D0%BB%D1%8C%D0%BD%D0%B0%D1%8F_%D0%BB%D0%B8%D1%86%D0%B5%D0%BD%D0%B7%D0%B8%D1%8F_%D1%81%D0%B2%D0%BE%D0%B1%D0%BE%D0%B4%D0%BD%D0%BE%D0%B3%D0%BE_%D0%9F%D0%9E" title="Разрешительная лицензия свободного ПО">разрешительными</a> и практически идентичны.
</p>
<div class="mw-heading mw-heading2"><h2 id="Общая_характеристика"><span id=".D0.9E.D0.B1.D1.89.D0.B0.D1.8F_.D1.85.D0.B0.D1.80.D0.B0.D0.BA.D1.82.D0.B5.D1.80.D0.B8.D1.81.D1.82.D0.B8.D0.BA.D0.B0"></span>Общая характеристика</h2></div>
<p>Язык предназначен для использования в качестве отдельного либо встроенного в приложение скриптового языка. Он изначально создавался достаточно простым и компактным, чтобы поместиться на различных платформах и обеспечить приемлемую производительность. Также при проектировании учитывались требования простоты обучения и возможности использования не профессиональными программистами.
</p><p>Lua&nbsp;— это <a href="%D0%9F%D1%80%D0%BE%D1%86%D0%B5%D0%B4%D1%83%D1%80%D0%BD%D1%8B%D0%B9_%D1%8F%D0%B7%D1%8B%D0%BA_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D1%8F" class="mw-redirect" title="Процедурный язык программирования">процедурный</a> <a href="%D0%94%D0%B8%D0%BD%D0%B0%D0%BC%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%B0%D1%8F_%D1%82%D0%B8%D0%BF%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D1%8F" title="Динамическая типизация">динамически типизированный</a> <a href="%D0%9C%D0%BE%D0%B4%D1%83%D0%BB%D1%8C_(%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5)" class="mw-redirect" title="Модуль (программирование)">модульный</a> язык с <a href="%D0%A1%D0%B1%D0%BE%D1%80%D0%BA%D0%B0_%D0%BC%D1%83%D1%81%D0%BE%D1%80%D0%B0" title="Сборка мусора">автоматическим управлением памятью</a>. Включает базовые элементы для поддержки <a href="%D0%A4%D1%83%D0%BD%D0%BA%D1%86%D0%B8%D0%BE%D0%BD%D0%B0%D0%BB%D1%8C%D0%BD%D0%BE%D0%B5_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5" title="Функциональное программирование">функционального</a> и <a href="%D0%9E%D0%B1%D1%8A%D0%B5%D0%BA%D1%82%D0%BD%D0%BE-%D0%BE%D1%80%D0%B8%D0%B5%D0%BD%D1%82%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%BD%D0%BE%D0%B5_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5" title="Объектно-ориентированное программирование">объектного</a> стилей программирования. Таким образом, язык можно считать <a href="%D0%9C%D1%83%D0%BB%D1%8C%D1%82%D0%B8%D0%BF%D0%B0%D1%80%D0%B0%D0%B4%D0%B8%D0%B3%D0%BC%D0%B0%D0%BB%D1%8C%D0%BD%D1%8B%D0%B9_%D1%8F%D0%B7%D1%8B%D0%BA_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D1%8F" class="mw-redirect" title="Мультипарадигмальный язык программирования">мультипарадигменным</a>. Встроенные средства параллельного программирования позволяют писать многопоточные программы только средствами языка, не обращаясь к API операционной системы или внешним библиотекам. Так как основным назначением Lua является встраивание, он имеет эффективные средства межъязыкового взаимодействия, ориентированные, главным образом, на вызов библиотек <a href="%D0%A1%D0%B8_(%D1%8F%D0%B7%D1%8B%D0%BA_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D1%8F)" title="Си (язык программирования)">Си</a> и на работу в Си-окружении.
</p><p>Язык поддерживает небольшое количество встроенных типов данных: логические значения, числа, строки, функции, потоки. Типичные комбинированные структуры данных, такие как <a href="%D0%9C%D0%B0%D1%81%D1%81%D0%B8%D0%B2_(%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5)" class="mw-redirect" title="Массив (программирование)">массивы</a>, <a href="%D0%9C%D0%BD%D0%BE%D0%B6%D0%B5%D1%81%D1%82%D0%B2%D0%BE_(%D1%82%D0%B8%D0%BF_%D0%B4%D0%B0%D0%BD%D0%BD%D1%8B%D1%85)" title="Множество (тип данных)">наборы</a>, <a href="%D0%A1%D0%BF%D0%B8%D1%81%D0%BE%D0%BA_(%D1%81%D1%82%D1%80%D1%83%D0%BA%D1%82%D1%83%D1%80%D0%B0_%D0%B4%D0%B0%D0%BD%D0%BD%D1%8B%D1%85)" class="mw-redirect" title="Список (структура данных)">списки</a> и <a href="%D0%97%D0%B0%D0%BF%D0%B8%D1%81%D1%8C_(%D1%82%D0%B8%D0%BF_%D0%B4%D0%B0%D0%BD%D0%BD%D1%8B%D1%85)" title="Запись (тип данных)">записи</a>, отсутствуют, вместо всех их используется одна базовая структура Lua&nbsp;— таблица (см. ниже). Отдельный тип <code>userdata</code> предназначен специально для низкоуровневого программирования и обмена данными с внешним кодом на других языках. Функции в Lua являются объектами первого класса, могут присваиваться и передаваться в параметрах. Поддерживаются замыкания, есть возможность создания функций высших порядков. Объектная система прототипная, отсутствует явная поддержка <a href="%D0%9D%D0%B0%D1%81%D0%BB%D0%B5%D0%B4%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5_(%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5)" title="Наследование (программирование)">наследования</a>, однако оно легко реализуется с помощью <i>метатаблиц</i>.
</p><p>Вообще, Lua стремится обеспечить гибкие метафункции, которые могут быть расширены по мере необходимости, а не поставлять набор функций, специфичных для конкретной парадигмы программирования. Как результат, основа языка проста и легко адаптируема к большинству приложений. Предоставляя минимальный набор базовых средств, Lua пытается найти баланс между мощностью и размером.
</p>
<div class="mw-heading mw-heading2"><h2 id="Синтаксис"><span id=".D0.A1.D0.B8.D0.BD.D1.82.D0.B0.D0.BA.D1.81.D0.B8.D1.81"></span>Синтаксис</h2></div>
<p>Синтаксис Lua в основном построен на основе поздних Паскале-подобных языков, таких как <a href="%D0%9C%D0%BE%D0%B4%D1%83%D0%BB%D0%B0-2" title="Модула-2">Модула-2</a> или <a href="%D0%9E%D0%B1%D0%B5%D1%80%D0%BE%D0%BD_(%D1%8F%D0%B7%D1%8B%D0%BA_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D1%8F)" title="Оберон (язык программирования)">Оберон</a>. Формат записи текста&nbsp;— свободный, команды в тексте программы разделяются любыми пробельными символами. Допускается, но не является обязательным применение точки с запятой для разделения операций.
</p><p>В одном из интервью Роберту Иерузалимски заметил, что синтаксис Lua&nbsp;— это компромиссное решение, которое он был вынужден принять, чтобы упростить освоение языка непрофессиональными программистами. Он охарактеризовал этот синтаксис как «довольно многословный», отметив, что лично для себя предпочёл бы более краткую <a href="%D0%9D%D0%BE%D1%82%D0%B0%D1%86%D0%B8%D1%8F" class="mw-disambig" title="Нотация">нотацию</a><sup id="cite_ref-_351cd094b07f2e63_11-1" class="reference"><a href="#cite_note-_351cd094b07f2e63-11"><span class="cite-bracket">[</span>11<span class="cite-bracket">]</span></a></sup>.
</p>
<div class="mw-heading mw-heading3"><h3 id="Лексика"><span id=".D0.9B.D0.B5.D0.BA.D1.81.D0.B8.D0.BA.D0.B0"></span>Лексика</h3></div>
<p>Основным алфавитом языка является английский, и в строковых литералах допускаются знаки других языков, идентификаторы которых могут состоять из букв, цифр и знаков подчеркивания, но они не могут начинаться с цифры или совпадать с одним из ключевых слов. В языковом руководстве не рекомендуется использовать идентификаторы, начинающиеся со знака подчеркивания, поскольку такие идентификаторы используются в систематических целях.
</p><p>Язык регистрозависимый, все ключевые слова пишутся в нижнем регистре, идентификаторы, различающиеся только регистром букв, считаются различными. Следующие 22 ключевых слова не могут быть использованы для имён<sup id="cite_ref-man1_15-0" class="reference"><a href="#cite_note-man1-15"><span class="cite-bracket">[</span>15<span class="cite-bracket">]</span></a></sup>:
</p>
<div class="mw-highlight mw-highlight-lang-lua mw-content-ltr" dir="ltr"><pre><span></span><span class="w">  </span><span class="ow">and</span><span class="w">   </span><span class="kr">break</span><span class="w">  </span><span class="kr">do</span><span class="w">     </span><span class="kr">else</span><span class="w"> </span><span class="kr">elseif</span><span class="w"> </span>
<span class="w">  </span><span class="kr">end</span><span class="w">   </span><span class="kc">false</span><span class="w">  </span><span class="kr">goto</span><span class="w">   </span><span class="nl">for</span><span class="w">  </span><span class="kr">function</span><span class="w"> </span>
<span class="w">  </span><span class="nf">if</span><span class="w">    </span><span class="kr">in</span><span class="w">     </span><span class="kd">local</span><span class="w">  </span><span class="kc">nil</span><span class="w">  </span><span class="ow">not</span><span class="w"> </span>
<span class="w">  </span><span class="ow">or</span><span class="w">    </span><span class="kr">repeat</span><span class="w"> </span><span class="kr">return</span><span class="w"> </span><span class="kr">then</span><span class="w"> </span><span class="kc">true</span>
<span class="w">  </span><span class="kr">until</span><span class="w"> </span><span class="kr">while</span>
</pre></div>
<div class="mw-heading mw-heading3"><h3 id="Комментарии"><span id=".D0.9A.D0.BE.D0.BC.D0.BC.D0.B5.D0.BD.D1.82.D0.B0.D1.80.D0.B8.D0.B8"></span>Комментарии</h3></div>
<p>Для комментариев используется синтаксис, аналогичный реализованному в <a href="%D0%90%D0%B4%D0%B0_(%D1%8F%D0%B7%D1%8B%D0%BA_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D1%8F)" title="Ада (язык программирования)">Аде</a>, <a href="SQL" title="SQL">SQL</a> и <a href="VHDL" title="VHDL">VHDL</a>:
</p>
<div class="mw-highlight mw-highlight-lang-lua mw-content-ltr" dir="ltr"><pre><span></span><span class="c1">-- Простой однострочный комментарий в Lua начинается с двойного минуса и продолжается до конца строки.</span>
<span class="nv">dim</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="s2">"one"</span><span class="p">,</span><span class="w"> </span><span class="s2">"two"</span><span class="p">,</span><span class="w"> </span><span class="s2">"three"</span><span class="w"> </span><span class="p">}</span><span class="w"> </span><span class="c1">-- Строчный комментарий не обязан начинаться с начала строки, </span>
<span class="w">                                </span><span class="c1">-- он может следовать за другими языковыми конструкциями,</span>
<span class="w">                                </span><span class="c1">-- поясняя их.</span>
<span class="cm">--[[Многострочный комментарий начинается с идущих подряд за двумя минусами двух открывающихся квадратных скобок</span>
<span class="cm">  и продолжается до двух подряд закрывающихся квадратных скобок. Как здесь: ]]</span>

<span class="c1">-- Интересный эффект можно получить сочетанием строчных и многострочных комментариев: </span>
<span class="cm">--[[ Чтобы раскомментировать код ниже, достаточно добавить в этой строке пробел между минусами и скобками.</span>
<span class="cm">for i=1,#dim do</span>
<span class="cm">  print(dim[i])</span>
<span class="cm">end</span>
<span class="cm">-- Если выше между минусами и скобками будет добавлен пробел, то </span>
<span class="cm">--]]</span><span class="w"> </span><span class="c1">-- здесь конец многострочного комментария превратится в обычный строчный</span>
</pre></div>
<div class="mw-heading mw-heading3"><h3 id="Типы_данных"><span id=".D0.A2.D0.B8.D0.BF.D1.8B_.D0.B4.D0.B0.D0.BD.D0.BD.D1.8B.D1.85"></span>Типы данных</h3></div>
<p>Lua представляет собой язык с неявным <a href="%D0%94%D0%B8%D0%BD%D0%B0%D0%BC%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%B0%D1%8F_%D1%82%D0%B8%D0%BF%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D1%8F" title="Динамическая типизация">динамическим</a> определением <a href="%D0%A2%D0%B8%D0%BF_%D0%B4%D0%B0%D0%BD%D0%BD%D1%8B%D1%85" title="Тип данных">типов данных</a>. <a href="%D0%9F%D0%B5%D1%80%D0%B5%D0%BC%D0%B5%D0%BD%D0%BD%D0%B0%D1%8F_(%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5)" title="Переменная (программирование)">Переменная</a> языка может содержать значения любого типа. Все значения в Lua могут храниться в переменных, использоваться в качестве <a href="%D0%90%D1%80%D0%B3%D1%83%D0%BC%D0%B5%D0%BD%D1%82_(%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5)" class="mw-redirect" title="Аргумент (программирование)">аргументов</a> при вызове <a href="%D0%A4%D1%83%D0%BD%D0%BA%D1%86%D0%B8%D1%8F_(%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5)" title="Функция (программирование)">функций</a> и возвращаться в виде результата их выполнения.
</p><p>В Lua восемь основных типов:
</p>
<ul><li><b>nil</b> (неопределенный);</li>
<li><b>boolean</b> (логический);</li>
<li><b>number</b> (числовой);</li>
<li><b>string</b> (строковый);</li>
<li><b>function</b> (функция);</li>
<li><b>userdata</b> (пользовательские данные);</li>
<li><b>thread</b> (асинхронный поток);</li>
<li><b>table</b> (таблица).</li></ul>
<p><i>nil</i>&nbsp;— это тип значения nil [пустое значение], главное свойство которого&nbsp;— отличаться от всех остальных значений и обозначать отсутствие пригодного значения.
</p><p>К типу <i>boolean</i> относятся значения false (ложь) и true (истина).
</p><p>К типу <i>number</i> относятся обычно вещественные числа (double). В первых версиях Lua целые числа не выделялись в отдельный тип; такое решение мотивируется тем, что вещественное представление позволяет точно представить достаточно широкий диапазон целых чисел. Начиная с версии 5.3 добавлена возможность явного определения целого или вещественного формата числа. Внутреннее представление чисел можно изменить при сборке интерпретатора.
</p><p>Тип <i>string </i>обозначает массивы символов. Строки Lua могут содержать любые 8-битные символы, включая ноль ('\0'). Строки неизменяемы. Строковые литералы могут записываться в одинарных или двойных кавычках, служебные символы помещаются в них в стандартной для C нотации с ведущим обратным слэшем. Многострочные литералы ограничиваются двумя подряд открывающимися и двумя подряд закрывающимися квадратными скобками.
</p><p>Встроенная в язык поддержка Юникода отсутствует, хотя допускается использование символов UTF-8 в строковых литералах, а сама система представления UTF-8 позволяет вводить, выводить и частично обрабатывать строки в этой кодировке стандартными системными средствами. В последние версии Lua входит библиотека utf8, обеспечивающая более развитую поддержку UTF-8, существуют также библиотеки сторонних разработчиков, предоставляющие средства работы с Юникод-строками в различных кодировках.
</p><p>Функции в Lua являются полноправными объектами, допускающими присваивание, передачу функции в параметре и возврат функции как одного из значений. Тип <b>thread</b> имеют сопрограммы, тип <b>userdata</b> предназначен для представления внешних данных, полученных или предоставляемых из/в код на другом языке (главным образом, на C/C++).
</p>
<div class="mw-heading mw-heading3"><h3 id="Операции"><span id=".D0.9E.D0.BF.D0.B5.D1.80.D0.B0.D1.86.D0.B8.D0.B8"></span>Операции</h3></div>
<dl><dt>Присваивание</dt>
<dd>Оператором присваивания служит символ <b><code>=</code></b>. Подобно таким скриптовым языкам, как <a href="Perl" title="Perl">Perl</a>, <a href="Python" title="Python">Python</a>, <a href="Ruby" title="Ruby">Ruby</a> и <a href="Icon_(%D1%8F%D0%B7%D1%8B%D0%BA_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D1%8F)" title="Icon (язык программирования)">Icon</a>, допускает <a href="%D0%9F%D0%B0%D1%80%D0%B0%D0%BB%D0%BB%D0%B5%D0%BB%D1%8C%D0%BD%D0%BE%D0%B5_%D0%BF%D1%80%D0%B8%D1%81%D0%B2%D0%B0%D0%B8%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5" class="mw-redirect" title="Параллельное присваивание">параллельное присваивание</a>. В простейшем случае это позволяет писать выражения вида:</dd>
<dd><div class="mw-highlight mw-highlight-lang-lua mw-content-ltr" dir="ltr"><pre><span></span><span class="w">  </span><span class="nv">x</span><span class="p">,</span><span class="w"> </span><span class="nv">y</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nv">y</span><span class="p">,</span><span class="w"> </span><span class="nv">x</span>
</pre></div></dd>
<dd>В отличие, например, от языка <a href="Go" title="Go">Go</a>, параллельное присваивание в Lua очень либерально, оно не требует точного соответствия числа переменных числу значений. Если значений больше, чем переменных, то последние значения отбрасываются, если значений меньше&nbsp;— последние переменные в списке получают значение nil.</dd>
<dt>Сравнения и логические операторы</dt>
<dd>Операторы сравнения: <b><code> &lt;, &gt;, &lt;=, &gt;=, ==, ~= </code></b> (последние два означают, соответственно, сравнение на равенство и на неравенство). Сравнения на равенство и неравенство применимы к любым типам данных, прочие&nbsp;— только к строкам и числам.</dd>
<dd>Логические операторы: <b><code>and, or, not</code></b>&nbsp;— логические «и», «или» и «не», соответственно, могут применяться к значениям любых типов и возвращают true либо false. В параметрах этих операция значения nil и false считаются ложными, любые другие значения&nbsp;— истинными. В отличие от C и ряда других языков, даже числовой нуль (0) или пустая строка ("") с точки зрения логических операторов представляют значение «истина». Вычисление бинарных логических операторов традиционно выполняется до тех пор, пока результат не будет определён, причём в качестве результата возвращается последнее вычисленное подвыражение. Поэтому их можно использовать как тернарный оператор <b><code>?:</code></b> в языке Си:</dd></dl>
<div class="mw-highlight mw-highlight-lang-lua mw-content-ltr" dir="ltr"><pre><span></span><span class="c1">-- аналогично r = ( a &lt; b)? f(a)&nbsp;: f(b); в Си, </span>
<span class="nv">r</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">(</span><span class="w"> </span><span class="nv">a</span><span class="w"> </span><span class="o">&lt;</span><span class="w"> </span><span class="nv">b</span><span class="w"> </span><span class="p">)</span><span class="w"> </span><span class="ow">and</span><span class="w"> </span><span class="nf">f</span><span class="p">(</span><span class="nv">a</span><span class="p">)</span><span class="w"> </span><span class="ow">or</span><span class="w"> </span><span class="nf">f</span><span class="p">(</span><span class="nv">b</span><span class="p">)</span>
<span class="c1">-- r получит значение функции f() от меньшего из двух значений: a и b,</span>
<span class="c1">-- при условии, что f(a) не равно nil или false.</span>
</pre></div>
<dl><dt>Арифметические операторы</dt>
<dd><b><code>+</code></b>&nbsp;— сложение;</dd>
<dd><b><code>-</code></b>&nbsp;— вычитание;</dd>
<dd><b><code>*</code></b>&nbsp;— умножение;</dd>
<dd><b><code>/</code></b>&nbsp;— деление;</dd>
<dd><b><code>-</code></b>&nbsp;— <a href="%D0%A3%D0%BD%D0%B0%D1%80%D0%BD%D1%8B%D0%B9_%D0%BC%D0%B8%D0%BD%D1%83%D1%81" class="mw-redirect" title="Унарный минус">унарный минус</a>;</dd>
<dd><b><code>%</code></b>&nbsp;— остаток от деления;</dd>
<dd><b><code>^</code></b>&nbsp;— возведение в степень.</dd></dl>
<p>Все арифметические операторы поддерживают вещественные операнды, давая предсказуемый результат. Так, <code>x^0.5</code> возвращает квадратный корень из <code>x</code>, <code>x^(-1/3)</code>&nbsp;— значение, обратное кубическому корню из <code>x</code>. Оператор <code>%</code> определяется выражением: <code>a&nbsp;% b = a - math.floor(a / b) * b</code>, где функция <code>math.floor()</code> вычисляет целую часть своего аргумента. Для целых аргументов его результат вполне обычен. Для вещественного делимого нужно учитывать, что операция не производит никаких дополнительных округлений или отбрасывания дробной части, поэтому результат сохранит дробную часть делимого. Например, <code>math.pi&nbsp;% 2</code> вернёт не <code>1</code>, а <code>1.1415926535898</code>. Такая реализация даёт некоторые дополнительные возможности. Например, для усечения <code>x</code> до трёх знаков после запятой достаточно взять выражение <code>x - x&nbsp;% 0.001</code>
</p>
<div class="mw-heading mw-heading3"><h3 id="Таблицы"><span id=".D0.A2.D0.B0.D0.B1.D0.BB.D0.B8.D1.86.D1.8B"></span>Таблицы</h3></div>
<p>Таблица в Lua&nbsp;— это <a href="%D0%94%D0%B8%D0%BD%D0%B0%D0%BC%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%B8%D0%B9_%D0%BC%D0%B0%D1%81%D1%81%D0%B8%D0%B2" title="Динамический массив">динамический</a> <a href="%D0%93%D0%B5%D1%82%D0%B5%D1%80%D0%BE%D0%B3%D0%B5%D0%BD%D0%BD%D0%BE%D1%81%D1%82%D1%8C" title="Гетерогенность">гетерогенный</a> <a href="%D0%90%D1%81%D1%81%D0%BE%D1%86%D0%B8%D0%B0%D1%82%D0%B8%D0%B2%D0%BD%D1%8B%D0%B9_%D0%BC%D0%B0%D1%81%D1%81%D0%B8%D0%B2" title="Ассоциативный массив">ассоциативный массив</a>, то есть множество пар «<code>ключ-значение</code>». Ключами могут быть значения любых типов Lua, кроме <code>nil</code>. Ключи также могут быть литералами (идентификаторами) Lua. Запись <code>nil</code> в элемент таблицы равносильна удалению данного элемента.
</p><p>Таблицы являются единственным в Lua составным типом данных. Они являются фундаментом для всех пользовательских типов данных, таких как <a href="%D0%A1%D1%82%D1%80%D1%83%D0%BA%D1%82%D1%83%D1%80%D0%B0_(%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5)" class="mw-redirect" title="Структура (программирование)">структуры</a>, <a href="%D0%9C%D0%B0%D1%81%D1%81%D0%B8%D0%B2_(%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5)" class="mw-redirect" title="Массив (программирование)">массивы</a>, <a href="%D0%9C%D0%BD%D0%BE%D0%B6%D0%B5%D1%81%D1%82%D0%B2%D0%BE_(%D1%82%D0%B8%D0%BF_%D0%B4%D0%B0%D0%BD%D0%BD%D1%8B%D1%85)" title="Множество (тип данных)">множества</a> и другие:
</p>
<div class="mw-highlight mw-highlight-lang-lua mw-content-ltr" dir="ltr"><pre><span></span><span class="c1">-- Таблица общего вида:</span>
<span class="nv">empty</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">{}</span><span class="w"> </span><span class="c1">-- Пустая таблица</span>
<span class="nv">empty</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s2">"первый"</span><span class="w">        </span><span class="c1">-- Добавление элемента с целым индексом</span>
<span class="nv">empty</span><span class="p">[</span><span class="mi">3</span><span class="p">]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s2">"второй"</span><span class="w">        </span><span class="c1">-- Добавление элемента с целым индексом</span>
<span class="nv">empty</span><span class="p">[</span><span class="s2">"третий"</span><span class="p">]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s2">"третий"</span><span class="w"> </span><span class="c1">-- Добавление элемента со строковым индексом</span>
<span class="nv">empty</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="kc">nil</span><span class="w">             </span><span class="c1">-- Удаление элемента из таблицы</span>

<span class="c1">-- Классический массив - строки индексируются по умолчанию целыми числами, начиная с 1</span>
<span class="nv">days1</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">{</span><span class="s2">"понедельник"</span><span class="p">,</span><span class="w"> </span><span class="s2">"вторник"</span><span class="p">,</span><span class="w"> </span><span class="s2">"среда"</span><span class="p">,</span><span class="w"> </span><span class="s2">"четверг"</span><span class="p">,</span><span class="w"> </span><span class="s2">"пятница"</span><span class="p">,</span><span class="w"> </span><span class="s2">"суббота"</span><span class="p">,</span><span class="w"> </span><span class="s2">"воскресенье"</span><span class="p">}</span>

<span class="c1">-- Массив с произвольной индексацией</span>
<span class="nv">days2</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">{[</span><span class="mi">0</span><span class="p">]</span><span class="o">=</span><span class="s2">"воскресенье"</span><span class="p">,</span><span class="w"> </span><span class="p">[</span><span class="mi">1</span><span class="p">]</span><span class="o">=</span><span class="s2">"понедельник"</span><span class="p">,</span><span class="w"> </span><span class="p">[</span><span class="mi">2</span><span class="p">]</span><span class="o">=</span><span class="s2">"вторник"</span><span class="p">,</span><span class="w"> </span><span class="p">[</span><span class="mi">3</span><span class="p">]</span><span class="o">=</span><span class="s2">"среда"</span><span class="p">,</span><span class="w"> </span><span class="p">[</span><span class="mi">4</span><span class="p">]</span><span class="o">=</span><span class="s2">"четверг"</span><span class="p">,</span><span class="w"> </span><span class="p">[</span><span class="mi">5</span><span class="p">]</span><span class="o">=</span><span class="s2">"пятница"</span><span class="p">,</span><span class="w"> </span><span class="p">[</span><span class="mi">6</span><span class="p">]</span><span class="o">=</span><span class="s2">"суббота"</span><span class="p">}</span>

<span class="c1">-- Запись (структура) - значения различных типов индексируются литералами</span>
<span class="nv">person</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">{</span><span class="nv">tabnum</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">123342</span><span class="p">,</span><span class="w">                   </span><span class="c1">-- Табельный номер</span>
<span class="w">          </span><span class="nv">fio</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s2">"Иванов Степан Васильевич"</span><span class="p">,</span><span class="w">  </span><span class="c1">-- Ф.И.О.</span>
<span class="w">          </span><span class="nv">post</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s2">"слесарь-инструментальщик"</span><span class="p">,</span><span class="w"> </span><span class="c1">-- Должность</span>
<span class="w">          </span><span class="nv">salary</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mf">25800.45</span><span class="p">,</span><span class="w">                 </span><span class="c1">-- Оклад</span>
<span class="w">          </span><span class="nv">sdate</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s2">"23.10.2013"</span><span class="p">,</span><span class="w">              </span><span class="c1">-- Дата приёма на работу</span>
<span class="w">          </span><span class="nv">bdate</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s2">"08.08.1973"</span><span class="p">}</span><span class="w">              </span><span class="c1">-- Дата рождения</span>

<span class="nv">pfio</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nv">person</span><span class="p">.</span><span class="py">fio</span><span class="w"> </span><span class="c1">--Обращение к элементу структуры.</span>

<span class="c1">-- Множество - индексы используются для хранения значений</span>
<span class="nv">workDays</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">{[</span><span class="s2">"понедельник"</span><span class="p">]</span><span class="o">=</span><span class="kc">true</span><span class="p">,</span><span class="w"> </span><span class="p">[</span><span class="s2">"вторник"</span><span class="p">]</span><span class="o">=</span><span class="kc">true</span><span class="p">,</span><span class="w"> </span><span class="p">[</span><span class="s2">"среда"</span><span class="p">]</span><span class="o">=</span><span class="kc">true</span><span class="p">,</span><span class="w"> </span><span class="p">[</span><span class="s2">"четверг"</span><span class="p">]</span><span class="o">=</span><span class="kc">true</span><span class="p">,</span><span class="w"> </span><span class="p">[</span><span class="s2">"пятница"</span><span class="p">]</span><span class="o">=</span><span class="kc">true</span><span class="p">}</span>
<span class="nv">workDays</span><span class="p">[</span><span class="s2">"суббота"</span><span class="p">]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="kc">true</span><span class="w"> </span><span class="c1">-- Добавление субботы в число рабочих дней</span>
<span class="nv">workDays</span><span class="p">[</span><span class="s2">"среда"</span><span class="p">]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="kc">nil</span><span class="w">    </span><span class="c1">-- По средам больше не работаем</span>

<span class="c1">-- Проверка, является ли d рабочим днём</span>
<span class="kr">if</span><span class="w"> </span><span class="nv">workDays</span><span class="p">[</span><span class="nv">d</span><span class="p">]</span><span class="w"> </span><span class="kr">then</span><span class="w"> </span>
<span class="w">  </span><span class="nb">print</span><span class="w"> </span><span class="p">(</span><span class="nv">d</span><span class="o">..</span><span class="s2">" - рабочий день"</span><span class="p">)</span>
<span class="kr">else</span>
<span class="w">  </span><span class="nb">print</span><span class="w"> </span><span class="p">(</span><span class="nv">d</span><span class="o">..</span><span class="s2">" - выходной день"</span><span class="p">)</span>
<span class="kr">end</span>
</pre></div>
<p>Мультимножества (множества, которые могут содержать более одного экземпляра одного и того же элемента) реализуются аналогично последнему примеру, только в качестве значений используются не логические, а целые&nbsp;— счётчики числа соответствующих элементов в множестве. Связанные списки могут быть представлены как массивы двухэлементных массивов, хранящих значение и ссылку на следующий элемент. Многомерные массивы могут быть реализованы как массивы массивов. Более сложные структуры, такие как очереди, графы, сети также реализуются на основе таблиц, конкретный способ реализации определяется задачей.
</p>
<div class="mw-heading mw-heading3"><h3 id="Замыкания"><span id=".D0.97.D0.B0.D0.BC.D1.8B.D0.BA.D0.B0.D0.BD.D0.B8.D1.8F"></span>Замыкания</h3></div>
<p>Lua поддерживает концепцию <a href="%D0%97%D0%B0%D0%BC%D1%8B%D0%BA%D0%B0%D0%BD%D0%B8%D0%B5_(%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5)" title="Замыкание (программирование)">замыканий</a>, например:
</p>
<div class="mw-highlight mw-highlight-lang-lua mw-content-ltr" dir="ltr"><pre><span></span><span class="kr">function</span><span class="w"> </span><span class="nf">makeaddfunc</span><span class="p">(</span><span class="nv">x</span><span class="p">)</span>
<span class="w">  </span><span class="c1">-- Возвращает новую анонимную функцию, которая добавляет x к аргументу</span>
<span class="w">  </span><span class="kr">return</span><span class="w"> </span><span class="kr">function</span><span class="p">(</span><span class="nv">y</span><span class="p">)</span>
<span class="w">    </span><span class="c1">-- Когда мы ссылаемся на переменную x, которая вне текущей области,</span>
<span class="w">    </span><span class="c1">-- и время жизни которой меньше, чем этой анонимной функции, </span>
<span class="w">    </span><span class="c1">-- Lua создаёт замыкание.</span>
<span class="w">    </span><span class="kr">return</span><span class="w"> </span><span class="nv">x</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="nv">y</span>
<span class="w">  </span><span class="kr">end</span>
<span class="kr">end</span>
<span class="nv">plustwo</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nf">makeaddfunc</span><span class="p">(</span><span class="mi">2</span><span class="p">)</span><span class="w"> </span><span class="c1">-- т.е plustwo = function(y) return 2 + y end</span>
<span class="nb">print</span><span class="p">(</span><span class="nf">plustwo</span><span class="p">(</span><span class="mi">5</span><span class="p">))</span><span class="w"> </span><span class="c1">-- Выводит 7</span>
</pre></div>
<p>Каждый раз, когда вызывается <code>makeaddfunc</code>, создаётся новое замыкание для переменной <code>x</code>, так что каждая возвращаемая анонимная функция будет ссылаться на свой параметр <code>x</code>. Как и у любого другого объекта Lua, временем жизни замыкания управляет сборщик мусора.
</p>
<div class="mw-heading mw-heading2"><h2 id="Средства_и_методы_программирования"><span id=".D0.A1.D1.80.D0.B5.D0.B4.D1.81.D1.82.D0.B2.D0.B0_.D0.B8_.D0.BC.D0.B5.D1.82.D0.BE.D0.B4.D1.8B_.D0.BF.D1.80.D0.BE.D0.B3.D1.80.D0.B0.D0.BC.D0.BC.D0.B8.D1.80.D0.BE.D0.B2.D0.B0.D0.BD.D0.B8.D1.8F"></span>Средства и методы программирования</h2></div>
<div class="mw-heading mw-heading3"><h3 id="Метатаблицы"><span id=".D0.9C.D0.B5.D1.82.D0.B0.D1.82.D0.B0.D0.B1.D0.BB.D0.B8.D1.86.D1.8B"></span>Метатаблицы</h3></div>
<p>Механизм <i>метатаблиц</i> обеспечивает многие возможности, в других языках предоставляемые за счёт введения отдельных синтаксических механизмов. Метатаблицы по структуре являются обычными таблицами Luа, подчиняющимися всем правилам и ограничениям языка. Особенность их состоит в применении. Метатаблица хранит дополнительные метаданные типов и объектов, то есть информацию о параметрах и функциях, связанных с ними. Сведения, хранящиеся в метатаблицах, используются интерпретатором Lua, их использование позволяет изменить или расширить функциональность программных объектов.
</p><p>Метатаблица в Lua может быть связана со значением любого типа. Скалярные типы данных (все, кроме userdata и таблиц) имеют общие метатаблицы для каждого типа. Таблицы и значения типа <code>userdata</code> имеют индивидуальные ссылки на метатаблицы в каждом экземпляре. Изменять метатаблицы всех типов, кроме таблиц, можно только посредством внешнего кода на Си. Непосредственно из Lua доступны только метатаблицы таблиц.
</p><p>Созданная «с нуля» таблица Lua не имеет метатаблицы (её ссылка на метатаблицу равна nil). Но метатаблица для неё может быть в любой момент создана либо получена от другой таблицы. Встроенная функция <code>getmetatable(t)</code> возвращает метатаблицу таблицы t, а функция <code>setmetatable(t, m)</code> устанавливает для таблицы t метатаблицу m.
</p><p>Для метатаблиц документирован набор полей, которые могут использоваться интерпретатором языка. Для указания на особую роль этих полей для них принято специальное правило именования: их идентификаторы начинаются с двух подчёркиваний. Некоторые из таких полей содержат информацию о специфических свойствах объекта, к которому относится метатаблица. Например, параметр <code>__mode</code>, когда он задан, может превратить таблицу в <i>слабую</i>, то есть таблицу, все ссылки на объекты которой являются <a href="%D0%A1%D0%BB%D0%B0%D0%B1%D0%B0%D1%8F_%D1%81%D1%81%D1%8B%D0%BB%D0%BA%D0%B0" title="Слабая ссылка">слабыми ссылками</a>. Но значениями большинства возможных полей метатаблицы являются так называемые <i>метаметоды</i>, то есть ссылки на функции, которые интерпретатор вызывает при определённых условиях. Общая логика использования метаметодов интерпретатором состоит в следующем: когда интерпретатор встречает в программе операцию, которая не определена для объекта-операнда, он обращается к связанной с операндом метатаблице, находит в ней соответствующий метаметод и вызывает его.
</p>
<div class="mw-highlight mw-highlight-lang-lua mw-content-ltr" dir="ltr"><pre><span></span><span class="cm">--[[ Создание операции сложения для таблиц ]]</span>
<span class="c1">-- Операнды</span>
<span class="nv">t1</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">{</span><span class="mi">1</span><span class="p">,</span><span class="mi">2</span><span class="p">,</span><span class="mi">3</span><span class="p">}</span><span class="w">     </span>
<span class="nv">t2</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">{</span><span class="mi">10</span><span class="p">,</span><span class="mi">20</span><span class="p">,</span><span class="mi">30</span><span class="p">}</span><span class="w">  </span>
<span class="c1">-- Создание метатаблицы</span>
<span class="nv">mt</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">{}</span>
<span class="c1">-- Запись в метатаблицу метаметода "__add"</span>
<span class="nv">mt</span><span class="p">.</span><span class="py">__add</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="kr">function</span><span class="p">(</span><span class="nv">a</span><span class="p">,</span><span class="w"> </span><span class="nv">b</span><span class="p">)</span><span class="w"> </span>
<span class="w">             </span><span class="kd">local</span><span class="w"> </span><span class="nv">res</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">{}</span>
<span class="w">             </span><span class="kr">for</span><span class="w"> </span><span class="nv">k</span><span class="w"> </span><span class="kr">in</span><span class="w"> </span><span class="nb">pairs</span><span class="p">(</span><span class="nv">a</span><span class="p">)</span><span class="w"> </span><span class="kr">do</span><span class="w"> </span><span class="nv">res</span><span class="p">[</span><span class="nv">k</span><span class="p">]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nv">a</span><span class="p">[</span><span class="nv">k</span><span class="p">]</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="nv">b</span><span class="p">[</span><span class="nv">k</span><span class="p">]</span><span class="w"> </span><span class="kr">end</span>
<span class="w">             </span><span class="kr">return</span><span class="w"> </span><span class="nv">res</span>
<span class="w">           </span><span class="kr">end</span>
<span class="c1">-- Привязка метатаблицы к таблице t1</span>
<span class="nb">setmetatable</span><span class="p">(</span><span class="nv">t1</span><span class="p">,</span><span class="w"> </span><span class="nv">mt</span><span class="p">)</span>

<span class="c1">-- Теперь сложение таблиц - корректная операция</span>
<span class="nv">t3</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nv">t1</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="nv">t2</span>
<span class="c1">-- соединяем с t3 метатаблицу с метаметодом __tostring</span>
<span class="nb">setmetatable</span><span class="p">(</span><span class="nv">t3</span><span class="p">,</span><span class="w"> </span><span class="p">{</span><span class="nv">__tostring</span><span class="o">=</span><span class="kr">function</span><span class="p">(</span><span class="nv">t</span><span class="p">)</span><span class="w"> </span>
<span class="w">                    </span><span class="kd">local</span><span class="w"> </span><span class="nv">res</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s2">"</span><span class="se">\n</span><span class="s2">"</span>
<span class="w">                    </span><span class="kr">for</span><span class="w"> </span><span class="nv">_</span><span class="p">,</span><span class="nv">v</span><span class="w"> </span><span class="kr">in</span><span class="w"> </span><span class="nb">pairs</span><span class="p">(</span><span class="nv">t</span><span class="p">)</span><span class="w"> </span><span class="kr">do</span><span class="w"> </span>
<span class="w">                      </span><span class="nv">res</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nv">res</span><span class="w"> </span><span class="o">..</span><span class="w"> </span><span class="nb">tostring</span><span class="p">(</span><span class="nv">v</span><span class="p">)</span><span class="w"> </span><span class="o">..</span><span class="w"> </span><span class="s2">"-"</span>
<span class="w">                    </span><span class="kr">end</span>
<span class="w">                    </span><span class="kr">return</span><span class="w"> </span><span class="nv">res</span><span class="o">..</span><span class="s2">"</span><span class="se">\n</span><span class="s2">"</span>
<span class="w">                  </span><span class="kr">end</span><span class="p">})</span>
<span class="c1">-- В результате будет выведено: "11-22-33-"</span>
<span class="kr">for</span><span class="w"> </span><span class="nv">_</span><span class="p">,</span><span class="nv">v</span><span class="w"> </span><span class="kr">in</span><span class="w"> </span><span class="nb">ipairs</span><span class="p">(</span><span class="nv">t3</span><span class="p">)</span><span class="w"> </span><span class="kr">do</span><span class="w"> </span>
<span class="w">  </span><span class="nb">io.write</span><span class="w"> </span><span class="p">(</span><span class="nv">v</span><span class="p">,</span><span class="s2">","</span><span class="p">)</span>
<span class="kr">end</span>
<span class="nb">print</span><span class="p">(</span><span class="nb">tostring</span><span class="p">(</span><span class="nv">t3</span><span class="p">))</span><span class="w">  </span><span class="c1">-- выведет "11,22,33,"</span>
</pre></div>
<p>В Lua поддерживаются метаметоды для всех арифметических операций и операций сравнения, так что с их помощью можно реализовать арифметику для любых объектов, созданных программистом. Помимо стандартных, можно использовать так называемые «библиотечные» метаметоды, которые поддерживаются не ядром языка, а конкретными библиотеками. В примере выше это метаметод <code>__tostring</code>, поддерживаемый библиотекой string; этот метод выполняет конвертацию таблицы в строку.
</p><p>Наибольший интерес представляет поле <code>__index</code>. Обращение к нему происходит тогда, когда интерпретатор пытается прочитать элемент таблицы, но не находит его. Поле <code>__index</code> может ссылаться либо на таблицу, либо на метод. В первом случае интерпретатор, не найдя искомого значения в основной таблице, будет искать его в таблице <code>__index</code>. Во втором вместо обращения к таблице будет происходить вызов этого метода. Задавая таблицы или метаметоды для данного поля, в Lua можно реализовать наследование, сокрытие данных объекта, отслеживание операций с данными таблицы и многое другое.
</p>
<div class="mw-heading mw-heading3"><h3 id="Объектно-ориентированное_программирование"><span id=".D0.9E.D0.B1.D1.8A.D0.B5.D0.BA.D1.82.D0.BD.D0.BE-.D0.BE.D1.80.D0.B8.D0.B5.D0.BD.D1.82.D0.B8.D1.80.D0.BE.D0.B2.D0.B0.D0.BD.D0.BD.D0.BE.D0.B5_.D0.BF.D1.80.D0.BE.D0.B3.D1.80.D0.B0.D0.BC.D0.BC.D0.B8.D1.80.D0.BE.D0.B2.D0.B0.D0.BD.D0.B8.D0.B5"></span>Объектно-ориентированное программирование</h3></div>
<p>Основой для ООП в Lua являются таблицы. В принципе, таблица и есть объект в ООП-смысле, так как она может иметь поля, именованные с помощью идентификаторов, и хранить в этих полях произвольные значения (свойства объекта) и функции для реализации поведения объекта (методы объекта). Некоторый синтаксический сахар, предоставляемый Lua, делает описание и обращение с объектами более привычным для программистов, имеющих опыт работы с традиционными ООП-языками. Понятия «<a href="%D0%9A%D0%BB%D0%B0%D1%81%D1%81_(%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5)" title="Класс (программирование)">класса</a>» в Lua нет, поэтому описывается отдельный объект и все поля и методы относятся именно к нему. Свойства описываются аналогично элементам таблицы с ключами-идентификаторами, методы&nbsp;— как поля-функции. Подобно классическому Оберону, описание методов включает явное указание в первом параметре так называемого «получателя»&nbsp;— параметра, который при вызове метода ссылается на объект, для которого он вызван. Но, помимо стандартного обращения к полю таблицы через точку, которое требует и в вызове метода явно указывать получателя, Lua поддерживает дополнительный синтаксис: когда в вызове или описании метода его заголовок записываются в виде «<code>Объект:метод</code>», то получатель не указывается. При этом в теле метода он всё равно доступен под именем <code>self</code>:
</p>
<div class="mw-highlight mw-highlight-lang-lua mw-content-ltr" dir="ltr"><pre><span></span><span class="c1">-- Объект</span>
<span class="nv">Account</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">{</span><span class="w">                     </span><span class="c1">-- Объект "счёт"</span>
<span class="w">  </span><span class="nv">id</span><span class="p">,</span><span class="w"> </span><span class="nv">name</span><span class="p">,</span><span class="w"> </span><span class="nv">balance</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span><span class="w">          </span><span class="c1">-- свойства объекта: номер, название, баланс</span>
<span class="w">  </span><span class="nv">credit</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="kr">function</span><span class="w"> </span><span class="p">(</span><span class="nv">self</span><span class="p">,</span><span class="w"> </span><span class="nv">v</span><span class="p">)</span><span class="w">   </span><span class="c1">-- метод "расход" - описание внутри объекта с явным указанием получателя</span>
<span class="w">    </span><span class="kr">if</span><span class="w"> </span><span class="nv">self</span><span class="p">.</span><span class="py">balance</span><span class="w"> </span><span class="o">&lt;</span><span class="w"> </span><span class="nv">v</span><span class="w"> </span><span class="kr">then</span><span class="w"> </span><span class="nb">error</span><span class="w"> </span><span class="s2">"Недостаточно денег на счёте"</span><span class="w"> </span><span class="kr">end</span>
<span class="w">    </span><span class="nv">self</span><span class="p">.</span><span class="py">balance</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nv">self</span><span class="p">.</span><span class="py">balance</span><span class="w"> </span><span class="o">-</span><span class="w"> </span><span class="nv">v</span>
<span class="w">  </span><span class="kr">end</span>
<span class="p">}</span>

<span class="kr">function</span><span class="w"> </span><span class="nc">Account</span><span class="p">:</span><span class="nf">debet</span><span class="p">(</span><span class="nv">v</span><span class="p">)</span><span class="w">       </span><span class="c1">-- метод "приход" - внешнее сокращённое описание (self не указывается)</span>
<span class="w">  </span><span class="nv">self</span><span class="p">.</span><span class="py">balance</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nv">self</span><span class="p">.</span><span class="py">balance</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="nv">v</span>
<span class="kr">end</span>

<span class="nv">Account</span><span class="p">.</span><span class="nf">debet</span><span class="p">(</span><span class="nv">Account</span><span class="p">,</span><span class="w"> </span><span class="mi">10000</span><span class="p">)</span><span class="w">   </span><span class="c1">-- вызов метода - полный вариант</span>
<span class="nv">Account</span><span class="p">:</span><span class="nf">credit</span><span class="p">(</span><span class="mi">5000</span><span class="p">)</span><span class="w">            </span><span class="c1">-- вызов метода - сокращённый вариант</span>
</pre></div>
<p>Наследование, в том числе множественное, реализуется с помощью метатаблиц и метаметодов. Также с помощью метаметодов можно реализовать сокрытие данных и контролируемый доступ к полям таблицы-объекта. Если сравнивать данный подход с другими языками, где всё вышеперечисленное реализуется с помощью специальных языковых средств, то можно заметить, что реализация Lua сложнее и требует более тщательного кодирования, но обеспечивает бо́льшую гибкость и упрощает интерпретатор.
</p>
<div class="mw-heading mw-heading2"><h2 id="Примеры_кода"><span id=".D0.9F.D1.80.D0.B8.D0.BC.D0.B5.D1.80.D1.8B_.D0.BA.D0.BE.D0.B4.D0.B0"></span>Примеры кода</h2></div>
<p>Классическая программа «<a href="Hello%2C_world!" title="Hello, world!">Hello, world!</a>» на Lua выглядит так:
</p>
<div class="mw-highlight mw-highlight-lang-lua mw-content-ltr" dir="ltr"><pre><span></span><span class="nb">print</span><span class="p">(</span><span class="s2">"Hello, world!"</span><span class="p">)</span>
</pre></div>
<p><a href="%D0%A4%D0%B0%D0%BA%D1%82%D0%BE%D1%80%D0%B8%D0%B0%D0%BB" title="Факториал">Факториал</a>&nbsp;— пример <a href="%D0%A0%D0%B5%D0%BA%D1%83%D1%80%D1%81%D0%B8%D1%8F" title="Рекурсия">рекурсивной</a> функции:
</p>
<div class="mw-highlight mw-highlight-lang-lua mw-content-ltr" dir="ltr"><pre><span></span><span class="kr">function</span><span class="w"> </span><span class="nf">factorial</span><span class="p">(</span><span class="nv">n</span><span class="p">)</span>
<span class="w">  </span><span class="kr">if</span><span class="w"> </span><span class="nv">n</span><span class="w"> </span><span class="o">==</span><span class="w"> </span><span class="mi">0</span><span class="w"> </span><span class="kr">then</span>
<span class="w">    </span><span class="kr">return</span><span class="w"> </span><span class="mi">1</span>
<span class="w">  </span><span class="kr">else</span>
<span class="w">    </span><span class="kr">return</span><span class="w"> </span><span class="nv">n</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="nf">factorial</span><span class="p">(</span><span class="nv">n</span><span class="w"> </span><span class="o">-</span><span class="w"> </span><span class="mi">1</span><span class="p">)</span>
<span class="w">  </span><span class="kr">end</span>
<span class="kr">end</span>
</pre></div>
<p><a href="%D0%A6%D0%B8%D0%BA%D0%BB_%D1%81%D0%BE_%D1%81%D1%87%D1%91%D1%82%D1%87%D0%B8%D0%BA%D0%BE%D0%BC" class="mw-redirect" title="Цикл со счётчиком">Цикл со счётчиком</a>:
</p>
<div class="mw-highlight mw-highlight-lang-lua mw-content-ltr" dir="ltr"><pre><span></span><span class="kr">for</span><span class="w"> </span><span class="nv">i</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">1</span><span class="p">,</span><span class="mi">5</span><span class="w"> </span><span class="kr">do</span>
<span class="w">     </span><span class="c1">-- инструкции/операции</span>
<span class="kr">end</span>
</pre></div>
<p>Работа с функциями как с <a href="%D0%9E%D0%B1%D1%8A%D0%B5%D0%BA%D1%82_%D0%BF%D0%B5%D1%80%D0%B2%D0%BE%D0%B3%D0%BE_%D0%BA%D0%BB%D0%B0%D1%81%D1%81%D0%B0" title="Объект первого класса">объектами первого класса</a> демонстрируется в следующем примере, в котором модифицируется поведение функции print:
</p>
<div class="mw-highlight mw-highlight-lang-lua mw-content-ltr" dir="ltr"><pre><span></span><span class="kr">do</span>
<span class="w">  </span><span class="kd">local</span><span class="w"> </span><span class="nv">oldprint</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nb">print</span><span class="w">   </span><span class="c1">-- Сохраняем текущую функцию print как oldprint</span>
<span class="w">  </span><span class="kr">function</span><span class="w"> </span><span class="nf">print</span><span class="p">(</span><span class="nv">s</span><span class="p">)</span><span class="w">        </span><span class="c1">-- Переопределяем функцию print</span>
<span class="w">    </span><span class="kr">if</span><span class="w"> </span><span class="nv">s</span><span class="w"> </span><span class="o">==</span><span class="w"> </span><span class="s2">"foo"</span><span class="w"> </span><span class="kr">then</span>
<span class="w">      </span><span class="nf">oldprint</span><span class="p">(</span><span class="s2">"bar"</span><span class="p">)</span>
<span class="w">    </span><span class="kr">else</span>
<span class="w">      </span><span class="nf">oldprint</span><span class="p">(</span><span class="nv">s</span><span class="p">)</span>
<span class="w">    </span><span class="kr">end</span>
<span class="w">  </span><span class="kr">end</span>
<span class="kr">end</span>
</pre></div>
<p>Любой будущий вызов <code>print</code> теперь будет перенаправлен к новой функции, и благодаря поддержке в Lua <a href="%D0%9B%D0%B5%D0%BA%D1%81%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%B8%D0%B9_%D0%BA%D0%BE%D0%BD%D1%82%D0%B5%D0%BA%D1%81%D1%82" class="mw-redirect" title="Лексический контекст">лексического контекста</a> старая функция print будет доступна только посредством новой, модифицированной функции print. Lua также поддерживает <a href="%D0%97%D0%B0%D0%BC%D1%8B%D0%BA%D0%B0%D0%BD%D0%B8%D0%B5_(%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5)" title="Замыкание (программирование)">замыкания</a>, как описано выше, в соответствующем разделе.
</p><p>Ключевой особенностью Lua является расширяемая семантика, механизм метатаблиц даёт большие возможности по настройке уникального поведения для таблиц Lua. В следующем примере демонстрируется «бесконечная» таблица. Для любого <span class="mwe-math-element mwe-math-element-inline"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle n}">
  <semantics>
    <mrow class="MJX-TeXAtom-ORD">
      <mstyle displaystyle="true" scriptlevel="0">
        <mi>n</mi>
      </mstyle>
    </mrow>
    <annotation encoding="application/x-tex">{\displaystyle n}</annotation>
  </semantics>
</math></span><img src="./_assets_/eb734a37dd21ce173a46342d1cc64c92/a601995d55609f2d9f5e233e36fbe9ea26011b3b.svg" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.338ex; width:1.395ex; height:1.676ex;" alt="{\displaystyle n}" loading="lazy"></span> <code>fibs[n]</code> даст <span class="mwe-math-element mwe-math-element-inline"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle n}">
  <semantics>
    <mrow class="MJX-TeXAtom-ORD">
      <mstyle displaystyle="true" scriptlevel="0">
        <mi>n</mi>
      </mstyle>
    </mrow>
    <annotation encoding="application/x-tex">{\displaystyle n}</annotation>
  </semantics>
</math></span><img src="./_assets_/eb734a37dd21ce173a46342d1cc64c92/a601995d55609f2d9f5e233e36fbe9ea26011b3b.svg" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.338ex; width:1.395ex; height:1.676ex;" alt="{\displaystyle n}" loading="lazy"></span>-е <a href="%D0%A7%D0%B8%D1%81%D0%BB%D0%B0_%D0%A4%D0%B8%D0%B1%D0%BE%D0%BD%D0%B0%D1%87%D1%87%D0%B8" title="Числа Фибоначчи">число Фибоначчи</a> с использованием <a href="%D0%9C%D0%B5%D0%BC%D0%BE%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D1%8F" title="Мемоизация">мемоизации</a>.
</p>
<div class="mw-highlight mw-highlight-lang-lua mw-content-ltr" dir="ltr"><pre><span></span><span class="nv">fibs</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="mi">1</span><span class="w"> </span><span class="p">}</span><span class="w"> </span><span class="c1">-- Первоначальные значения для fibs[1] и fibs[2].</span>
<span class="nb">setmetatable</span><span class="p">(</span><span class="nv">fibs</span><span class="p">,</span><span class="w"> </span><span class="p">{</span><span class="w"> </span>
<span class="w">  </span><span class="nv">__index</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="kr">function</span><span class="p">(</span><span class="nv">name</span><span class="p">,</span><span class="w"> </span><span class="nv">n</span><span class="p">)</span><span class="w">            </span><span class="c1">-- Вызов функции, если fibs[n] не существует.</span>
<span class="w">    </span><span class="nv">name</span><span class="p">[</span><span class="nv">n</span><span class="p">]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nv">name</span><span class="p">[</span><span class="nv">n</span><span class="w"> </span><span class="o">-</span><span class="w"> </span><span class="mi">1</span><span class="p">]</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="nv">name</span><span class="p">[</span><span class="nv">n</span><span class="w"> </span><span class="o">-</span><span class="w"> </span><span class="mi">2</span><span class="p">]</span><span class="w">  </span><span class="c1">-- Расчёт и мемоизация fibs[n].</span>
<span class="w">    </span><span class="kr">return</span><span class="w"> </span><span class="nv">name</span><span class="p">[</span><span class="nv">n</span><span class="p">]</span><span class="w">                       </span>
<span class="w">  </span><span class="kr">end</span>
<span class="p">})</span>
</pre></div><p>Lua позволяет использовать логические операторы <code>and</code> и <code>or</code> для ввода <a href="%D0%A2%D0%B5%D1%80%D0%BD%D0%B0%D1%80%D0%BD%D0%B0%D1%8F_%D1%83%D1%81%D0%BB%D0%BE%D0%B2%D0%BD%D0%B0%D1%8F_%D0%BE%D0%BF%D0%B5%D1%80%D0%B0%D1%86%D0%B8%D1%8F" title="Тернарная условная операция">тернарных конструкций</a>, как, например, в <a href="C_Sharp" title="C Sharp">C#</a>, или обращение к одному из существующих объектов.</p><div class="mw-highlight mw-highlight-lang-lua mw-content-ltr" dir="ltr"><pre><span></span><span class="kr">do</span>
<span class="w">    </span><span class="kd">local</span><span class="w"> </span><span class="nv">num</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nb">tonumber</span><span class="p">(</span><span class="nb">io.read</span><span class="p">())</span><span class="w"> </span><span class="c1">-- Записывание в переменную введённой из консоли информации и преобразование её к целочисленному типу</span>
<span class="w">    </span><span class="nb">print</span><span class="p">(</span><span class="nv">num</span><span class="w"> </span><span class="o">==</span><span class="w"> </span><span class="mi">1</span><span class="w"> </span><span class="ow">and</span><span class="w"> </span><span class="s2">"Вы ввели правильное число"</span><span class="w"> </span><span class="ow">or</span><span class="w"> </span><span class="s2">"Вы ввели неправильное число"</span><span class="p">)</span><span class="w"> </span><span class="c1">-- Если переменная num равняется 1, тогда в консоли выведится текст после and, во всех остальных случаях после or</span>
<span class="kr">end</span>
</pre></div><p>Обращение к существующей таблице и получение значения по первому индексу:</p><div class="mw-highlight mw-highlight-lang-lua mw-content-ltr" dir="ltr"><pre><span></span><span class="kr">do</span>
<span class="w">    </span><span class="kd">local</span><span class="w"> </span><span class="nv">tbl</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="kc">nil</span>
<span class="w">    </span><span class="kd">local</span><span class="w"> </span><span class="nv">tbl2</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">{</span><span class="mi">1</span><span class="p">}</span>
<span class="w">    </span><span class="nb">print</span><span class="p">(</span><span class="w"> </span><span class="p">(</span><span class="nv">tbl</span><span class="w"> </span><span class="ow">or</span><span class="w"> </span><span class="nv">tbl2</span><span class="p">)[</span><span class="mi">1</span><span class="p">]</span><span class="w"> </span><span class="p">)</span><span class="w"> </span><span class="c1">-- Выведится число 1, так как в таблице tbl2 на индексе 1 присвоено это значение</span>
<span class="kr">end</span>
</pre></div><p>Вызов функции из одной из существующих таблиц:</p><div class="mw-highlight mw-highlight-lang-lua mw-content-ltr" dir="ltr"><pre><span></span><span class="kr">do</span>
<span class="w">    </span><span class="kd">local</span><span class="w"> </span><span class="nv">tbl</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="kc">nil</span>
<span class="w">    </span><span class="kd">local</span><span class="w"> </span><span class="nv">tbl2</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">{}</span>
<span class="w">    </span><span class="nv">tbl2</span><span class="p">.</span><span class="py">DoSomething</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="kr">function</span><span class="p">()</span><span class="w"> </span><span class="nb">print</span><span class="p">(</span><span class="s2">"Делать что-то"</span><span class="p">)</span><span class="w"> </span><span class="kr">end</span>
<span class="w">    </span><span class="p">(</span><span class="nv">tbl</span><span class="w"> </span><span class="ow">or</span><span class="w"> </span><span class="nv">tbl2</span><span class="p">).</span><span class="nf">DoSomething</span><span class="p">()</span>
<span class="kr">end</span>
</pre></div>
<div class="mw-heading mw-heading2"><h2 id="Реализация"><span id=".D0.A0.D0.B5.D0.B0.D0.BB.D0.B8.D0.B7.D0.B0.D1.86.D0.B8.D1.8F"></span>Реализация</h2></div>
<p>Как и многие <a href="%D0%98%D0%BD%D1%82%D0%B5%D1%80%D0%BF%D1%80%D0%B5%D1%82%D0%B8%D1%80%D1%83%D0%B5%D0%BC%D1%8B%D0%B9_%D1%8F%D0%B7%D1%8B%D0%BA_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D1%8F" title="Интерпретируемый язык программирования">интерпретируемые языки программирования</a>, реализация <i>Lua</i> имеет отдельно <a href="%D0%9A%D0%BE%D0%BC%D0%BF%D0%B8%D0%BB%D1%8F%D1%82%D0%BE%D1%80" title="Компилятор">компилятор</a> с исходного языка в исполняемый <a href="%D0%91%D0%B0%D0%B9%D1%82-%D0%BA%D0%BE%D0%B4" title="Байт-код">байт-код</a> и <a href="%D0%92%D0%B8%D1%80%D1%82%D1%83%D0%B0%D0%BB%D1%8C%D0%BD%D0%B0%D1%8F_%D0%BC%D0%B0%D1%88%D0%B8%D0%BD%D0%B0" title="Виртуальная машина">виртуальную машину</a> для исполнения сгенерированного байт-кода. Причём байт-код&nbsp;— это не команды стековой машины, а команды некоего виртуального процессора с несколькими регистрами, что повышает эффективность исполнения. В стандартной виртуальной машине <i>Lua</i> используется распределение памяти со сборкой мусора (аналогично Java или .NET).
</p><p><i>Lua</i> использует единый <a href="%D0%9F%D1%83%D0%BB_%D1%81%D1%82%D1%80%D0%BE%D0%BA" title="Пул строк">строковый пул</a>, что позволяет снизить расходы памяти на хранение строк.
</p><p>Для задач, критичных по времени, имеется <a href="JIT-%D0%BA%D0%BE%D0%BC%D0%BF%D0%B8%D0%BB%D1%8F%D1%86%D0%B8%D1%8F" title="JIT-компиляция">JIT</a>-<a href="%D0%9A%D0%BE%D0%BC%D0%BF%D0%B8%D0%BB%D1%8F%D1%82%D0%BE%D1%80" title="Компилятор">компилятор</a> <i>Lua</i>&nbsp;— LuaJIT<sup id="cite_ref-16" class="reference"><a href="#cite_note-16"><span class="cite-bracket">[</span>16<span class="cite-bracket">]</span></a></sup>. Также разработан компилятор llvm-lua<sup id="cite_ref-17" class="reference"><a href="#cite_note-17"><span class="cite-bracket">[</span>17<span class="cite-bracket">]</span></a></sup>, генерирующий код для виртуальной машины <a href="Low_Level_Virtual_Machine" class="mw-redirect" title="Low Level Virtual Machine">LLVM</a>, предоставляющей возможность последующей компиляции в очень эффективный машинный код для процессоров различной архитектуры.
</p>
<div class="mw-heading mw-heading2"><h2 id="Использование"><span id=".D0.98.D1.81.D0.BF.D0.BE.D0.BB.D1.8C.D0.B7.D0.BE.D0.B2.D0.B0.D0.BD.D0.B8.D0.B5"></span>Использование</h2></div>

<p>В настоящее время используется в различных проектах, где требуется встроить достаточно быстрый и нетрудный в освоении <a href="%D0%A1%D1%86%D0%B5%D0%BD%D0%B0%D1%80%D0%BD%D1%8B%D0%B9_%D1%8F%D0%B7%D1%8B%D0%BA" title="Сценарный язык">скриптовый язык</a> программирования&nbsp;— например, в разработке <a href="%D0%9A%D0%BE%D0%BC%D0%BF%D1%8C%D1%8E%D1%82%D0%B5%D1%80%D0%BD%D0%B0%D1%8F_%D0%B8%D0%B3%D1%80%D0%B0" title="Компьютерная игра">игр</a>, где <i>Lua</i> часто используется в качестве прослойки между <a href="%D0%98%D0%B3%D1%80%D0%BE%D0%B2%D0%BE%D0%B9_%D0%B4%D0%B2%D0%B8%D0%B6%D0%BE%D0%BA" title="Игровой движок">игровым движком</a> и данными для написания сценариев поведения и взаимодействия объектов. Благодаря компактности применим и в портативных устройствах, в частности, один из графических микрокалькуляторов <a href="Texas_Instruments" title="Texas Instruments">Texas Instruments</a>, а именно, TI-Nspire CX, использует язык LUA помимо традиционного для такого класса устройств <a href="%D0%91%D0%B5%D0%B9%D1%81%D0%B8%D0%BA" title="Бейсик">Бейсика</a>.
</p>
<div class="mw-heading mw-heading3"><h3 id="Игры"><span id=".D0.98.D0.B3.D1.80.D1.8B"></span>Игры</h3></div>
<p>Первыми в разработку компьютерных игр язык <i>Lua</i> внедрила компания <a href="LucasArts_Entertainment" class="mw-redirect" title="LucasArts Entertainment">LucasArts</a> начиная с игры <a href="Grim_Fandango" title="Grim Fandango">Grim Fandango</a><sup id="cite_ref-18" class="reference"><a href="#cite_note-18"><span class="cite-bracket">[</span>18<span class="cite-bracket">]</span></a></sup>. Авторы языка в своём докладе на конференции <span data-interwiki-lang="en" data-interwiki-article="HOPL">HOPL</span> вспоминают, что в январе 1997 они получили сообщение от Брета Могилефски, главного разработчика Grim Fandango, где он писал, что, прочитав о языке в статье 1996&nbsp;года в <a href="Dr._Dobb%E2%80%99s_Journal" title="Dr. Dobb’s Journal">Dr. Dobb’s Journal</a>, он планирует заменить используемый ими самодельный скриптовый язык <a href="SCUMM" title="SCUMM">SCUMM</a> на <i>Lua</i><sup id="cite_ref-_6bcfade031b2e0bb_19-0" class="reference"><a href="#cite_note-_6bcfade031b2e0bb-19"><span class="cite-bracket">[</span>19<span class="cite-bracket">]</span></a></sup>. В результате им был создан игровой движок <a href="GrimE" title="GrimE">GrimE</a>, используемый также более поздним квестом от LucasArts&nbsp;— <a href="Escape_from_Monkey_Island" title="Escape from Monkey Island">Escape from Monkey Island</a>.
</p><p>В 2003&nbsp;году в результате опроса на сайте <a href="GameDev.net" title="GameDev.net">GameDev.net</a> <i>Lua</i> был признан самым популярным скриптовым языком для разработки игр<sup id="cite_ref-pollres_10-1" class="reference"><a href="#cite_note-pollres-10"><span class="cite-bracket">[</span>10<span class="cite-bracket">]</span></a></sup>.
</p><p>Примером игры, программируемой с помощью <i>Lua</i>, является <a href="World_of_Warcraft" title="World of Warcraft">World of Warcraft</a><sup id="cite_ref-20" class="reference"><a href="#cite_note-20"><span class="cite-bracket">[</span>20<span class="cite-bracket">]</span></a></sup><sup id="cite_ref-21" class="reference"><a href="#cite_note-21"><span class="cite-bracket">[</span>21<span class="cite-bracket">]</span></a></sup>. На языке <i>Lua</i> описываются уровни игры-головоломки <a href="Enigma_(%D0%BA%D0%BE%D0%BC%D0%BF%D1%8C%D1%8E%D1%82%D0%B5%D1%80%D0%BD%D0%B0%D1%8F_%D0%B8%D0%B3%D1%80%D0%B0)" title="Enigma (компьютерная игра)">Enigma</a><sup id="cite_ref-22" class="reference"><a href="#cite_note-22"><span class="cite-bracket">[</span>22<span class="cite-bracket">]</span></a></sup>.
</p><p>Доступен ряд <a href="%D0%A1%D0%B2%D0%BE%D0%B1%D0%BE%D0%B4%D0%BD%D0%BE%D0%B5_%D0%9F%D0%9E" class="mw-redirect" title="Свободное ПО">свободных</a> игровых движков, программируемых на Lua, таких, как <a href="Defold" title="Defold">Defold</a><sup id="cite_ref-23" class="reference"><a href="#cite_note-23"><span class="cite-bracket">[</span>23<span class="cite-bracket">]</span></a></sup><style data-mw-deduplicate="TemplateStyles:r141254988">
/* start https://ru.wikipedia.org/ */


.mw-parser-output .ts-fix-template{font-style:normal;font-weight:normal;white-space:nowrap}.mw-parser-output .ts-fix-error{font-size:inherit}@media screen{.mw-parser-output .ts-fix-text{border:1px solid var(--border-color-base,#a2a9b1);box-decoration-break:clone;margin:0 -0.1em;padding:0 0.1em;transition:background 0.1s}.mw-parser-output .ts-fix-text:hover{background:#fee7e6}html.skin-theme-clientpref-night .mw-parser-output .ts-fix-text:hover{background:#4f1312}}@media screen and (prefers-color-scheme:dark){html.skin-theme-clientpref-os .mw-parser-output .ts-fix-text:hover{background:#4f1312}}@media screen and (hover:hover){.mw-parser-output .ts-fix-comment,.mw-parser-output .ts-fix-commented>a:not(:hover){border-bottom:1px dotted;text-decoration:none}}


/* end   https://ru.wikipedia.org/ */
</style><sup class="ts-fix-template">[<i>значимость факта?</i>]</sup>, <a href="%D0%90%D1%80%D0%BA%D0%B0%D0%B4%D0%B0_(%D0%B8%D0%B3%D1%80%D0%B0)" class="mw-redirect" title="Аркада (игра)">аркадный</a> движок <a href="L%C3%96VE" title="LÖVE">LÖVE</a><sup id="cite_ref-24" class="reference"><a href="#cite_note-24"><span class="cite-bracket">[</span>24<span class="cite-bracket">]</span></a></sup><sup id="cite_ref-25" class="reference"><a href="#cite_note-25"><span class="cite-bracket">[</span>25<span class="cite-bracket">]</span></a></sup>, игровой конструктор <a href="Novashell" title="Novashell">Novashell</a><sup id="cite_ref-26" class="reference"><a href="#cite_note-26"><span class="cite-bracket">[</span>26<span class="cite-bracket">]</span></a></sup> и ориентированный на <a href="%D0%9A%D0%B2%D0%B5%D1%81%D1%82" class="mw-redirect" title="Квест">квесты</a> (преимущественно&nbsp;— <a href="Interactive_fiction" title="Interactive fiction">текстовые</a>) <a href="INSTEAD" title="INSTEAD">INSTEAD</a><sup id="cite_ref-27" class="reference"><a href="#cite_note-27"><span class="cite-bracket">[</span>27<span class="cite-bracket">]</span></a></sup>.
</p><p>Также используется в авиасимуляторе X-Plane, в движке <a href="X-Ray_(%D0%B4%D0%B2%D0%B8%D0%B6%D0%BE%D0%BA)" class="mw-redirect" title="X-Ray (движок)">X-Ray</a> для <a href="S.T.A.L.K.E.R." title="S.T.A.L.K.E.R.">S.T.A.L.K.E.R</a><sup id="cite_ref-28" class="reference"><a href="#cite_note-28"><span class="cite-bracket">[</span>28<span class="cite-bracket">]</span></a></sup><a href="S.T.A.L.K.E.R." title="S.T.A.L.K.E.R.">.</a>
</p><p>Для популярной игры <a href="Minecraft" title="Minecraft">Minecraft</a> созданы модификации ComputerCraft и его более совершенный аналог OpenComputers, которые добавляют компьютеры, программируемые на языке Lua<sup id="cite_ref-29" class="reference"><a href="#cite_note-29"><span class="cite-bracket">[</span>29<span class="cite-bracket">]</span></a></sup>.
</p><p>Известная игра <a href="Garry's_Mod" class="mw-redirect" title="Garry's Mod">Garry's Mod</a> программируется, а также поддерживает модификации, написанные на Lua.
</p><p>Команда <a href="Croteam" title="Croteam">Croteam</a> (разработчики <a href="Serious_Sam_(%D1%81%D0%B5%D1%80%D0%B8%D1%8F_%D0%B8%D0%B3%D1%80)" class="mw-redirect" title="Serious Sam (серия игр)">Serious Sam</a> и <a href="The_Talos_Principle" title="The Talos Principle">The Talos Principle</a>) использует Lua в скриптах начиная с версии Serious Engine 3.5<sup id="cite_ref-30" class="reference"><a href="#cite_note-30"><span class="cite-bracket">[</span>30<span class="cite-bracket">]</span></a></sup>.
</p><p>Для игры <a href="Grand_Theft_Auto%3A_San_Andreas" title="Grand Theft Auto: San Andreas">GTA: San Andreas</a> создаются модификации, написанные на языке Lua и поддерживаемые плагином Moonloader.<sup id="cite_ref-31" class="reference"><a href="#cite_note-31"><span class="cite-bracket">[</span>31<span class="cite-bracket">]</span></a></sup> Также игра Multi Theft Auto поддерживает программирование скриптов на языке Lua.
</p><p>Игровая платформа <a href="Roblox" title="Roblox">Roblox</a> использует Lua в качестве языка кодирования игр и управления игровой средой<sup id="cite_ref-32" class="reference"><a href="#cite_note-32"><span class="cite-bracket">[</span>32<span class="cite-bracket">]</span></a></sup>.
</p><p>Сообществом игры <a href="Satisfactory" title="Satisfactory">Satisfactory</a> создан мод Ficsit-Networks, дающий возможность программировать какие-либо действия на языке Lua<sup id="cite_ref-33" class="reference"><a href="#cite_note-33"><span class="cite-bracket">[</span>33<span class="cite-bracket">]</span></a></sup>.
</p><p>В игре <a href="Factorio" title="Factorio">Factorio</a> используется Lua для создания модов.<sup id="cite_ref-34" class="reference"><a href="#cite_note-34"><span class="cite-bracket">[</span>34<span class="cite-bracket">]</span></a></sup><sup id="cite_ref-35" class="reference"><a href="#cite_note-35"><span class="cite-bracket">[</span>35<span class="cite-bracket">]</span></a></sup>
</p><p><span class="ts-fix-text" style="-webkit-box-decoration-break: clone">В игре Dual Universe используется для внутри игровой механики и программирования игровых блоков</span>
</p>
<div class="mw-heading mw-heading3"><h3 id="LuaTeX">LuaTeX</h3></div>
<p>Программа компьютерной вёрстки <a href="LuaTeX" title="LuaTeX">LuaTeX</a>, расширенная версия <a href="PdfTeX" title="PdfTeX">pdfTeX</a>, использует Lua как встроенный скриптовый язык<sup id="cite_ref-36" class="reference"><a href="#cite_note-36"><span class="cite-bracket">[</span>36<span class="cite-bracket">]</span></a></sup>.
</p>
<div class="mw-heading mw-heading3"><h3 id="RPM">RPM</h3></div>
<p>Пакетный менеджер <a href="RPM" title="RPM">RPM</a> содержит встроенный интерпретатор Lua<sup id="cite_ref-37" class="reference"><a href="#cite_note-37"><span class="cite-bracket">[</span>37<span class="cite-bracket">]</span></a></sup>.
</p>
<div class="mw-heading mw-heading2"><h2 id="IDE">IDE</h2></div>
<p>Существует как минимум две «родные» <a href="%D0%98%D0%BD%D1%82%D0%B5%D0%B3%D1%80%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%BD%D0%B0%D1%8F_%D1%81%D1%80%D0%B5%D0%B4%D0%B0_%D1%80%D0%B0%D0%B7%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D0%BA%D0%B8" title="Интегрированная среда разработки">среды разработки</a> для Lua:
</p>
<ul><li><a href="ZeroBrane_Studio" title="ZeroBrane Studio">ZeroBrane Studio</a><sup id="cite_ref-38" class="reference"><a href="#cite_note-38"><span class="cite-bracket">[</span>38<span class="cite-bracket">]</span></a></sup>&nbsp;— <a href="%D0%9A%D1%80%D0%BE%D1%81%D1%81%D0%BF%D0%BB%D0%B0%D1%82%D1%84%D0%BE%D1%80%D0%BC%D0%B5%D0%BD%D0%BD%D0%BE%D1%81%D1%82%D1%8C" title="Кроссплатформенность">мультиплатформенная</a> среда разработки, написанная на самом Lua;</li>
<li><a href="Decoda" title="Decoda">Decoda</a>&nbsp;— среда разработки под Windows, написанная на <a href="C%2B%2B" title="C++">C++</a>, с богатыми возможностями отладки Lua-скриптов, в том числе в работающих приложениях. На 2018&nbsp;год последний выпуск среды датировался 2014&nbsp;годом и имеет статус <a href="%D0%91%D0%B5%D1%82%D0%B0-%D0%B2%D0%B5%D1%80%D1%81%D0%B8%D0%B8" class="mw-redirect" title="Бета-версии">бета-версии</a>.</li></ul>
<p>Кроме того, Lua поддерживается некоторыми универсальными IDE, в частности:
</p>
<ul><li><a href="Geany" title="Geany">Geany</a>;</li>
<li>Lua Development Tools<sup id="cite_ref-39" class="reference"><a href="#cite_note-39"><span class="cite-bracket">[</span>39<span class="cite-bracket">]</span></a></sup> для <a href="Eclipse_(%D1%81%D1%80%D0%B5%D0%B4%D0%B0_%D1%80%D0%B0%D0%B7%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D0%BA%D0%B8)" title="Eclipse (среда разработки)">среды Eclipse</a>;</li>
<li>плагин EmmyLua для среды <a href="IntelliJ_IDEA" title="IntelliJ IDEA">IntelliJ IDEA</a>, также оснащённый проверкой синтаксиса «на лету» и развитой системой аннотаций типов<sup id="cite_ref-40" class="reference"><a href="#cite_note-40"><span class="cite-bracket">[</span>40<span class="cite-bracket">]</span></a></sup>;</li>
<li>расширение для <a href="Visual_Studio_Code" title="Visual Studio Code">Visual Studio Code</a> с поддержкой <a href="IntelliSense" title="IntelliSense">IntelliSense</a>, подсветки синтаксиса, форматирования кода, отладки.</li></ul>
<p>Существовал модуль поддержки Lua для среды <a href="NetBeans" title="NetBeans">NetBeans</a>, но его развитие прекратилось в 2013&nbsp;году и он доступен только для версии NetBeans 7.4 и более ранних. В NetBeans 8 плагин не поддерживается.
</p>
<div class="mw-heading mw-heading2"><h2 id="См._также"><span id=".D0.A1.D0.BC._.D1.82.D0.B0.D0.BA.D0.B6.D0.B5"></span>См. также</h2></div>
<ul><li><span data-interwiki-lang="en" data-interwiki-article="List of applications using Lua">Список приложений, использующих Lua</span>;</li>
<li><a href="Squirrel" title="Squirrel">Squirrel</a>&nbsp;— язык программирования на основе Lua.</li>
<li>Википедия:Модули — об использовании языка Lua в Википедии.</li></ul>
<div class="mw-heading mw-heading2"><h2 id="Примечания"><span id=".D0.9F.D1.80.D0.B8.D0.BC.D0.B5.D1.87.D0.B0.D0.BD.D0.B8.D1.8F"></span>Примечания</h2></div>
<div class="reflist columns" style="list-style-type: decimal;">
<div class="mw-references-wrap mw-references-columns"><ol class="references">
<li id="cite_note-_60f51cf5d8eca27b-1"><span class="mw-cite-backlink">↑ <a href="#cite_ref-_60f51cf5d8eca27b_1-0"><sup><i><b>1</b></i></sup></a> <a href="#cite_ref-_60f51cf5d8eca27b_1-1"><sup><i><b>2</b></i></sup></a></span> <span class="reference-text"><a rel="nofollow" class="external text" href="https://www.lua.org/authors.html">https://www.lua.org/authors.html</a><span class="wef_low_priority_links"></span></span>
</li>
<li id="cite_note-_035fee4e911e47ab-2"><span class="mw-cite-backlink"><a href="#cite_ref-_035fee4e911e47ab_2-0">↑</a></span> <span class="reference-text"><a rel="nofollow" class="external text" href="https://lua.org/versions.html#5.5">https://lua.org/versions.html#5.5</a><span class="wef_low_priority_links"></span></span>
</li>
<li id="cite_note-_4c79a8b56e7ac852-3"><span class="mw-cite-backlink"><a href="#cite_ref-_4c79a8b56e7ac852_3-0">↑</a></span> <span class="reference-text"><a rel="nofollow" class="external text" href="http://www.lua.org/about.html">Lua: about</a><span class="wef_low_priority_links"></span></span>
</li>
<li id="cite_note-_f6794e01c978dae3-4"><span class="mw-cite-backlink"><a href="#cite_ref-_f6794e01c978dae3_4-0">↑</a></span> <span class="reference-text"><a rel="nofollow" class="external text" href="https://www.lua.org/manual/5.1/manual.html#6">Lua 5.1 Reference Manual</a><span class="wef_low_priority_links"> — 2019.</span></span>
</li>
<li id="cite_note-_0e36914d50f06bfa-5"><span class="mw-cite-backlink"><a href="#cite_ref-_0e36914d50f06bfa_5-0">↑</a></span> <span class="reference-text"><span class="wikidata_cite citetype_Q5633421" data-entity-id="Q1120519"><a rel="nofollow" class="external text" href="https://cacm.acm.org/magazines/2018/11/232214-a-look-at-the-design-of-lua/fulltext">A Look at the Design of Lua</a>&nbsp;<span class="ref-info" title="на английском языке" style="cursor:help;">(англ.)</span><span class="wef_low_priority_links"> — New York City: <a href="%D0%90%D1%81%D1%81%D0%BE%D1%86%D0%B8%D0%B0%D1%86%D0%B8%D1%8F_%D0%B2%D1%8B%D1%87%D0%B8%D1%81%D0%BB%D0%B8%D1%82%D0%B5%D0%BB%D1%8C%D0%BD%D0%BE%D0%B9_%D1%82%D0%B5%D1%85%D0%BD%D0%B8%D0%BA%D0%B8" title="Ассоциация вычислительной техники">Association for Computing Machinery</a>, 2018. — ISSN <a rel="nofollow" class="external text" href="https://www.worldcat.org/issn/0001-0782">0001-0782</a>; <a rel="nofollow" class="external text" href="https://www.worldcat.org/issn/1557-7317">1557-7317</a></span></span></span>
</li>
<li id="cite_note-_a620648b3c13f85d-6"><span class="mw-cite-backlink"><a href="#cite_ref-_a620648b3c13f85d_6-0">↑</a></span> <span class="reference-text"><a rel="nofollow" class="external text" href="https://www.lua.org/license.html">https://www.lua.org/license.html</a><span class="wef_low_priority_links"></span></span>
</li>
<li id="cite_note-_f99e1aaed0cb6e18-7"><span class="mw-cite-backlink"><a href="#cite_ref-_f99e1aaed0cb6e18_7-0">↑</a></span> <span class="reference-text"><span class="wikidata_cite citetype_Q35127 citetype_Q2352616" data-entity-id="Q124688"><a rel="nofollow" class="external text" href="https://www.openhub.net/p/lua/licenses">The lua Open Source Project on Open Hub: Licenses Page</a><span class="wef_low_priority_links"> — 2006.</span></span></span>
</li>
<li id="cite_note-_f2c6299e60c63ba9-8"><span class="mw-cite-backlink"><a href="#cite_ref-_f2c6299e60c63ba9_8-0">↑</a></span> <span class="reference-text"><a rel="nofollow" class="external text" href="https://www.lua.org/about.html">https://www.lua.org/about.html</a><span class="wef_low_priority_links"></span></span>
</li>
<li id="cite_note-luaabout-9"><span class="mw-cite-backlink"><a href="#cite_ref-luaabout_9-0">↑</a></span> <span class="reference-text"><span class="citation"><span lang="und"><a rel="nofollow" class="external text" href="http://www.lua.org/about.html#name">About Lua</a></span><span class="hidden-ref" style="display:none;">&nbsp;</span>. Lua.org. Дата обращения: 19 июня 2013. <a rel="nofollow" class="external text" href="https://web.archive.org/web/20181226034345/http://www.lua.org/about.html#name">Архивировано</a> 26 декабря 2018 года.</span></span>
</li>
<li id="cite_note-pollres-10"><span class="mw-cite-backlink">↑ <a href="#cite_ref-pollres_10-0"><sup><i><b>1</b></i></sup></a> <a href="#cite_ref-pollres_10-1"><sup><i><b>2</b></i></sup></a></span> <span class="reference-text"><a rel="nofollow" class="external text" href="https://web.archive.org/web/20031207171619/http://gamedev.net/gdpolls/viewpoll.asp?ID=163">Which language do you use for scripting in your game engine?. GameDev.net&nbsp;— Poll Results</a></span>
</li>
<li id="cite_note-_351cd094b07f2e63-11"><span class="mw-cite-backlink">↑ <a href="#cite_ref-_351cd094b07f2e63_11-0"><sup><i><b>1</b></i></sup></a> <a href="#cite_ref-_351cd094b07f2e63_11-1"><sup><i><b>2</b></i></sup></a></span> <span class="reference-text"><a href="#CITEREFБьянкуцци,_Уорден2011">Бьянкуцци, Уорден, 2011</a>, с.&nbsp;216.</span>
</li>
<li id="cite_note-12"><span class="mw-cite-backlink"><a href="#cite_ref-12">↑</a></span> <span class="reference-text"><span class="citation"><span lang="und"><a rel="nofollow" class="external text" href="http://www.lua.org/history.html">The evolution of an extension language: a history of Lua</a></span><span class="hidden-ref" style="display:none;">&nbsp;</span> (2001). Дата обращения: 24 августа 2016. <a rel="nofollow" class="external text" href="https://web.archive.org/web/20171014054934/http://www.lua.org/history.html">Архивировано</a> 14 октября 2017 года.</span></span>
</li>
<li id="cite_note-_0c20ebd0e307212b-13"><span class="mw-cite-backlink"><a href="#cite_ref-_0c20ebd0e307212b_13-0">↑</a></span> <span class="reference-text"><a href="#CITEREFHOPL2007">HOPL, 2007</a>, p.&nbsp;2–1–2–26.</span>
</li>
<li id="cite_note-ddj96-14"><span class="mw-cite-backlink"><a href="#cite_ref-ddj96_14-0">↑</a></span> <span class="reference-text"><style data-mw-deduplicate="TemplateStyles:r150646110">
/* start https://ru.wikipedia.org/ */


.mw-parser-output cite.citation{font-style:inherit;word-wrap:break-word}.mw-parser-output .citation q{quotes:"«""»""„""“"}.mw-parser-output .citation:target{background-color:rgba(0,127,255,0.133)}.mw-parser-output .id-lock-free a::after,.mw-parser-output .id-lock-limited a::after,.mw-parser-output .id-lock-registration a::after,.mw-parser-output .id-lock-subscription a::after,.mw-parser-output .cs1-ws-icon a::after{content:"";width:1.1em;height:1.1em;display:inline-block;vertical-align:middle;background-position:center;background-repeat:no-repeat;background-size:contain}.mw-parser-output .id-lock-free.id-lock-free a::after{background-image:url("./_mw_/Lock-green.svg")}.mw-parser-output .id-lock-limited.id-lock-limited a::after,.mw-parser-output .id-lock-registration.id-lock-registration a::after{background-image:url("./_mw_/Lock-gray-alt-2.svg")}.mw-parser-output .id-lock-subscription.id-lock-subscription a::after{background-image:url("./_mw_/Lock-red-alt-2.svg")}.mw-parser-output .cs1-ws-icon a::after{background-image:url("./_mw_/Wikisource-logo.svg")}.mw-parser-output .cs1-code{color:inherit;background:inherit;border:none;padding:inherit}.mw-parser-output .cs1-hidden-error{display:none;color:var(--color-error,#d33)}.mw-parser-output .cs1-visible-error{color:var(--color-error,#d33)}.mw-parser-output .cs1-maint{display:none;color:#085;margin-left:0.3em}.mw-parser-output .cs1-kern-left{padding-left:0.2em}.mw-parser-output .cs1-kern-right{padding-right:0.2em}.mw-parser-output .citation .mw-selflink{font-weight:inherit}@media screen{.mw-parser-output .cs1-format{font-size:95%}html.skin-theme-clientpref-night .mw-parser-output .cs1-maint{color:#18911f}html.skin-theme-clientpref-night .mw-parser-output .id-lock-free a::after,html.skin-theme-clientpref-night .mw-parser-output .id-lock-limited a::after,html.skin-theme-clientpref-night .mw-parser-output .id-lock-registration a::after,html.skin-theme-clientpref-night .mw-parser-output .id-lock-subscription a::after{filter:invert(1)hue-rotate(180deg)}}@media screen and (prefers-color-scheme:dark){html.skin-theme-clientpref-os .mw-parser-output .cs1-maint{color:#18911f}html.skin-theme-clientpref-os .mw-parser-output .id-lock-free a::after,html.skin-theme-clientpref-os .mw-parser-output .id-lock-limited a::after,html.skin-theme-clientpref-os .mw-parser-output .id-lock-registration a::after,html.skin-theme-clientpref-os .mw-parser-output .id-lock-subscription a::after{filter:invert(1)hue-rotate(180deg)}}


/* end   https://ru.wikipedia.org/ */
</style><cite id="CITEREFFigueiredoIerusalimschyCeles1996" class="citation news cs1">Figueiredo, L. H.; Ierusalimschy, R.; Celes, W. (Декабрь 1996). <a rel="nofollow" class="external text" href="http://www.lua.org/ddj.html">Lua: an Extensible Embedded Language. A few metamechanisms replace a host of features</a>. <i>Dr. Dobb's Journal</i>. Vol.&nbsp;21, no.&nbsp;12. pp.&nbsp;<span class="nowrap">26—</span>33. <a rel="nofollow" class="external text" href="https://web.archive.org/web/20141020005146/http://www.lua.org/ddj.html">Архивировано</a> 20 октября 2014<span class="reference-accessdate">. Дата обращения: 20 сентября 2014</span>.</cite><span title="ctx_ver=Z39.88-2004&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Ajournal&amp;rft.genre=article&amp;rft.jtitle=Dr.+Dobb%27s+Journal&amp;rft.atitle=Lua%3A+an+Extensible+Embedded+Language.+A+few+metamechanisms+replace+a+host+of+features&amp;rft.volume=21&amp;rft.issue=12&amp;rft.pages=26%E2%80%9433&amp;rft.date=1996-12&amp;rft.aulast=Figueiredo&amp;rft.aufirst=L.+H.&amp;rft.au=Ierusalimschy%2C+R.&amp;rft.au=Celes%2C+W.&amp;rft_id=http%3A%2F%2Fwww.lua.org%2Fddj.html&amp;rfr_id=info%3Asid%2Fru.wikipedia.org%3ALua" class="Z3988"></span></span>
</li>
<li id="cite_note-man1-15"><span class="mw-cite-backlink"><a href="#cite_ref-man1_15-0">↑</a></span> <span class="reference-text"><span class="citation"><span lang="und"><a rel="nofollow" class="external text" href="http://www.lua.org/manual/5.1/manual.html">Lua 5.1 Reference Manual</a></span><span class="hidden-ref" style="display:none;">&nbsp;</span>. Дата обращения: 5 ноября 2019. <a rel="nofollow" class="external text" href="https://web.archive.org/web/20131115025136/http://www.lua.org/manual/5.1/manual.html/">Архивировано</a> 15 ноября 2013 года.</span></span>
</li>
<li id="cite_note-16"><span class="mw-cite-backlink"><a href="#cite_ref-16">↑</a></span> <span class="reference-text"><span class="citation"><span lang="und"><a rel="nofollow" class="external text" href="http://luajit.org/">The LuaJIT Project</a></span><span class="hidden-ref" style="display:none;">&nbsp;</span>. Дата обращения: 18 мая 2009. <a rel="nofollow" class="external text" href="https://web.archive.org/web/20090416174446/http://luajit.org/">Архивировано</a> 16 апреля 2009 года.</span></span>
</li>
<li id="cite_note-17"><span class="mw-cite-backlink"><a href="#cite_ref-17">↑</a></span> <span class="reference-text"><span class="citation"><span lang="und"><a rel="nofollow" class="external text" href="https://code.google.com/p/llvm-lua/">llvm-lua. JIT/Static compiler for Lua using LLVM on the backend.</a></span><span class="hidden-ref" style="display:none;">&nbsp;</span> Дата обращения: 21 января 2009. <a rel="nofollow" class="external text" href="https://web.archive.org/web/20090122040815/http://code.google.com/p/llvm-lua/">Архивировано</a> 22 января 2009 года.</span></span>
</li>
<li id="cite_note-18"><span class="mw-cite-backlink"><a href="#cite_ref-18">↑</a></span> <span class="reference-text"><span class="citation"><i>Bret Mogilefsky.</i> <span lang="und"><a rel="nofollow" class="external text" href="http://www.grimfandango.net/?page=articles&amp;pagenumber=2">Lua in Grim Fandango</a></span><span class="hidden-ref" style="display:none;">&nbsp;</span>. Дата обращения: 9 декабря 2011. <a rel="nofollow" class="external text" href="https://www.webcitation.org/65BoxDdvU?url=http://www.grimfandango.net/?page=articles">Архивировано</a> 4 февраля 2012 года.</span></span>
</li>
<li id="cite_note-_6bcfade031b2e0bb-19"><span class="mw-cite-backlink"><a href="#cite_ref-_6bcfade031b2e0bb_19-0">↑</a></span> <span class="reference-text"><a href="#CITEREFHOPL2007">HOPL, 2007</a>, с.&nbsp;11.</span>
</li>
<li id="cite_note-20"><span class="mw-cite-backlink"><a href="#cite_ref-20">↑</a></span> <span class="reference-text"><span class="citation no-wikidata" data-wikidata-property-id="P1343"><i>Paul Emmerich.</i> <a rel="nofollow" class="external text" href="https://archive.org/details/beginningluawith0000emme">Beginning Lua with World of Warcraft Add-ons</a>.&nbsp;— <a href="Apress" title="Apress">Apress</a>, July 2009.&nbsp;— ISBN 1430223715.</span></span>
</li>
<li id="cite_note-21"><span class="mw-cite-backlink"><a href="#cite_ref-21">↑</a></span> <span class="reference-text"><span class="citation no-wikidata" data-wikidata-property-id="P1343"><i>James Whitehead II, Bryan McLemore, and Matthew Orlando.</i> <a rel="nofollow" class="external text" href="https://archive.org/details/worldofwarcraftp00whit">World of Warcraft Programming</a>.&nbsp;— <a href="John_Wiley_%26_Sons" title="John Wiley &amp; Sons">Wiley</a>, May 2008.&nbsp;— ISBN 0470229810.</span></span>
</li>
<li id="cite_note-22"><span class="mw-cite-backlink"><a href="#cite_ref-22">↑</a></span> <span class="reference-text"><span class="citation no-wikidata" data-wikidata-property-id="P1343"><i>Tom Gutschmidt.</i> <span data-wikidata-qualifier-id="P248">Ch. 8. The Lua Game Community → Game Engines</span> // <a rel="nofollow" class="external text" href="https://archive.org/details/micorsoftofficee0000koer">Game Programming with Python, Lua, and Ruby</a>.&nbsp;— Premier Press, 2003.&nbsp;— 472&nbsp;p.&nbsp;— ISBN 1-59200-079-7.</span></span>
</li>
<li id="cite_note-23"><span class="mw-cite-backlink"><a href="#cite_ref-23">↑</a></span> <span class="reference-text"><span class="citation"><span lang="und"><a rel="nofollow" class="external text" href="http://www.defold.com/manuals/lua/">Defold game development manual -  Lua in Defold</a></span><span class="hidden-ref" style="display:none;">&nbsp;</span>. Defold game engine. Дата обращения: 2 марта 2017. <a rel="nofollow" class="external text" href="https://web.archive.org/web/20170303043241/http://www.defold.com/manuals/lua/">Архивировано</a> 3 марта 2017 года.</span></span>
</li>
<li id="cite_note-24"><span class="mw-cite-backlink"><a href="#cite_ref-24">↑</a></span> <span class="reference-text"><span class="citation"><i>Dj Walker-Morgan.</i> <span lang="und"><a rel="nofollow" class="external text" href="http://www.h-online.com/open/features/The-H-Speed-Guide-to-Lua-1517427.html%3Fpage=2">The H Speed Guide to Lua → Developing with Lua</a></span><span class="hidden-ref" style="display:none;">&nbsp;</span>. The H (17 апреля 2012). Дата обращения: 26 февраля 2015. <a rel="nofollow" class="external text" href="https://web.archive.org/web/20150226083959/http://www.h-online.com/open/features/The-H-Speed-Guide-to-Lua-1517427.html%3Fpage=2">Архивировано</a> 26 февраля 2015 года.</span></span>
</li>
<li id="cite_note-25"><span class="mw-cite-backlink"><a href="#cite_ref-25">↑</a></span> <span class="reference-text"><span class="citation no-wikidata" data-wikidata-property-id="P1343"><i>Darmie Akinlaja.</i> LÖVE for Lua Game Programming.&nbsp;— Packt, 2013.&nbsp;— 106&nbsp;p.&nbsp;— ISBN 978-1-78216-160-8.</span></span>
</li>
<li id="cite_note-26"><span class="mw-cite-backlink"><a href="#cite_ref-26">↑</a></span> <span class="reference-text"><span class="citation no-wikidata" data-wikidata-property-id="P1343"><i>Alan Thorn.</i> <span data-wikidata-qualifier-id="P248">Chapter 8. Novashell and 2D Games</span> // <a rel="nofollow" class="external text" href="https://archive.org/details/crossplatformgam00thor">Cross Platform Game Development</a>.&nbsp;— Jones &amp; Bartlett Learning, 2008.&nbsp;— P.&nbsp;<a rel="nofollow" class="external text" href="https://archive.org/details/crossplatformgam00thor/page/225">225</a>—264.&nbsp;— 421&nbsp;p.&nbsp;— ISBN 978-1-59822-056-8.</span></span>
</li>
<li id="cite_note-27"><span class="mw-cite-backlink"><a href="#cite_ref-27">↑</a></span> <span class="reference-text"><span class="citation"><i>Пётр Косых.</i> <a rel="nofollow" class="external text" href="http://ifprint.org/articles/insteadstory/">INSTEAD: Как все начиналось</a>&nbsp;// IFPrint.org.&nbsp;— Март 18, 2013.&nbsp;— <span class="nowrap">Вып. 1</span>.&nbsp;— <a href="%D0%9C%D0%B5%D0%B6%D0%B4%D1%83%D0%BD%D0%B0%D1%80%D0%BE%D0%B4%D0%BD%D1%8B%D0%B9_%D1%81%D1%82%D0%B0%D0%BD%D0%B4%D0%B0%D1%80%D1%82%D0%BD%D1%8B%D0%B9_%D1%81%D0%B5%D1%80%D0%B8%D0%B9%D0%BD%D1%8B%D0%B9_%D0%BD%D0%BE%D0%BC%D0%B5%D1%80" class="mw-redirect" title="Международный стандартный серийный номер">ISSN</a> <a rel="nofollow" class="external text" href="https://www.worldcat.org/search?fq=x0:jrnl&amp;q=n2:2307-535X">2307-535X</a>. <a rel="nofollow" class="external text" href="https://web.archive.org/web/20150226063116/http://ifprint.org/articles/insteadstory/">Архивировано</a> 26&nbsp;февраля 2015&nbsp;года.</span></span>
</li>
<li id="cite_note-28"><span class="mw-cite-backlink"><a href="#cite_ref-28">↑</a></span> <span class="reference-text"><span class="citation no-wikidata" data-wikidata-property-id="P1343"><i>Ronnie Tucker.</i> <a rel="nofollow" class="external text" href="https://books.google.com/books?id=7q0iBQAAQBAJ">Full Circle Magazine #90: THE INDEPENDENT MAGAZINE FOR THE UBUNTU LINUX COMMUNITY</a>.&nbsp;— Full Circle Magazine, 2014-10-31.&nbsp;— 50&nbsp;с.</span></span>
</li>
<li id="cite_note-29"><span class="mw-cite-backlink"><a href="#cite_ref-29">↑</a></span> <span class="reference-text"><span class="citation no-wikidata" data-wikidata-property-id="P1343"><i>Matthew Monk, Simon Monk.</i> <a rel="nofollow" class="external text" href="https://books.google.com/books?id=f06vlwEACAAJ">ComputerCraft: Lua Programming in Minecraft</a>.&nbsp;— CreateSpace Independent Publishing Platform, 2013-01-28.&nbsp;— 58&nbsp;с.&nbsp;— ISBN 9781481927659.</span></span>
</li>
<li id="cite_note-30"><span class="mw-cite-backlink"><a href="#cite_ref-30">↑</a></span> <span class="reference-text"><span class="citation"><i>Zero_Cool.</i> <span lang="und"><a rel="nofollow" class="external text" href="http://gamegpu.com/history/istoriya-tehnologii-serious-engine.html">История технологий - Serious Engine | History | Тест GPU</a></span><span class="hidden-ref" style="display:none;">&nbsp;</span>. gamegpu.com. Дата обращения: 10 апреля 2016. <a rel="nofollow" class="external text" href="https://web.archive.org/web/20160420061350/http://gamegpu.com/history/istoriya-tehnologii-serious-engine.html">Архивировано</a> 20 апреля 2016 года.</span></span>
</li>
<li id="cite_note-31"><span class="mw-cite-backlink"><a href="#cite_ref-31">↑</a></span> <span class="reference-text"><cite class="citation news cs1"><a rel="nofollow" class="external text" href="https://blast.hk/threads/13305/">Избранное - Lua - ASI - MoonLoader</a>. <i>BlastHack - Cheating as Art</i>. <a rel="nofollow" class="external text" href="https://web.archive.org/web/20180129011149/https://blast.hk/threads/13305/">Архивировано</a> 29 января 2018<span class="reference-accessdate">. Дата обращения: 28 января 2018</span>.</cite><span title="ctx_ver=Z39.88-2004&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Ajournal&amp;rft.genre=article&amp;rft.jtitle=BlastHack+-+Cheating+as+Art&amp;rft.atitle=%D0%98%D0%B7%D0%B1%D1%80%D0%B0%D0%BD%D0%BD%D0%BE%D0%B5+-+Lua+-+ASI+-+MoonLoader&amp;rft_id=https%3A%2F%2Fblast.hk%2Fthreads%2F13305%2F&amp;rfr_id=info%3Asid%2Fru.wikipedia.org%3ALua" class="Z3988"></span></span>
</li>
<li id="cite_note-32"><span class="mw-cite-backlink"><a href="#cite_ref-32">↑</a></span> <span class="reference-text"><span class="citation"><span lang="und"><a rel="nofollow" class="external text" href="https://developer.roblox.com/en-us/learn-roblox/coding-scripts">Learn Roblox | Coding and Scripts</a></span><span class="hidden-ref" style="display:none;">&nbsp;</span>. developer.roblox.com. Дата обращения: 23 августа 2019. <a rel="nofollow" class="external text" href="https://web.archive.org/web/20190823080559/https://developer.roblox.com/en-us/learn-roblox/coding-scripts">Архивировано</a> 23 августа 2019 года.</span></span>
</li>
<li id="cite_note-33"><span class="mw-cite-backlink"><a href="#cite_ref-33">↑</a></span> <span class="reference-text"><span class="citation"><span lang="en"><a rel="nofollow" class="external text" href="https://docs.ficsit.app/ficsit-networks/latest/index.html">FicsIt-Networks&nbsp;:: Satisfactory Modding Documentation</a></span>&nbsp;<span class="ref-info" title="на английском языке" style="cursor:help;">(англ.)</span>. <i>docs.ficsit.app</i>. Дата обращения: 24 марта 2022.</span></span>
</li>
<li id="cite_note-34"><span class="mw-cite-backlink"><a href="#cite_ref-34">↑</a></span> <span class="reference-text"><span class="citation"><span lang="und"><a rel="nofollow" class="external text" href="https://wiki.factorio.com/Modding/ru">Моддинг - Factorio Wiki</a></span><span class="hidden-ref" style="display:none;">&nbsp;</span>. <i>wiki.factorio.com</i>. Дата обращения: 1 июня 2022. <a rel="nofollow" class="external text" href="https://web.archive.org/web/20220601155145/https://wiki.factorio.com/Modding/ru">Архивировано</a> 1 июня 2022 года.</span></span>
</li>
<li id="cite_note-35"><span class="mw-cite-backlink"><a href="#cite_ref-35">↑</a></span> <span class="reference-text"><span class="citation"><span lang="und"><a rel="nofollow" class="external text" href="https://lua-api.factorio.com/latest/">API Docs | Factorio</a></span><span class="hidden-ref" style="display:none;">&nbsp;</span>. <i>lua-api.factorio.com</i>. Дата обращения: 1 июня 2022. <a rel="nofollow" class="external text" href="https://web.archive.org/web/20220518072047/https://lua-api.factorio.com/latest/">Архивировано</a> 18 мая 2022 года.</span></span>
</li>
<li id="cite_note-36"><span class="mw-cite-backlink"><a href="#cite_ref-36">↑</a></span> <span class="reference-text"><span class="citation"><span lang="en"><a rel="nofollow" class="external text" href="https://ctan.org/pkg/luatex">CTAN: Package luatex</a></span>&nbsp;<span class="ref-info" title="на английском языке" style="cursor:help;">(англ.)</span>. Дата обращения: 6 февраля 2019. <a rel="nofollow" class="external text" href="https://web.archive.org/web/20190207015400/https://ctan.org/pkg/luatex">Архивировано</a> 7 февраля 2019 года.</span></span>
</li>
<li id="cite_note-37"><span class="mw-cite-backlink"><a href="#cite_ref-37">↑</a></span> <span class="reference-text"><span class="citation"><span lang="en"><a rel="nofollow" class="external text" href="http://rpm.org/user_doc/lua.html">Lua in RPM</a></span>&nbsp;<span class="ref-info" title="на английском языке" style="cursor:help;">(англ.)</span>. Дата обращения: 11 февраля 2019. <a rel="nofollow" class="external text" href="https://web.archive.org/web/20180624211140/http://rpm.org/user_doc/lua.html">Архивировано</a> 24 июня 2018 года.</span></span>
</li>
<li id="cite_note-38"><span class="mw-cite-backlink"><a href="#cite_ref-38">↑</a></span> <span class="reference-text"><span class="citation"><span lang="und"><a rel="nofollow" class="external text" href="http://studio.zerobrane.com/">ZeroBrane Studio&nbsp;— Lua IDE/editor/debugger for Windows, Mac OSX, and Linux</a></span><span class="hidden-ref" style="display:none;">&nbsp;</span>. Дата обращения: 31 июля 2013. <a rel="nofollow" class="external text" href="https://web.archive.org/web/20160118143837/http://studio.zerobrane.com/">Архивировано</a> 18 января 2016 года.</span></span>
</li>
<li id="cite_note-39"><span class="mw-cite-backlink"><a href="#cite_ref-39">↑</a></span> <span class="reference-text"><span class="citation"><span lang="und"><a rel="nofollow" class="external text" href="http://www.eclipse.org/koneki/ldt/">Lua Development Tools</a></span><span class="hidden-ref" style="display:none;">&nbsp;</span>. Дата обращения: 14 февраля 2012. <a rel="nofollow" class="external text" href="https://web.archive.org/web/20120209024151/http://eclipse.org/koneki/ldt/">Архивировано</a> 9 февраля 2012 года.</span></span>
</li>
<li id="cite_note-40"><span class="mw-cite-backlink"><a href="#cite_ref-40">↑</a></span> <span class="reference-text"><span class="citation"><span lang="en"><a rel="nofollow" class="external text" href="https://plugins.jetbrains.com/plugin/9768-emmylua">EmmyLua&nbsp;:: JetBrains Plugin Repository</a></span>&nbsp;<span class="ref-info" title="на английском языке" style="cursor:help;">(англ.)</span>. JetBrains Plugin Repository. Дата обращения: 26 февраля 2018. <a rel="nofollow" class="external text" href="https://web.archive.org/web/20180227035812/https://plugins.jetbrains.com/plugin/9768-emmylua">Архивировано</a> 27 февраля 2018 года.</span></span>
</li>
</ol></div></div>
<div class="mw-heading mw-heading2"><h2 id="Литература"><span id=".D0.9B.D0.B8.D1.82.D0.B5.D1.80.D0.B0.D1.82.D1.83.D1.80.D0.B0"></span>Литература</h2></div>
<ul><li><span class="citation no-wikidata" data-wikidata-property-id="P1343" id="CITEREFИерузалимски2014"><i>Роберто Иерузалимски.</i> Программирование на языке Lua.&nbsp;— 3-е изд..&nbsp;— ДМК, 2014.&nbsp;— ISBN 9785940747673.</span> (оригинал: <span class="citation no-wikidata" data-wikidata-property-id="P1343"><i>Roberto Ierusalimschy.</i> Programming in Lua.&nbsp;— 3-nd ed..&nbsp;— 2012.&nbsp;— ISBN 9788590379850.</span>)</li>
<li><span class="citation no-wikidata" data-wikidata-property-id="P1343" id="CITEREFDees2015"><i>Ian Dees.</i> <span data-wikidata-qualifier-id="P248">Lua</span> // Seven More Languages in Seven Weeks. Languages That Are Shaping the Future / Bruce Tate, Fred Daoud, Jack Moffitt, Ian Dees.&nbsp;— The Pragmatic Bookshelf, 2015.&nbsp;— С.&nbsp;1—48.&nbsp;— 320&nbsp;с.&nbsp;— ISBN 978-1941222157.</span></li>
<li><span class="citation no-wikidata" data-wikidata-property-id="P1343" id="CITEREFKasuba2015"><i>Mário Kašuba.</i> Lua Game Development Cookbook.&nbsp;— Packt Publishing, 2015.&nbsp;— 402&nbsp;с.&nbsp;— ISBN 978-1849515504.</span></li>
<li><span class="citation no-wikidata" data-wikidata-property-id="P1343" id="CITEREFYoung2014"><i>David Young.</i> Learning Game AI Programming with Lua.&nbsp;— Packt Publishing, 2014.&nbsp;— 352&nbsp;с.&nbsp;— ISBN 978-1783281336.</span></li>
<li><span class="citation no-wikidata" data-wikidata-property-id="P1343" id="CITEREFVarma2012"><i>Jayant Varma.</i> <a rel="nofollow" class="external text" href="https://books.google.com/books?id=dLI7IloCzR8C">Learn Lua for iOS Game Development</a>.&nbsp;— Apress, 2012.&nbsp;— 410&nbsp;с.&nbsp;— ISBN 9781430246626.</span></li>
<li><span class="citation no-wikidata" data-wikidata-property-id="P1343" id="CITEREFJung,_Brown2011"><i>Kurt Jung, Aaron Brown.</i> <a rel="nofollow" class="external text" href="https://books.google.com/books?id=Br8l4Z_XUgoC">Beginning Lua Programming</a>.&nbsp;— John Wiley &amp; Sons, 2011.&nbsp;— 675&nbsp;с.&nbsp;— (Programmer to Programmer).&nbsp;— ISBN 9781118079119.</span></li></ul>
<p><b>История языка</b>
</p>
<ul><li><span class="citation" id="CITEREFHOPL2007"><i>R. Ierusalimschy, L. H. de Figueiredo, W. Celes.</i> <a rel="nofollow" class="external text" href="http://www.lua.org/doc/hopl.pdf">The evolution of Lua</a>&nbsp;// Proceedings of ACM HOPL III. 2-1–2-26.&nbsp;— 2007.</span></li>
<li><span class="citation"><i>Roberto Ierusalimschy, Luiz Henrique de Figueiredo, Waldemar Celes.</i> <span lang="und"><a rel="nofollow" class="external text" href="http://www.lua.org/history.html">The evolution of an extension language: a history of Lua</a></span><span class="hidden-ref" style="display:none;">&nbsp;</span>. Reprint from Proceedings of V Brazilian Symposium on Programming Languages (2001) B-14–B-28.. Дата обращения: 9 декабря 2011. <a rel="nofollow" class="external text" href="https://www.webcitation.org/65Boxgnss?url=http://www.lua.org/history.html">Архивировано</a> 4 февраля 2012 года.</span></li>
<li><span class="citation no-wikidata" data-wikidata-property-id="P1343" id="CITEREFБьянкуцци,_Уорден2011"><i>Федерико Бьянкуцци, Шейн Уорден.</i> <span data-wikidata-qualifier-id="P248">Глава 7. Lua</span> // Пионеры программирования. Диалоги с создателями наиболее популярных языков программирования = Masterminds of Programming: Conversations with the Creators of Major Programming Languages.&nbsp;— Символ, 2011.&nbsp;— С.&nbsp;211—230.&nbsp;— 608&nbsp;с.&nbsp;— <span class="nowrap">1500 экз.</span>&nbsp;— ISBN 9785932861707.</span></li>
<li><a rel="nofollow" class="external text" href="https://web.archive.org/web/20080913222414/http://www.computerworld.com.au/index.php/id;1028768484;fp;4194304;fpid;1">Интервью Роберту Иерузалимски</a> для <a href="Computerworld" class="mw-redirect" title="Computerworld">Computerworld</a> о языке Lua</li></ul>
<div class="mw-heading mw-heading2"><h2 id="Ссылки"><span id=".D0.A1.D1.81.D1.8B.D0.BB.D0.BA.D0.B8"></span>Ссылки</h2></div>
<ul><li><a rel="nofollow" class="external text" href="http://www.Lua.org">Официальный сайт разработчиков Lua</a>&nbsp;<span class="ref-info" title="на английском языке" style="cursor:help;">(англ.)</span></li>
<li><a rel="nofollow" class="external text" href="https://web.archive.org/web/20070202005230/http://luaforge.net/">Сайт проектов Lua</a>&nbsp;<span class="ref-info" title="на английском языке" style="cursor:help;">(англ.)</span></li>
<li><a rel="nofollow" class="external text" href="http://Lua-users.org">Сайт пользователей Lua</a>&nbsp;<span class="ref-info" title="на английском языке" style="cursor:help;">(англ.)</span></li></ul>
<div class="mw-heading mw-heading3"><h3 id="Lua_на_русском"><span id="Lua_.D0.BD.D0.B0_.D1.80.D1.83.D1.81.D1.81.D0.BA.D0.BE.D0.BC"></span>Lua на русском</h3></div>
<p><b>Переводы руководств</b>
</p>
<ul><li><a rel="nofollow" class="external text" href="https://antirek.github.io/luabook/">Lua 5.3 Руководство пользователя</a></li>
<li><a href="https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/ru" class="extiw external" title="mw:Extension:Scribunto/Lua reference manual/ru">Справочное руководство по языку Lua 5.1 (включая дополнительные библиотеки, используемые при работе с MediaWiki)</a></li>
<li><a rel="nofollow" class="external text" href="https://web.archive.org/web/20070927201515/http://www.scarface.ru/modules.php?name=Downloads&amp;d_op=viewdownloaddetails&amp;lid=2">Русскоязычный мануал по Lua 5.0</a>&nbsp;— фрагмент справочного руководства по языку Lua 5.0 для написания скриптов для игр <a href="Heroes_of_Might_and_Magic_V" title="Heroes of Might and Magic V">Heroes of Might and Magic V</a> и <a href="%D0%A1%D0%B5%D1%80%D0%BF_%D0%B8_%D0%BC%D0%BE%D0%BB%D0%BE%D1%82_(%D0%B8%D0%B3%D1%80%D0%B0)" title="Серп и молот (игра)">Серп и молот</a></li>
<li><a rel="nofollow" class="external text" href="http://www.rldp.ru/mysql/mysqldev/glava04.htm">Справочное руководство по языку Lua 4.0</a></li></ul>
<p><b>Статьи и обзоры</b>
</p>
<ul><li><i>Мартин Страйчер.</i> <a rel="nofollow" class="external text" href="http://www.ibm.com/developerworks/ru/library/l-lua/">Создание встраиваемых сценариев на языке Lua</a></li>
<li><i>Андрей Зубинский.</i> <a rel="nofollow" class="external text" href="http://itc.ua/articles/eshhe_odin_letnij_yazyk_programmirovaniya_20951">Еще один «летний» язык программирования</a> (<a rel="nofollow" class="external text" href="http://itc.ua/articles/eshhe_odin_letnij_yazyk_programmirovaniya_chast_2_21025">часть 2</a>; <a rel="nofollow" class="external text" href="http://itc.ua/articles/eshhe_odin_letnij_yazyk_programmirovaniya_chast_3_21293">часть 3</a>; <a rel="nofollow" class="external text" href="http://itc.ua/articles/eshhe_odin_letnij_yazyk_programmirovaniya_chast_4_21409">часть 4</a>)</li>
<li><i>Ash Matheson.</i> <a rel="nofollow" class="external text" href="http://club.shelek.ru/viewart.php?id=77">Введение в Lua</a>&nbsp;— перевод статьи <a rel="nofollow" class="external text" href="https://web.archive.org/web/20090601161043/http://www.gamedev.net/reference/articles/article1932.asp">An Introduction to Lua</a>&nbsp;<span class="ref-info" title="на английском языке" style="cursor:help;">(англ.)</span></li>
<li><i>Keith Fieldhouse.</i> <a rel="nofollow" class="external text" href="http://netsago.org/ru/docs/1/4/">Введение в Lua</a>&nbsp;— перевод статьи <a rel="nofollow" class="external text" href="https://web.archive.org/web/20060312124121/http://www.onlamp.com/pub/a/onlamp/2006/02/16/introducing-lua.html">Introducing Lua</a>&nbsp;<span class="ref-info" title="на английском языке" style="cursor:help;">(англ.)</span></li>
<li><a rel="nofollow" class="external text" href="http://wiki.linuxformat.ru/wiki/LXF122:LUA">Серия статей о Lua</a> // <a href="Linux_Format" title="Linux Format">Linux Format</a></li>
<li><a rel="nofollow" class="external text" href="http://ilovelua.narod.ru/">Я люблю Lua</a>&nbsp;— уроки по языку Lua и его встраиванию в C++ приложения (<a rel="nofollow" class="external text" href="https://ilovelua.wordpress.com/">Новый Сайт</a>)</li>
<li><a rel="nofollow" class="external text" href="http://robot-develop.org/archives/3717">Использование Lua в робототехнике</a></li></ul>
<div role="navigation" class="navbox" aria-labelledby="Lua" data-name="Lua (язык)"><table class="nowraplinks wraplinks collapsible autocollapse navbox-inner" style="border-spacing:0;background:transparent;color:inherit"><tbody><tr><th scope="colgroup" class="navbox-title" colspan="2"><span class="navbox-gear" style="float:left;text-align:left;width:5em;margin-right:0.5em"></span><div id="Lua" style="font-size:114%;margin:0 5em"><a class="mw-selflink selflink">Lua</a></div></th></tr><tr><td class="navbox-list navbox-odd hlist" style="width:100%;padding:0px;background:transparent;color:inherit;"><div style="padding:0px;"><table class="navbox-columns-table" style="border-spacing: 0px; text-align:left;width:100%;"><tbody><tr><th class="navbox-abovebelow" colspan="1" style="font-weight:bold;background:var(--ruwiki-background-color-blue150,#dcebff);color:var(--color-base,#202122);white-space:nowrap;">Компиляторы</th><th class="navbox-abovebelow" colspan="1" style="border-left:2px solid #fdfdfd;font-weight:bold;background:var(--ruwiki-background-color-blue150,#dcebff);color:var(--color-base,#202122);white-space:nowrap;">Фреймворки и <a href="%D0%94%D0%B8%D0%BD%D0%B0%D0%BC%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%B8_%D0%BF%D0%BE%D0%B4%D0%BA%D0%BB%D1%8E%D1%87%D0%B0%D0%B5%D0%BC%D0%B0%D1%8F_%D0%B1%D0%B8%D0%B1%D0%BB%D0%B8%D0%BE%D1%82%D0%B5%D0%BA%D0%B0" title="Динамически подключаемая библиотека">DLL</a></th><th class="navbox-abovebelow" colspan="1" style="border-left:2px solid #fdfdfd;font-weight:bold;background:var(--ruwiki-background-color-blue150,#dcebff);color:var(--color-base,#202122);white-space:nowrap;">Порты и дистрибутивы</th><th class="navbox-abovebelow" colspan="1" style="border-left:2px solid #fdfdfd;font-weight:bold;background:var(--ruwiki-background-color-blue150,#dcebff);color:var(--color-base,#202122);white-space:nowrap;"><a href="Integrated_development_environment" class="mw-redirect" title="Integrated development environment">IDEs</a></th><th class="navbox-abovebelow" colspan="1" style="border-left:2px solid #fdfdfd;font-weight:bold;background:var(--ruwiki-background-color-blue150,#dcebff);color:var(--color-base,#202122);white-space:nowrap;">Приложения</th></tr><tr style="vertical-align:top;"><td class="navbox-list" style="padding:0px;text-align:center;;;;width:10em;"><div>
<ul><li><a class="mw-selflink selflink">Lua</a></li>
<li><a href="LuaJIT" class="mw-redirect" title="LuaJIT">LuaJIT</a></li>
<li><a href="Parrot" title="Parrot">Parrot</a></li></ul>
</div></td><td class="navbox-list" style="border-left:2px solid #fdfdfd;padding:0px;text-align:center;;;;width:10em;"><div>
<ul><li><a href="IUP" title="IUP">IUP</a></li>
<li>Kepler</li>
<li><a href="L%C3%96VE" title="LÖVE">LÖVE</a></li></ul>
</div></td><td class="navbox-list" style="border-left:2px solid #fdfdfd;padding:0px;text-align:center;;;;width:10em;"><div>
<ul><li>Plua</li>
<li>Lua Player</li>
<li><a href="Solar2D" title="Solar2D">Corona SDK</a></li></ul>
</div></td><td class="navbox-list" style="border-left:2px solid #fdfdfd;padding:0px;text-align:center;;;;width:10em;"><div>
<ul><li><a href="Decoda" title="Decoda">Decoda</a></li>
<li><a href="ZeroBrane_Studio" title="ZeroBrane Studio">Studio</a></li>
<li><a href="SciTE" title="SciTE">SciTE</a></li>
<li>IDE</li></ul>
</div></td><td class="navbox-list" style="border-left:2px solid #fdfdfd;padding:0px;text-align:center;;;;width:10em;"><div>
<ul><li><a href="Prosody" title="Prosody">Prosody</a></li>
<li><a href="Tarantool" title="Tarantool">Tarantool</a></li>
<li><a href="Torch" title="Torch">Torch</a></li></ul>
</div></td></tr></tbody></table></div></td></tr></tbody></table></div>
<div role="navigation" class="navbox" aria-labelledby="Выполнение_программы" data-name="Выполнение программы"><table class="nowraplinks collapsible autocollapse navbox-inner" style="border-spacing:0;background:transparent;color:inherit"><tbody><tr><th scope="colgroup" class="navbox-title" colspan="2"><span class="navbox-gear" style="float:left;text-align:left;width:5em;margin-right:0.5em"></span><div id="Выполнение_программы" style="font-size:114%;margin:0 5em"><a href="%D0%92%D1%8B%D0%BF%D0%BE%D0%BB%D0%BD%D0%B5%D0%BD%D0%B8%D0%B5_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D1%8B" class="mw-redirect" title="Выполнение программы">Выполнение программы</a></div></th></tr><tr><th scope="row" class="navbox-group" style="width:1px">Общие понятия</th><td class="navbox-list navbox-odd hlist" style="text-align:left;border-left-width:2px;border-left-style:solid;width:100%;padding:0px"><div style="padding:0em 0.25em">
<ul><li><a href="%D0%9A%D0%BE%D0%BC%D0%BF%D1%8C%D1%8E%D1%82%D0%B5%D1%80%D0%BD%D0%B0%D1%8F_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B0" title="Компьютерная программа">Код</a></li>
<li><a href="%D0%A2%D1%80%D0%B0%D0%BD%D1%81%D0%BB%D1%8F%D1%82%D0%BE%D1%80" title="Транслятор">Транслятор</a>
<ul><li><a href="%D0%9A%D0%BE%D0%BC%D0%BF%D0%B8%D0%BB%D1%8F%D1%82%D0%BE%D1%80" title="Компилятор">Компилятор</a>
<ul><li>Время компилирования</li></ul></li>
<li><a href="%D0%9E%D0%BF%D1%82%D0%B8%D0%BC%D0%B8%D0%B7%D0%B8%D1%80%D1%83%D1%8E%D1%89%D0%B8%D0%B9_%D0%BA%D0%BE%D0%BC%D0%BF%D0%B8%D0%BB%D1%8F%D1%82%D0%BE%D1%80" title="Оптимизирующий компилятор">Оптимизирующий компилятор</a></li></ul></li>
<li><a href="%D0%9F%D1%80%D0%BE%D0%BC%D0%B5%D0%B6%D1%83%D1%82%D0%BE%D1%87%D0%BD%D0%BE%D0%B5_%D0%BF%D1%80%D0%B5%D0%B4%D1%81%D1%82%D0%B0%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5" title="Промежуточное представление">Промежуточное представление программы</a></li>
<li>Выполнение программы
<ul><li><a href="%D0%A1%D1%80%D0%B5%D0%B4%D0%B0_%D0%B2%D1%8B%D0%BF%D0%BE%D0%BB%D0%BD%D0%B5%D0%BD%D0%B8%D1%8F" title="Среда выполнения">Среда выполнения</a>
<ul><li>Время выполнения</li></ul></li>
<li><a href="%D0%98%D1%81%D0%BF%D0%BE%D0%BB%D0%BD%D1%8F%D0%B5%D0%BC%D1%8B%D0%B9_%D1%84%D0%B0%D0%B9%D0%BB" title="Исполняемый файл">Исполняемый файл</a></li>
<li><a href="%D0%98%D0%BD%D1%82%D0%B5%D1%80%D0%BF%D1%80%D0%B5%D1%82%D0%B0%D1%82%D0%BE%D1%80" title="Интерпретатор">Интерпретатор</a></li>
<li><a href="%D0%92%D0%B8%D1%80%D1%82%D1%83%D0%B0%D0%BB%D1%8C%D0%BD%D0%B0%D1%8F_%D0%BC%D0%B0%D1%88%D0%B8%D0%BD%D0%B0" title="Виртуальная машина">Виртуальная машина</a></li></ul></li></ul>
</div></td></tr><tr><th scope="row" class="navbox-group" style="width:1px">Типы кода</th><td class="navbox-list navbox-even hlist" style="text-align:left;border-left-width:2px;border-left-style:solid;width:100%;padding:0px"><div style="padding:0em 0.25em">
<ul><li><a href="%D0%98%D1%81%D1%85%D0%BE%D0%B4%D0%BD%D1%8B%D0%B9_%D0%BA%D0%BE%D0%B4" title="Исходный код">Исходный код</a></li>
<li><a href="%D0%9E%D0%B1%D1%8A%D0%B5%D0%BA%D1%82%D0%BD%D1%8B%D0%B9_%D0%BC%D0%BE%D0%B4%D1%83%D0%BB%D1%8C" title="Объектный модуль">Объектный модуль</a></li>
<li><a href="%D0%91%D0%B0%D0%B9%D1%82-%D0%BA%D0%BE%D0%B4" title="Байт-код">Байт-код</a></li>
<li><a href="%D0%9C%D0%B0%D1%88%D0%B8%D0%BD%D0%BD%D1%8B%D0%B9_%D0%BA%D0%BE%D0%B4" title="Машинный код">Машинный код</a></li>
<li><a href="%D0%9C%D0%B8%D0%BA%D1%80%D0%BE%D0%BA%D0%BE%D0%B4" title="Микрокод">Микрокод</a></li></ul>
</div></td></tr><tr><th scope="row" class="navbox-group" style="width:1px">Стратегии компиляции</th><td class="navbox-list navbox-odd hlist" style="text-align:left;border-left-width:2px;border-left-style:solid;width:100%;padding:0px"><div style="padding:0em 0.25em">
<ul><li><a href="AOT-%D0%BA%D0%BE%D0%BC%D0%BF%D0%B8%D0%BB%D1%8F%D1%86%D0%B8%D1%8F" title="AOT-компиляция">AOT-компиляция</a></li>
<li><a href="JIT-%D0%BA%D0%BE%D0%BC%D0%BF%D0%B8%D0%BB%D1%8F%D1%86%D0%B8%D1%8F" title="JIT-компиляция">JIT-компиляция</a>
<ul><li>Tracing JIT-компиляция</li></ul></li>
<li><a href="%D0%A2%D1%80%D0%B0%D0%BD%D1%81%D0%BF%D0%B0%D0%B9%D0%BB%D0%B5%D1%80" title="Транспайлер">Транскомпиляция</a></li>
<li>Рекомпиляция</li></ul>
</div></td></tr></tbody></table></div></div><!--htdig_noindex--><div><div class="zim-footer">
    Эта статья взята у (из) <a class="external text" title="Последний раз редактировалась 2025-12-03" href="https://ru.wikipedia.org/wiki/?title=Lua&amp;oldid=150421729">Википедия</a>. Текст лицензируется по <a class="external text" href="https://creativecommons.org/licenses/by-sa/4.0/deed.ru">Creative Commons Attribution-Share Alike 4.0</a>. К медиа файлам могут применятся дополнительные условия.
</div>
</div><!--/htdig_noindex--></div>
      </div>
    </div>
     <script src="./_webp_/webpHandler.js"></script>
  

</body></html>