Lua
Материал из Википедии — свободной энциклопедии
![]() |
|
| Семантика: | {{{semantics}}} |
|---|---|
| Класс языка: | мультипарадигменный |
| Тип исполнения: | интерпретируемый, JIT |
| Появился в: | 1993 г. |
| Автор(ы): | Роберто Иерусалимски, Вальдемар Челес, Луис Энрике де Фигейреду |
| Последняя версия: | 5.1.3 |
| Тестовая версия: | {{{latest_test_version}}} |
| Типизация данных: | {{{typing}}} |
| Основные реализации: | {{{implementations}}} |
| Диалекты: | отсутствуют |
| Создан под влиянием: | Scheme, Icon |
| Оказал влияние на: | Io, Squirrel |
Lua ([лу́а], порт. «луна») — интерпретируемый язык программирования, разработанный подразделением Tecgraf Католического университета Рио-де-Жанейро (Computer Graphics Technology Group of Pontifical Catholic University of Rio de Janeiro in Brazil). Является свободно распространяемым, с открытыми исходными текстами на языке Си.
По возможностям, идеологии и реализации язык ближе всего к JavaScript, однако Lua отличается более мощными и гораздо более гибкими конструкциями, спроектирован с целью «не плодить сущности сверх необходимого». Хотя Lua не содержит понятия класса и объекта в явном виде, механизмы объектно-ориентированного программирования с поддержкой прототипов (включая множественное наследование) легко реализуются с использованием метатаблиц, которые также позволяют перегрузку операций и т. п. Реализуемая модель ООП (как и в JavaScript) — прототипная
Lua в переводе с португальского значит «луна», поэтому неправильно писать «LUA» — так же, как и неправильно писать любое другое слово одними только прописными символами.
Содержание |
[править] История
Создание языка началось в 1993 г. Команда разработчиков из католического университета Рио-де-Жанейро невелика — Роберто Иерусалимский (Roberto Ierusalimschy), Вольдемар Целес (Waldemar Celes) и Луис Энрике (Luiz Henrique). Изначально язык задумывался как описательный — для удобства формирования больших массивов данных при решении задач вычислительного эксперимента и машинного моделирования. С тех пор язык претерпел множество изменений и ряд серьезных архитектурных модификаций. Сегодняшняя популярность Lua такова, что Microsoft выделила разработчикам грант на создание .NET-версии языка. Во многих играх Lua используется в качестве «скриптового движка» благодаря уникальному сочетанию быстродействия, легкости встраивания в программы и поддержке «расширяемой семантики».
[править] Некоторые возможности
Подобно таким скриптовым языкам, как Python и Icon, допускает параллельное присваивание. В простейшем случае это позволяет писать выражения вида
x, y = y, x
Программа «Hello, world» в простейшем случае выглядит так:
print "Hello, world!"
[править] Типы
Lua представляет собой язык с динамическим определением типов данных. Переменная языка может содержать значения любого типа. Все значения в Lua могут храниться в переменных, использоваться в качестве аргументов при вызове функций и возвращаться в виде результата их выполнения.
В Lua восемь основных типов: nil (неопределенный), boolean (логический), number (числовой), string (строковый), function (функция), userdata (пользовательские данные), thread (поток), и table (таблица). Nil — это тип значения nil [пустое значение], главное свойство которого — отличаться от всех остальных значений и обозначать отсутствие пригодного значения. К типу Boolean относятся значения false (ложь) и true (истина). Значения nil и false считаются ложными, любое другое значение считается истинным. К типу Number относятся вещественные числа (двойной точности с плавающей запятой). (Легко можно сделать сборку интерпретатора Lua с другим внутренним представлением чисел, достаточно изменить определение в файле luaconf.h). Тип String обозначает массивы символов. Строки Lua могут содержать любые 8 битные символы, включая ноль ('\0').
[править] Таблицы
Таблицы являются самым важным типом данных в Lua и являются фундаметном для пользовательских типов данных. Таблица в Lua представляет собой набор пар — (Ключ, Значение). Ключом может выступать значение любого типа, кроме nil.
[править] Реализация
Как и многие интерпретируемые языки программирования, реализация Lua имеет отдельно компилятор с исходного языка в исполняемый байт-код и виртуальную машину для исполнения сгенерированного байт-кода. Причём байт-код — это не команды стековой машины, а команды некоего виртуального процессора с несколькими регистрами, что повышает эффективность исполнения. В стандартной виртуальной машине Lua используется распределение памяти со сборкой мусора (аналогично Java или .NET).
Для задач критичных по времени имеется JIT компилятор Lua LuaJIT.
Lua использует единый строковой пул, что позволяет снизить расходы памяти на хранение строк.
[править] Использование
В настоящее время используется в различных проектах, где требуется встроить достаточно быстрый и нетрудный в освоении скриптовый язык программирования — например, в разработке игр, где Lua часто используется между игровым «движком» и данными для написания сценариев поведения/взаимодействия объектов.
Язык используется в следующих играх:
- Heroes of Might and Magic V
- Lock On
- Xmoto
- Far Cry
- World of Warcraft
- Игры из серии Baldur's Gate
- MDK2
- моды к Half-Life 2
- Игры построенные на движке GrimE (Grim Fandango, Escape from Monkey Island)
- S.T.A.L.K.E.R. — Shadow of Chernobyl
- Enigma
- Блицкриг
- Блицкриг II
- Ragnarok Online (используется пользователями для описания поведения гомункулусов)
- Ведьмак
- Daimonin
- Worms Armageddon
- Crysis
- Multi Theft Auto
- Toribash
- Garry's Mod
- Freelancer
- Пиратия Online
- Freeciv
- Digital Combat Simulator
Lua широко используется как язык скриптов в программном обеспечении сети Direct Connect.
[править] Ссылки
- Официальный сайт разработчиков Lua(англ.)
- Cайт проектов Lua(англ.)
- Cайт пользователей Lua(англ.)
- Kepler Project team — Платформа веб-разработки под Lua(англ.)
[править] Lua на русском
- Справочное руководство по языку Lua 5.1
- Справочное руководство по языку программирования Lua 4.0
- Русскоязычный мануал по Lua 5.0, той его части, которая необходима для написания скриптов игры. — Фрагмент справочного руководства по языку Lua 5.0 для написание скриптов для игр: Heroes of Might and Magic V и Серп и Молот
- Еще один «летний» язык программирования, Андрей Зубинский
- Введение в Lua, Ash Matheson
- Создание встраиваемых сценариев на языке Lua, Мартин Страйчер
- Введение в Lua, Keith Fieldhouse — перевод статьи Introducing Lua(англ.)
|
|
|
|---|---|
| Используемые в разработке | ABAP/4 | Ада | ActionScript | Ассемблеры | AutoIt | Awk | BASIC | C | КОБОЛ | C++ | C# | ColdFusion | D | Delphi | Erlang | Eiffel | Forth | FoxPro | DataFlex | Фортран | Groovy | Haskell | Java | JavaScript | J++ | J# | Icon | Limbo | Лисп | Lua | Object Pascal | Objective-C | Оберон | Oz | Паскаль | Perl | PHP | PL/I | Пролог | Руби | Python | Tcl | Scheme | Smalltalk | SQL | Vala | Visual DataFlex | Visual Basic | VB.NET | Visual FoxPro |
| Академические | АПЛ | Clean | Curry | Gambas | Лого | MATLAB | ML | Scala |
| IEC61131-3 | Instruction List | ST | FBD | Ladder Diagram | SFC |
| Прочие | Алгол | Алгол 68 | Модула-2 | Miranda | Hope |
| Эзотерические | INTERCAL | Brainfuck | Befunge | Malbolge | Unlambda |
| список всех языков | |


