Lua
Материал из Seo Wiki - Поисковая Оптимизация и Программирование
В другом языковом разделе есть более полная статья Lua (programming language) (англ.) Вы можете помочь проекту, дописав эту статью с помощью перевода.
|
Файл:Логотип Lua.gif </span> |
Содержание |
История
Lua разработан подразделением Tecgraf Католического университета Рио-де-Жанейро в Бразилии (Computer Graphics Technology Group of Pontifical Catholic University of Rio de Janeiro), история языка ведёт отсчёт с 1993 года. 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 поддерживает концепцию замыканий, например:
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, временем жизни замыкания управляет сборщик мусора.
Реализация
Как и многие интерпретируемые языки программирования, реализация Lua имеет отдельно компилятор с исходного языка в исполняемый байт-код и виртуальную машину для исполнения сгенерированного байт-кода. Причём байт-код — это не команды стековой машины, а команды некоего виртуального процессора с несколькими регистрами, что повышает эффективность исполнения. В стандартной виртуальной машине Lua используется распределение памяти со сборкой мусора (аналогично Java или .NET).
Lua использует единый строковой пул, что позволяет снизить расходы памяти на хранение строк.
Для задач, критичных по времени, имеется JIT компилятор Lua LuaJIT. Также разработан компилятор llvm-lua, генерирующий код для виртуальной машины LLVM, позволяющей последующую компиляцию в очень эффективный машинный код для процессоров различной архитектуры.
Использование
В настоящее время используется в различных проектах, где требуется встроить достаточно быстрый и нетрудный в освоении скриптовый язык программирования — например, в разработке игр, где Lua часто используется между игровым «движком» и данными для написания сценариев поведения/взаимодействия объектов.
Игры
- Aquaria
- Baldur's Gate и прочие игры на движке Infinity Engine
- Cortex Command (начиная с 23-го билда)
- Counter-Strike 2D
- Crysis
- Daimonin
- Demigod
- Diablo 3
- Digital Combat Simulator
- Enigma
- Far Cry
- FlatOut 2
- Roblox
- Freeciv
- Freelancer
- Grim Fandango и Escape from Monkey Island (движок GrimE)
- Garry's Mod и Fortress Forever (моды к Half-Life 2)
- Homeworld 2
- Lock On
- MDK2
- Multi Theft Auto
- Operation Flashpoint: Dragon Rising
- Painkiller
- Ragnarok Online (используется пользователями для описания поведения гомункулусов)
- 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.
- Supreme Commander
- Teeworlds
- Tom Clancy's H.A.W.X.
- Toribash
- Warhammer Online: Age of Reckoning
- World of Warcraft
- Worms Armageddon
- Xmoto
- X-Plane
- Аллоды Онлайн
- Блицкриг и Блицкриг II
- Ведьмак
- Демиурги
- Звёздные волки 2: Гражданская война
- Паркан 2
- Пиратия Online
- Проклятые земли (Аллоды 3)
- Яйца Фаберже. Приключение
- Ancient Wars: Sparta
Программное обеспечение
- Пользовательский интерфейс 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
- Фреймовый оконный менеджер Ion использует Lua для настройки и добавления новых функций (возможностей)
- Платформа OpenAT позволяет разрабатывать пользовательские приложения на Lua
- В OpenWRT на Lua написан веб интерфейс управления
- Текстовый редактор SciTE использует Lua как язык скриптов для расширения возможностей
- uiOne использует Lua как язык скриптов при создании пользовательских интерфейсов на языке TrigML
- Медиаплеер VLC использует Lua как язык скриптов
- Сниффер Wireshark использует Lua как язык для создания анализаторов сетевых протоколов.
- Автоматизированная мобильная система Агент+ использует Lua как язык скриптов для обработки различных данных, а также для обработки процесса записи документа в КПК
- MySQL proxy использует Lua как встроенный язык для реализации возможностей своего функционала
- IP-PBX Asterisk имеет возможность использовать Lua как язык управления вызовов (диалплан)
- HandyCache использует Lua как язык для написания расширений
Примечания
- ↑ Lua Implementations (англ.). Lua-users wiki. Проверено 18 мая 2009.
Ссылки
- Официальный сайт разработчиков Lua(англ.)
- Сайт проектов Lua(англ.)
- Сайт пользователей Lua(англ.)
- Kepler Project team — Платформа веб-разработки под Lua(англ.)
Lua на русском
- Справочное руководство по языку Lua 5.1
- Русскоязычный мануал по Lua 5.0 — фрагмент справочного руководства по языку Lua 5.0 для написания скриптов для игр Heroes of Might and Magic V и Серп и Молот
- Справочное руководство по языку Lua 4.0
- ru_lua — русскоязычное сообщество
- Введение в Lua, Ash Matheson — перевод статьи An Introduction to Lua(англ.)
- Введение в Lua, Keith Fieldhouse — перевод статьи Introducing Lua(англ.)
- Создание встраиваемых сценариев на языке Lua, Мартин Страйчер
- Еще один «летний» язык программирования (часть 2; часть 3; часть 4), Андрей Зубинский
- Скриптовый язык Lua, Александр Людоговский — основные возможности языка и пакета Lua for Windows
- Язык Lua и использование скриптов на нем в программах на С++ (часть 2), Алексей Боресков
- Я люблю Lua, Илья Белов — уроки по использованию Lua совместно с С++
- Добавление скриптинга в программу с помощью Lua
Основные языки программирования (список • сравнение • IDE • история • хронология) |
|
---|---|
Используемые в разработке |
Ада • АПЛ • Ассемблер • ActionScript • ABAP/4 • AutoIt • AWK • BASIC • C • Кобол • C++ • C# • ColdFusion • Common Lisp • D • dBase • Delphi • Eiffel • Erlang • F# • Forth • Фортран • Gambas • Groovy • Haskell • Icon • Java • JavaScript • Limbo • Lua • MATLAB • Object Pascal • Objective-C • OCaml • Oz • Оберон • Parser • Паскаль • Perl • PHP • PowerBASIC • PureBasic • Python • ПЛ/1 • Пролог • Ruby • Scala • Scheme • Smalltalk • SQL • PL/SQL • Tcl • Vala • Visual Basic • VB.NET |
Академические | |
IEC61131-3 |
Instruction List • ST • FBD • Ladder Diagram • SFC |
Прочие | |
Эзотерические |
ca:Lua cs:Lua da:Lua (programmeringssprog) de:Lua en:Lua (programming language) eo:Lua es:Lua eu:Lua fa:لوا fi:Lua fr:Lua gl:Lua (linguaxe de programación) ia:Lua (linguage de programmation) it:Lua ja:Lua ka:ლუა (პროგრამირების ენა) ko:루아 (프로그래밍 언어) ms:Lua nl:Lua (programmeertaal) pl:Lua pt:Lua (linguagem de programação) sv:Lua uk:Lua vi:Lua zh:Lua
→
Просмотры
Личные инструменты
Served in 2.663 secs.