Lua - Рефераты

advertisement
Реферат на тему:
Lua
План:
Введение




1 История
2 Некоторые возможности
o 2.1 Типы
 2.1.1 Таблицы
 2.1.2 Замыкания
3 Реализация
4 Использование
o 4.1 Игры
o 4.2 Программное обеспечение
Примечания
Введение
Lua ([лу́а], порт. «луна») — интерпретируемый язык программирования, разработанный
подразделением Tecgraf Католического университета Рио-де-Жанейро (Computer Graphics
Technology Group of Pontifical Catholic University of Rio de Janeiro in Brazil). Является
свободно распространяемым, с открытыми исходными текстами на языке Си.
По возможностям, идеологии и реализации язык ближе всего к JavaScript, однако Lua
отличается более мощными и гораздо более гибкими конструкциями, спроектирован с
целью «не плодить сущности сверх необходимого». Хотя Lua не содержит понятия класса
и объекта в явном виде, механизмы объектно-ориентированного программирования с
поддержкой прототипов (включая множественное наследование) легко реализуются с
использованием метатаблиц, которые также позволяют перегрузку операций и т. п.
Реализуемая модель ООП (как и в JavaScript) — прототипная.
Lua в переводе с португальского значит «луна», поэтому неправильно писать «LUA»
одними только прописными символами.
1. История
Lua разработан подразделением Tecgraf Католического университета Рио-де-Жанейро в
Бразилии (Computer Graphics Technology Group of Pontifical Catholic University of Rio de
Janeiro), история языка ведёт отсчёт с 1993 года. Lua распространяется свободно, с
открытыми исходными текстами на языке Си.
2. Некоторые возможности
Подобно таким скриптовым языкам, как Python и Icon, допускает параллельное
присваивание. В простейшем случае это позволяет писать выражения вида
x, y = y, x
Программа «Hello, world» в простейшем случае выглядит так:
print "Hello, world!"
2.1. Типы
Lua представляет собой язык с динамическим определением типов данных. Переменная
языка может содержать значения любого типа. Все значения в Lua могут храниться в
переменных, использоваться в качестве аргументов при вызове функций и возвращаться в
виде результата их выполнения.
В Lua восемь основных типов:
1.
2.
3.
4.
5.
6.
7.
8.
nil (неопределенный)
boolean (логический)
number (числовой)
string (строковый)
function (функция)
userdata (пользовательские данные)
thread (поток)
table (таблица)
Nil — это тип значения nil [пустое значение], главное свойство которого — отличаться от
всех остальных значений и обозначать отсутствие пригодного значения. К типу Boolean
относятся значения false (ложь) и true (истина). Значения nil и false считаются ложными,
любое другое значение считается истинным. К типу Number относятся обычно
вещественные числа (double), но внутреннее представление чисел можно изменить при
сборке интерпретатора. Тип String обозначает массивы символов. Строки Lua могут
содержать любые 8-битные символы, включая ноль ('\0'). Строки неизменяемы.
2.1.1. Таблицы
Таблицы являются самым важным типом данных в Lua и являются фундаментом для
пользовательских типов данных, таких как структуры, массивы, списки, множества.
Таблица в Lua представляет собой набор пар — (Ключ, Значение). Ключом может
выступать значение любого типа, кроме nil.
2.1.2. Замыкания
Lua поддерживает концепцию замыканий, например:
function makeaddfunc(x)
-- Возвращает новую анонимную функцию, которая добавляет x к аргументу
return function(y)
-- Когда мы ссылаемся на переменную x, которая вне текущей области,
-- и время жизни которой меньше, чем этой анонимной функции,
-- Lua создаёт замыкание.
return x + y
end
end
plustwo = makeaddfunc(2)
print(plustwo(5)) -- Выводит 7
Каждый раз, когда вызывается makeaddfunc, создаётся новое замыкание для переменной
x, так что каждая возвращаемая анонимная функция будет ссылаться на свой параметр x.
Как и у любого другого объекта Lua, временем жизни замыкания управляет сборщик
мусора.
3. Реализация
Как и многие интерпретируемые языки программирования, реализация Lua имеет
отдельно компилятор с исходного языка в исполняемый байт-код и виртуальную машину
для исполнения сгенерированного байт-кода. Причём байт-код — это не команды
стековой машины, а команды некоего виртуального процессора с несколькими
регистрами, что повышает эффективность исполнения. В стандартной виртуальной
машине Lua используется распределение памяти со сборкой мусора (аналогично Java или
.NET).
Lua использует единый строковой пул, что позволяет снизить расходы памяти на хранение
строк.
Для задач, критичных по времени, имеется JIT компилятор Lua LuaJIT. Также разработан
компилятор llvm-lua, генерирующий код для виртуальной машины LLVM, позволяющей
последующую компиляцию в очень эффективный машинный код для процессоров
различной архитектуры.
4. Использование
В настоящее время используется в различных проектах, где требуется встроить
достаточно быстрый и нетрудный в освоении скриптовый язык программирования —
например, в разработке игр, где Lua часто используется между игровым «движком» и
данными для написания сценариев поведения/взаимодействия объектов.
4.1. Игры






























