Lua | |
---|---|
Парадигма | мульти-парадигмова: скриптова, імперативна, функціональна, об'єктно-орієнтована, прототипна |
Дата появи | 1993[1] |
Творці | Роберто Єрусалимський |
Розробник | Роберто Єрусалимський[2] |
Останній реліз | |
Система типізації | динамічна, слаба, качина |
Основні реалізації | Lua, LuaJIT, LLVM-Lua, LuaCLR, Nua, Lua Alchemy |
Діалекти | Metalua |
Під впливом від | C++, CLU, Simple Object Languaged, DELd, Snobol, Модула, Modula-2d і Scheme |
Вплинула на | Io[en], GameMonkey, Squirrel, Falcon, MiniD |
Мова реалізації | C[3] |
Операційна система | кросплатформова програма[4] |
Ліцензія | MIT[5][6] |
Звичайні розширення файлів | .lua [7][8], .luna , .lunaire або .anair |
Репозиторій вихідного коду | github.com/lua/lua |
Вебсайт | lua.org |
Lua ([лу́а], порт. місяць) — швидка і компактна скриптова мова програмування, розроблена підрозділом Tecgraf Католицького університету Ріо-де-Жанейро (Computer Graphics Technology Group of Pontifical Catholic University of Rio de Janeiro in Brazil). Інтерпретатор мови є вільно поширюваним, з відкритим початковим кодом на мові C.
За можливостями, ідеологією і реалізацією, мова найближча до JavaScript, проте Lua відрізняється могутнішими й набагато гнучкішими конструкціями, спроєктованими з метою «не плодити сутності понад необхідне». Хоча Lua не містить поняття класу і об'єкта в явному вигляді, механізми об'єктноорієнтованого програмування (ООП) з підтримкою прототипів (включаючи множинне успадкування) легко реалізуються з використанням метатаблиць, які також дозволяють перевантаження операцій тощо. Реалізована модель ООП (як і в JavaScript) — прототипна.
Lua отримала велике поширення в ролі вбудованої в інші проєкти мови сценаріїв (наприклад, для визначення конфігурації або для написання розширень). Lua комбінує простий процедурний синтаксис з потужними можливостями опису даних через використання асоціативних масивів і розширюваної семантики мови. У Lua використовується динамічна типізація, мовні конструкції перетворюються на байт-код, який виконується поверх регістрової віртуальної машини з автоматичним збирачем сміття. Сам інтерпретатор оформлений у вигляді бібліотеки, легко інтегрованої в проєкти на мовах Сі та Сі++. Код інтерпретатора Lua написаний мовою Сі й розповсюджується під ліцензією MIT.