Lua ([лу́а], порт. місяць) — швидка і компактна скриптова мова програмування, розроблена підрозділом Tecgraf Католицького університету Ріо-де-Жанейро (Computer Graphics Technology Group of Pontifical Catholic University of Rio de Janeiro in Brazil). Інтерпретатор мови є вільно поширюваним, з відкритим початковим кодом на мові C.
Lua | |
---|---|
Парадигма | мульти-парадигмова: скриптова, імперативна, функціональна, об'єктно-орієнтована, прототипна |
Дата появи | 1993[1] |
Творці | Роберто Єрусалимський |
Розробник | Роберто Єрусалимський[2] |
Останній реліз | |
Система типізації | динамічна, слаба, качина |
Основні реалізації | Lua, LuaJIT, LLVM-Lua, LuaCLR, Nua, Lua Alchemy |
Діалекти | Metalua |
Під впливом від | , CLU, d, d, Snobol, Модула, d і Scheme |
Вплинула на | [en], GameMonkey, , , |
Мова реалізації | C[3] |
Операційна система | кросплатформова програма[4] |
Ліцензія | MIT[5][6] |
Звичайні розширення файлів | .lua [7][8], .luna , .lunaire або .anair |
Репозиторій вихідного коду | github.com/lua/lua |
Вебсайт | lua.org |
|
За можливостями, ідеологією і реалізацією, мова найближча до JavaScript, проте Lua відрізняється могутнішими й набагато гнучкішими конструкціями, спроєктованими з метою «не плодити сутності понад необхідне». Хоча Lua не містить поняття класу і об'єкта в явному вигляді, механізми об'єктноорієнтованого програмування (ООП) з підтримкою прототипів (включаючи множинне успадкування) легко реалізуються з використанням метатаблиць, які також дозволяють перевантаження операцій тощо. Реалізована модель ООП (як і в JavaScript) — прототипна.
Lua отримала велике поширення в ролі вбудованої в інші проєкти мови сценаріїв (наприклад, для визначення конфігурації або для написання розширень). Lua комбінує простий процедурний синтаксис з потужними можливостями опису даних через використання асоціативних масивів і розширюваної семантики мови. У Lua використовується динамічна типізація, мовні конструкції перетворюються на байт-код, який виконується поверх регістрової віртуальної машини з автоматичним збирачем сміття. Сам інтерпретатор оформлений у вигляді бібліотеки, легко інтегрованої в проєкти на мовах Сі та . Код інтерпретатора Lua написаний мовою Сі й розповсюджується під ліцензією MIT.
Історія
Створення мови почалося в 1993. Команда розробників з католицького університету Ріо-де-Жанейро невелика — Роберто Єрусалимський (Roberto Ierusalimschy), Вольдемар Целес (Waldemar Celes) і Луїс Енріке (Luiz Henrique). Спочатку мова замислювалася як описова — для зручності формування великих масивів даних при рішенні завдань обчислювального експерименту і машинного моделювання. Але відтоді мова зазнала значних змін і низки серйозних архітектурних модифікацій. Сьогоднішня популярність Lua така, що Microsoft виділила розробникам грант на створення .NET-версії мови. У багатьох іграх Lua використовується як «скриптовий рушій» завдяки унікальному поєднанню швидкодії, легкості вбудовування в програми та підтримці «розширюваної семантики».
Реалізація
Як і багато інтерпретованих мов програмування, реалізація Lua має окремо компілятор з початкового коду у виконуваний байт-код і віртуальну машину для виконання згенерованого байт-коду. Особливістю є те, що байт-код — це команди не стекової машини, команди віртуального регістрового процесора, який більше відповідає реальним ЦПУ. Таке архітектурне рішення майже прямо транслюється на команди сучасних CPU. Це суттєво зменшує операції з перетворення. Внаслідок зменшення технологічних операцій перетворення, зростає ефективність виконання Lua-скриптів. Стандартна віртуальна машина Lua використовує розподіл пам'яті із прибиранням сміття (аналогічно Java або .NET).
Для завдань, критичних за часом, є JIT-компілятор Lua LuaJIT.
Lua використовує єдиний рядковий пул, що дозволяє зменшити витрати пам'яті на зберігання рядків.
Приклади коду
Класичну програму Hello, world! (Вітаю, світе!) можна написати так:
print("Вітаю, світе!")
Цикл з лічильником та кроком в одиницю:
for i = 1 , 10 do print( i ) end
В результаті будуть виведені числа від 1 до 10.
Для зміни кроку в циклі треба вказати крок третім параметром:
for i = 1 , 10 , 2 do -- тепер крок циклу дорівнює 2 print( i ) end
В результаті будуть виведені числа від 1, 3, 5, 7 , 9.
Підрахунок факторіалу дає приклад використання рекурсивних функцій:
function factorial(n) if n == 0 then return 1 -- Коментар в Lua починається з подвійного дефіса else return n * factorial(n - 1) -- і закінчується на кінці рядка end end function factorial2(n) -- коротший еквівалент написаного вище return n==0 and 1 or n*factorial2(n - 1) end print([[multiple lines]]) -- [[кількарядковий вираз чи коментар треба поміщати в подвійні квадратні дужки]]
Типи даних
В Lua є вісім типів даних: nil
(невизначені значення), boolean
(логічні значення), number
(числа), string
(рядки), table
(таблиці), function
(функції), thread
(потоки) та userdata
. Дізнатись тип змінної можна за допомогою функції type()
.
nil
nil
— це порожнє значення. Його головні властивості — відрізнятись від будь-якого значення та вказувати на відсутність значення, придатного для якого-небудь використання. Також nil
може бути використаним як логічне значення, в такому разі він позначатиме неправду.
Логічні значення
Логічний тип boolean
містить два значення: true
(правда) та false
(неправда).
Числа
Числовий тип в Lua зазвичай представлений дійсними числами з рухомою комою з подвійною точністю, хоча можна зібрати Lua з іншими числами, змінивши визначення в luaconf.h.
Рядки
Рядки в Lua можуть включати в себе будь-який восьмибітний символ. Щоб створити рядковий літерал, вміст рядка потрібно помістити в одинарні (') або подвійні (") лапки. Також можна використовувати рядки з переносами. Для цього використовуються подвійні квадратні дужки n-ного рівня (де [[
— дужки нульового рівня, [=[
— дужки першого рівня, [==[
— дужки другого рівня, і т. д.). Для прикладу, використаємо дужки третього рівня:
a = [===[рядки з переносом в "lua"]===]
Можна помітити, що в літералах, створених таким чином, не потрібно екранувати одинарні та подвійні лапки, як це потрібно робити при інших видах запису.
Таблиці
Таблиці є найважливішим типом даних в Lua і є основою для типів даних користувача, таких як структури, масиви, списки, множини. Таблиця в Lua являє собою набір пар — (Ключ, Значення). Ключем може бути будь-яке значення окрім nil.
Таблиці не мають фіксованого розміру. Тому можна додавати скільки завгодно елементів в таблицю динамічно.
Приклад таблиці:
t = { } -- пуста таблиця
t['k'] = 10 -- Ключ k, значення 10
t[20] = " super " -- Ключ 20, значення " super "
t.IP = '192.168.0.1' -- Ключ IP, значення 192.168.0.1
Тепер заповнена таблиця буде виглядати так:
t = { k = 10 , [ 20 ] = " super ", IP = ' 192.168.0.1 ' }
Одинарні та подвійні лапки в Lua — рівнозначні. Варто вибрати один із видів лапок при написанні коду.
Для виводу пар — (Ключ, Значення) з таблиці на екран скористайтесь циклом for
, базовою функцією pairs()
та функцією print()
:
for key, val in pairs(t) do print(key, val) end
В результаті отримаємо пари:
20 super
k 10
IP 192.168.0.1
Таблиці можна використовувати і як звичайні масиви. Для цього варто скористатись записом t = {'a', 'b', 'c', 'd', 'e'}
, після чого до елементів можна звертатись за індексом: print(t[2]) --виведе b
. Зверніть увагу, що створені таким чином масиви, починаються з одиниці, а не з нуля, як в більшості інших мов.
Функції
Функції в Lua є значеннями першого класу, що означає, що функції можна передавати до інших функцій, повертати з них та використовувати замикання. Функції можуть повертати будь-яку кількість значень. Також функцію можна викликати з будь-якою кількістю параметрів: зайві будуть ігноруватись, а тим, яких не вистачає, буде присвоєно значення nil
.
Потоки
Тип thread
позначає незалежний потік виконання. Потоки Lua не варто асоціювати з потоками операційної системи, багатопоточна програма може виконуватись навіть в тих системах, які не підтримують потоки.
userdata
Тип userdata використовується для роботи з даними з мови C. В нього немає визначених наперед операцій, проте їх можна визначити за допомогою метатаблиць. Також значення цього типу не можуть бути ні створені, ні змінені з Lua, для цього потрібно використовувати C API.
Використання
Lua у Вікіпедії
У січні 2012 на зустрічі розробників вікірушія MediaWiki, який використовується для забезпечення роботи Вікіпедії, було прийнято рішення про залучення мови Lua для розробки шаблонів. Використовувана на той час система шаблонів не влаштовувала розробників через зайву ускладненість та низьку ефективність. Інтеграція Lua в MediaWiki почалася на початку травня 2012, після виходу релізу MediaWiki 1.19 та міграції проєкту на систему управління початковими текстами Git.
Шаблони дозволяють користувачам MediaWiki автоматизувати створення типового вмісту, що включається в інші сторінки, і створювати інструменти для маніпуляції даними, перетворюючи вікі-текст в якусь подобу мови програмування. Наразі шаблони для MediaWiki створюються з використанням додаткової wiki-розмітки та розширення ParserFunctions, що створює істотні обмеження у функціональності й призводить до витрат значних ресурсів при виконанні. Намір перейти до використання в шаблонах повноцінної мови програмування назрів уже давно, але виникла проблема вибору: розгорнулася палка дискусія між прихильниками Javascript/ і Lua.
У підсумку перемогла Lua, головним чином завдяки технічно простішій інтеграції в проєкт. Серед інших переваг було названо: ефективна робота з пам'яттю, висока продуктивність (застосовується JIT-компіляція, що робить Lua швидшою за PHP з використанням Zend), компактність і початкова орієнтація на ефективне вбудовування в сторонні застосунки. Робота над експериментальним прототипом на базі Lua почалася у 2011 році й показала, що можна істотно збільшити продуктивність системи шаблонів.
Виноски
- Lua: about
- The lua Open Source Project on Open Hub: Languages Page — 2006.
- https://www.lua.org/about.html
- https://www.lua.org/license.html
- The lua Open Source Project on Open Hub: Licenses Page — 2006.
- Lua 5.1 Reference Manual — 2019.
- A Look at the Design of Lua — [New York]: Association for Computing Machinery, 2018. — ISSN 0001-0782; 1557-7317
- Lua scripting/Meeting 2012-01-25. Архів оригіналу за 26 травня 2012. Процитовано 3 лютого 2012.
- . Архів оригіналу за 4 лютого 2012. Процитовано 3 лютого 2012.
- . opennet.ru (рос.). Архів оригіналу за 2 лютого 2012. Процитовано 3 лютого 2012.
Посилання
- Офіційний сайт (англ.)
- Завантажити Lua (скомпільовані файли) [ 31 травня 2017 у Wayback Machine.](англ.)
- Цикл статей про Lua в журналі Linux Format [ 20 жовтня 2017 у Wayback Machine.](рос.)
- (англ.)
- Вебсайт спільноти користувачів і авторів Lua [ 16 грудня 2010 у Wayback Machine.](англ.)
- Lua-wiki [ 11 жовтня 2008 у Wayback Machine.](англ.)
- lua-l archive [ 4 листопада 2008 у Wayback Machine.] — офіційний список (англ.)
- Luai [ 8 вересня 2008 у Wayback Machine.] — альтернативний інтерфейс довідки (англ.)
- // ONLamp.com (англ.)
- // GameDev.net (англ.)
- [недоступне посилання з 07.06.2017] // Computerworld (англ.)
В іншому мовному розділі є повніша стаття Lua (programming language)(англ.). Ви можете допомогти, розширивши поточну статтю за допомогою з англійської.
|
Вікіпедія, Українська, Україна, книга, книги, бібліотека, стаття, читати, завантажити, безкоштовно, безкоштовно завантажити, mp3, відео, mp4, 3gp, jpg, jpeg, gif, png, малюнок, музика, пісня, фільм, книга, гра, ігри, мобільний, телефон, android, ios, apple, мобільний телефон, samsung, iphone, xiomi, xiaomi, redmi, honor, oppo, nokia, sonya, mi, ПК, web, Інтернет
Lua lu a port misyac shvidka i kompaktna skriptova mova programuvannya rozroblena pidrozdilom Tecgraf Katolickogo universitetu Rio de Zhanejro Computer Graphics Technology Group of Pontifical Catholic University of Rio de Janeiro in Brazil Interpretator movi ye vilno poshiryuvanim z vidkritim pochatkovim kodom na movi C LuaParadigmamulti paradigmova skriptova imperativna funkcionalna ob yektno oriyentovana prototipnaData poyavi1993 1 TvorciRoberto YerusalimskijRozrobnikRoberto Yerusalimskij 2 Ostannij relizSistema tipizaciyidinamichna slaba kachinaOsnovni realizaciyiLua LuaJIT LLVM Lua LuaCLR Nua Lua AlchemyDialektiMetaluaPid vplivom vidC CLU d d Snobol Modula d i SchemeVplinula na en GameMonkey Mova realizaciyiC 3 Operacijna sistemakrosplatformova programa 4 LicenziyaMIT 5 6 Zvichajni rozshirennya fajliv lua 7 8 luna lunaire abo anairRepozitorij vihidnogo kodugithub com lua luaVebsajtlua org Instrukciyi u Vikipidruchniku Mediafajli u Vikishovishi Za mozhlivostyami ideologiyeyu i realizaciyeyu mova najblizhcha do JavaScript prote Lua vidriznyayetsya mogutnishimi j nabagato gnuchkishimi konstrukciyami sproyektovanimi z metoyu ne ploditi sutnosti ponad neobhidne Hocha Lua ne mistit ponyattya klasu i ob yekta v yavnomu viglyadi mehanizmi ob yektnooriyentovanogo programuvannya OOP z pidtrimkoyu prototipiv vklyuchayuchi mnozhinne uspadkuvannya legko realizuyutsya z vikoristannyam metatablic yaki takozh dozvolyayut perevantazhennya operacij tosho Realizovana model OOP yak i v JavaScript prototipna Lua otrimala velike poshirennya v roli vbudovanoyi v inshi proyekti movi scenariyiv napriklad dlya viznachennya konfiguraciyi abo dlya napisannya rozshiren Lua kombinuye prostij procedurnij sintaksis z potuzhnimi mozhlivostyami opisu danih cherez vikoristannya asociativnih masiviv i rozshiryuvanoyi semantiki movi U Lua vikoristovuyetsya dinamichna tipizaciya movni konstrukciyi peretvoryuyutsya na bajt kod yakij vikonuyetsya poverh registrovoyi virtualnoyi mashini z avtomatichnim zbirachem smittya Sam interpretator oformlenij u viglyadi biblioteki legko integrovanoyi v proyekti na movah Si ta Si Kod interpretatora Lua napisanij movoyu Si j rozpovsyudzhuyetsya pid licenziyeyu MIT IstoriyaStvorennya movi pochalosya v 1993 Komanda rozrobnikiv z katolickogo universitetu Rio de Zhanejro nevelika Roberto Yerusalimskij Roberto Ierusalimschy Voldemar Celes Waldemar Celes i Luyis Enrike Luiz Henrique Spochatku mova zamislyuvalasya yak opisova dlya zruchnosti formuvannya velikih masiviv danih pri rishenni zavdan obchislyuvalnogo eksperimentu i mashinnogo modelyuvannya Ale vidtodi mova zaznala znachnih zmin i nizki serjoznih arhitekturnih modifikacij Sogodnishnya populyarnist Lua taka sho Microsoft vidilila rozrobnikam grant na stvorennya NET versiyi movi U bagatoh igrah Lua vikoristovuyetsya yak skriptovij rushij zavdyaki unikalnomu poyednannyu shvidkodiyi legkosti vbudovuvannya v programi ta pidtrimci rozshiryuvanoyi semantiki RealizaciyaYak i bagato interpretovanih mov programuvannya realizaciya Lua maye okremo kompilyator z pochatkovogo kodu u vikonuvanij bajt kod i virtualnu mashinu dlya vikonannya zgenerovanogo bajt kodu Osoblivistyu ye te sho bajt kod ce komandi ne stekovoyi mashini komandi virtualnogo registrovogo procesora yakij bilshe vidpovidaye realnim CPU Take arhitekturne rishennya majzhe pryamo translyuyetsya na komandi suchasnih CPU Ce suttyevo zmenshuye operaciyi z peretvorennya Vnaslidok zmenshennya tehnologichnih operacij peretvorennya zrostaye efektivnist vikonannya Lua skriptiv Standartna virtualna mashina Lua vikoristovuye rozpodil pam yati iz pribirannyam smittya analogichno Java abo NET Dlya zavdan kritichnih za chasom ye JIT kompilyator Lua LuaJIT Lua vikoristovuye yedinij ryadkovij pul sho dozvolyaye zmenshiti vitrati pam yati na zberigannya ryadkiv Prikladi koduKlasichnu programu Hello world Vitayu svite mozhna napisati tak print Vitayu svite Cikl z lichilnikom ta krokom v odinicyu for i 1 10 do print i end V rezultati budut vivedeni chisla vid 1 do 10 Dlya zmini kroku v cikli treba vkazati krok tretim parametrom for i 1 10 2 do teper krok ciklu dorivnyuye 2 print i end V rezultati budut vivedeni chisla vid 1 3 5 7 9 Pidrahunok faktorialu daye priklad vikoristannya rekursivnih funkcij function factorial n if n 0 then return 1 Komentar v Lua pochinayetsya z podvijnogo defisa else return n factorial n 1 i zakinchuyetsya na kinci ryadka end end function factorial2 n korotshij ekvivalent napisanogo vishe return n 0 and 1 or n factorial2 n 1 end print multiple lines kilkaryadkovij viraz chi komentar treba pomishati v podvijni kvadratni duzhki Tipi danihV Lua ye visim tipiv danih nil neviznacheni znachennya boolean logichni znachennya number chisla string ryadki table tablici function funkciyi thread potoki ta userdata Diznatis tip zminnoyi mozhna za dopomogoyu funkciyi type nil nil ce porozhnye znachennya Jogo golovni vlastivosti vidriznyatis vid bud yakogo znachennya ta vkazuvati na vidsutnist znachennya pridatnogo dlya yakogo nebud vikoristannya Takozh nil mozhe buti vikoristanim yak logichne znachennya v takomu razi vin poznachatime nepravdu Logichni znachennya Logichnij tip boolean mistit dva znachennya true pravda ta false nepravda Chisla Chislovij tip v Lua zazvichaj predstavlenij dijsnimi chislami z ruhomoyu komoyu z podvijnoyu tochnistyu hocha mozhna zibrati Lua z inshimi chislami zminivshi viznachennya v luaconf h Ryadki Ryadki v Lua mozhut vklyuchati v sebe bud yakij vosmibitnij simvol Shob stvoriti ryadkovij literal vmist ryadka potribno pomistiti v odinarni abo podvijni lapki Takozh mozhna vikoristovuvati ryadki z perenosami Dlya cogo vikoristovuyutsya podvijni kvadratni duzhki n nogo rivnya de duzhki nulovogo rivnya duzhki pershogo rivnya duzhki drugogo rivnya i t d Dlya prikladu vikoristayemo duzhki tretogo rivnya a ryadki z perenosom v lua Mozhna pomititi sho v literalah stvorenih takim chinom ne potribno ekranuvati odinarni ta podvijni lapki yak ce potribno robiti pri inshih vidah zapisu Tablici Tablici ye najvazhlivishim tipom danih v Lua i ye osnovoyu dlya tipiv danih koristuvacha takih yak strukturi masivi spiski mnozhini Tablicya v Lua yavlyaye soboyu nabir par Klyuch Znachennya Klyuchem mozhe buti bud yake znachennya okrim nil Tablici ne mayut fiksovanogo rozmiru Tomu mozhna dodavati skilki zavgodno elementiv v tablicyu dinamichno Priklad tablici t pusta tablicya t k 10 Klyuch k znachennya 10 t 20 super Klyuch 20 znachennya super t IP 192 168 0 1 Klyuch IP znachennya 192 168 0 1 Teper zapovnena tablicya bude viglyadati tak t k 10 20 super IP 192 168 0 1 Odinarni ta podvijni lapki v Lua rivnoznachni Varto vibrati odin iz vidiv lapok pri napisanni kodu Dlya vivodu par Klyuch Znachennya z tablici na ekran skoristajtes ciklom for bazovoyu funkciyeyu pairs ta funkciyeyu print for key val in pairs t do print key val end V rezultati otrimayemo pari 20 super k 10 IP 192 168 0 1 Tablici mozhna vikoristovuvati i yak zvichajni masivi Dlya cogo varto skoristatis zapisom t a b c d e pislya chogo do elementiv mozhna zvertatis za indeksom print t 2 vivede b Zvernit uvagu sho stvoreni takim chinom masivi pochinayutsya z odinici a ne z nulya yak v bilshosti inshih mov Funkciyi Funkciyi v Lua ye znachennyami pershogo klasu sho oznachaye sho funkciyi mozhna peredavati do inshih funkcij povertati z nih ta vikoristovuvati zamikannya Funkciyi mozhut povertati bud yaku kilkist znachen Takozh funkciyu mozhna viklikati z bud yakoyu kilkistyu parametriv zajvi budut ignoruvatis a tim yakih ne vistachaye bude prisvoyeno znachennya nil Potoki Tip thread poznachaye nezalezhnij potik vikonannya Potoki Lua ne varto asociyuvati z potokami operacijnoyi sistemi bagatopotochna programa mozhe vikonuvatis navit v tih sistemah yaki ne pidtrimuyut potoki userdata Tip userdata vikoristovuyetsya dlya roboti z danimi z movi C V nogo nemaye viznachenih napered operacij prote yih mozhna viznachiti za dopomogoyu metatablic Takozh znachennya cogo tipu ne mozhut buti ni stvoreni ni zmineni z Lua dlya cogo potribno vikoristovuvati C API VikoristannyaLua u Vikipediyi U sichni 2012 na zustrichi rozrobnikiv vikirushiya MediaWiki yakij vikoristovuyetsya dlya zabezpechennya roboti Vikipediyi bulo prijnyato rishennya pro zaluchennya movi Lua dlya rozrobki shabloniv Vikoristovuvana na toj chas sistema shabloniv ne vlashtovuvala rozrobnikiv cherez zajvu uskladnenist ta nizku efektivnist Integraciya Lua v MediaWiki pochalasya na pochatku travnya 2012 pislya vihodu relizu MediaWiki 1 19 ta migraciyi proyektu na sistemu upravlinnya pochatkovimi tekstami Git Shabloni dozvolyayut koristuvacham MediaWiki avtomatizuvati stvorennya tipovogo vmistu sho vklyuchayetsya v inshi storinki i stvoryuvati instrumenti dlya manipulyaciyi danimi peretvoryuyuchi viki tekst v yakus podobu movi programuvannya Narazi shabloni dlya MediaWiki stvoryuyutsya z vikoristannyam dodatkovoyi wiki rozmitki ta rozshirennya ParserFunctions sho stvoryuye istotni obmezhennya u funkcionalnosti j prizvodit do vitrat znachnih resursiv pri vikonanni Namir perejti do vikoristannya v shablonah povnocinnoyi movi programuvannya nazriv uzhe davno ale vinikla problema viboru rozgornulasya palka diskusiya mizh prihilnikami Javascript i Lua U pidsumku peremogla Lua golovnim chinom zavdyaki tehnichno prostishij integraciyi v proyekt Sered inshih perevag bulo nazvano efektivna robota z pam yattyu visoka produktivnist zastosovuyetsya JIT kompilyaciya sho robit Lua shvidshoyu za PHP z vikoristannyam Zend kompaktnist i pochatkova oriyentaciya na efektivne vbudovuvannya v storonni zastosunki Robota nad eksperimentalnim prototipom na bazi Lua pochalasya u 2011 roci j pokazala sho mozhna istotno zbilshiti produktivnist sistemi shabloniv VinoskiLua about https www lua org authors html The lua Open Source Project on Open Hub Languages Page 2006 d Track Q124688 https www lua org about html https www lua org license html The lua Open Source Project on Open Hub Licenses Page 2006 d Track Q124688 Lua 5 1 Reference Manual 2019 A Look at the Design of Lua New York Association for Computing Machinery 2018 ISSN 0001 0782 1557 7317 d Track Q1120519 Lua scripting Meeting 2012 01 25 Arhiv originalu za 26 travnya 2012 Procitovano 3 lyutogo 2012 Arhiv originalu za 4 lyutogo 2012 Procitovano 3 lyutogo 2012 opennet ru ros Arhiv originalu za 2 lyutogo 2012 Procitovano 3 lyutogo 2012 PosilannyaLua u sestrinskih Vikiproyektah Portal Programuvannya Lua na Meta viki Lua na MediaWiki Fajli u Vikishovishi Oficijnij sajt angl Zavantazhiti Lua skompilovani fajli 31 travnya 2017 u Wayback Machine angl Cikl statej pro Lua v zhurnali Linux Format 20 zhovtnya 2017 u Wayback Machine ros angl Vebsajt spilnoti koristuvachiv i avtoriv Lua 16 grudnya 2010 u Wayback Machine angl Lua wiki 11 zhovtnya 2008 u Wayback Machine angl lua l archive 4 listopada 2008 u Wayback Machine oficijnij spisok angl Luai 8 veresnya 2008 u Wayback Machine alternativnij interfejs dovidki angl ONLamp com angl GameDev net angl nedostupne posilannya z 07 06 2017 Computerworld angl V inshomu movnomu rozdili ye povnisha stattya Lua programming language angl Vi mozhete dopomogti rozshirivshi potochnu stattyu za dopomogoyu perekladu z anglijskoyi Divitis avtoperekladenu versiyu statti z movi anglijska Perekladach povinen rozumiti sho vidpovidalnist za kincevij vmist statti u Vikipediyi nese same avtor redaguvan Onlajn pereklad nadayetsya lishe yak korisnij instrument pereglyadu vmistu zrozumiloyu movoyu Ne vikoristovujte nevichitanij i nevidkorigovanij mashinnij pereklad u stattyah ukrayinskoyi Vikipediyi Mashinnij pereklad Google ye korisnoyu vidpravnoyu tochkoyu dlya perekladu ale perekladacham neobhidno vipravlyati pomilki ta pidtverdzhuvati tochnist perekladu a ne prosto skopiyuvati mashinnij pereklad do ukrayinskoyi Vikipediyi Ne perekladajte tekst yakij vidayetsya nedostovirnim abo neyakisnim Yaksho mozhlivo perevirte tekst za posilannyami podanimi v inshomovnij statti Dokladni rekomendaciyi div Vikipediya Pereklad