Aquaria
Baldur's Gate и прочие игры на
движке Infinity Engine
Broken Sword 2.5: The Return Of The
Templars
Civilization V
Cortex Command (начиная с 23-го
билда)
Counter-Strike 2D
Crysis
Daimonin
Demigod
Diablo 3
Digital Combat Simulator
Enigma
Far Cry
Farming-Simulator 2009
FlatOut 2
Roblox
Freeciv
Freelancer
Grim Fandango и Escape from Monkey
Island (движок GrimE)
Garry's Mod и Fortress Forever (моды к
Half-Life 2)
Hedgewars
Homeworld 2
INSTEAD — игровой движок, игры
для которого пишутся на Lua.
King’s Bounty. Легенда о рыцаре
Lock On
Mafia 2
Magic: The Gathering — Duels of the
Planeswalkers
MDK2
Multi Theft Auto
Operation Flashpoint: Dragon Rising





























Puzzle Quest: Challenge of the Warlords
Ragnarok Online (используется
пользователями для описания
поведения гомункулусов)
Rail Simulator
Rail Simulator 2 (также известен как
RailWorks)
Requiem Online
Runes of Magic
Silent Storm (и созданные на его
движке Серп и молот, Ночной дозор,
Heroes of Might and Magic V)
игры и моды на свободном движке
Spring (Balanced Annihilation,
P.U.R.E., Star Wars: Imperial Winter,
Spring:1944 и т. д.)
серия S.T.A.L.K.E.R.
Shank
Supreme Commander
Supreme Commander 2
Teeworlds
Tom Clancy's H.A.W.X.
Toribash
Warhammer 40,000: Dawn of War II
Warhammer Online: Age of Reckoning
World of Warcraft
World of Chaos
World of Battles
Worms Armageddon
Xmoto
X-Plane
Аллоды Онлайн
Блицкриг и Блицкриг II
Ведьмак
Демиурги
Звёздные волки 2: Гражданская война
Паркан 2


Orbiter
Painkiller





Пиратия Online
Проклятые земли (Аллоды 3)
Свод Равновесия. Бельтион
Яйца Фаберже. Приключение
Ancient Wars: Sparta
4.2. Программное обеспечение
























Пользовательский интерфейс Adobe Photoshop Lightroom написан с
использованием Lua
Плагин Amnesia позволяет автоматизировать обработку событий в R&Q с
помощью Lua
Конфигурационные файлы Awesome (динамический оконный менеджер для X
Window System) используют язык программирования Lua
Библиотека виджетов BUIW для BREW использует Lua для описания файлов тем
В Celestia, свободной трёхмерной астрономической программе, Lua используется
для написания расширений и плагинов
Программа для системного мониторинга Conky использует Lua как язык скриптов
для расширения возможностей
Direct Connect использует Lua как язык скриптов в программном обеспечении сети
Dr.Web Enterprise Suite
HandyCache использует Lua как язык для написания расширений
Фреймовый оконный менеджер Ion использует Lua для настройки и добавления
новых функций (возможностей)
IP-PBX Asterisk имеет возможность использовать Lua как язык управления вызовов
(диалплан)
MySQL proxy использует Lua как встроенный язык для реализации возможностей
своей функциональности
Платформа OpenAT позволяет разрабатывать пользовательские приложения на Lua
В OpenWRT на Lua написан веб интерфейс управления
Текстовый редактор SciTE использует Lua как язык скриптов для расширения
возможностей
uiOne использует Lua как язык скриптов при создании пользовательских
интерфейсов на языке TrigML
Медиаплеер VLC использует Lua как язык скриптов
Сниффер Wireshark использует Lua как язык для создания анализаторов сетевых
протоколов.
Автоматизированная мобильная система Агент+ использует Lua как язык скриптов
для расширения возможностей
Клавиатуры Logitech серии G (клавиатуры для геймеров) поддерживают написание
скриптов на Lua.
Начиная с версии 7.3 текстовый редактор Vim поддерживает сценарии на Lua.
Lua поддерживается NSClient++ как язык скриптов для расширения возможностей
СУБД Cronos используют язык Lua для сознания форм статистических отчетов и
создания формул.
FXCM Marketscope Charts ипспользует язык Lua для написания технических
индикаторов и торговых стратегий.
Примечания
1. Lua Implementations - lua-users.org/wiki/LuaImplementations (англ.). Lua-users wiki.
Download