Lua

Lua

(Перенаправлено с LUA)
Lua
Логотип Lua.gif
Класс языка:

мультипарадигмальный: скриптовый, императивный, функциональный, объектно-ориентированный (прототипный)

Тип исполнения:

интерпретируемый, JIT

Появился в:

1993 г.

Автор(ы):

Руберту Иерузалимски, Вальдемар Селес, Луис Энрике ди Фигейреду

Последняя версия:

5.1.4 / 22 августа 2008 г.

Типизация данных:

динамическая, слабая ("утиная")

Основные реализации:

Lua, LuaJIT, LLVM-Lua, LuaCLR, Nua, Lua Alchemy и др.[1]

Диалекты:

MetaLua

Испытал влияние:

Scheme, SNOBOL, Modula, CLU, C++

Повлиял на:

Io, GameMonkey, Squirrel, Dao, MiniD

Lua ([лу́а], порт. «луна») — интерпретируемый язык программирования, разработанный подразделением Tecgraf Католического университета Рио-де-Жанейро (Computer Graphics Technology Group of Pontifical Catholic University of Rio de Janeiro in Brazil). Является свободно распространяемым, с открытыми исходными текстами на языке Си.

По возможностям, идеологии и реализации язык ближе всего к JavaScript, однако Lua отличается более мощными и гораздо более гибкими конструкциями, спроектирован с целью «не плодить сущности сверх необходимого». Хотя Lua не содержит понятия класса и объекта в явном виде, механизмы объектно-ориентированного программирования с поддержкой прототипов (включая множественное наследование) легко реализуются с использованием метатаблиц, которые также позволяют перегрузку операций и т. п. Реализуемая модель ООП (как и в JavaScript) — прототипная.

Lua в переводе с португальского значит «луна», поэтому неправильно писать «LUA» одними только прописными символами.

Содержание

[править] История

[править] Некоторые возможности

Подобно таким скриптовым языкам, как Python и Icon, допускает параллельное присваивание. В простейшем случае это позволяет писать выражения вида

 x, y = y, x

Программа «Hello, world» в простейшем случае выглядит так:

 print "Hello, world!"

[править] Типы

Lua представляет собой язык с динамическим определением типов данных. Переменная языка может содержать значения любого типа. Все значения в Lua могут храниться в переменных, использоваться в качестве аргументов при вызове функций и возвращаться в виде результата их выполнения.

В Lua восемь основных типов:

  1. nil (неопределенный)
  2. boolean (логический)
  3. number (числовой)
  4. string (строковый)
  5. function (функция)
  6. userdata (пользовательские данные)
  7. thread (поток)
  8. 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 часто используется между игровым «движком» и данными для написания сценариев поведения/взаимодействия объектов.

[править] Игры

[править] Программное обеспечение

  • Пользовательский интерфейс 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 как язык скриптов для обработки различных данных, а также для обработки процесса записи документа в КПК

[править] Примечания

  1. Lua Implementations (англ.). Lua-users wiki. Проверено 18 мая 2009.

[править] Ссылки

[править] Lua на русском

Источник — «Lua»

<< назад   вперед >>

Look at other dictionaries:

  • Lua (programming language) — Ifobox programmig laguage ame Lua paradigm Multi-paradigm: scriptig, imperative, fuctioal year 1993 desiger Roberto Ierusalimschy Waldemar Celes Luiz Herique de Figueiredo developer latest_release_versio 5.1.4 latest_release_date… (Wikipedia)
  • Lua-o-Milu — I Hawaiia mythology, Lua-o-Milu is the lad of the dead, ruled by Milu. Dead souls eter Lua-o-Milu through a trail called Mahiki. The spirits of the dead ca watch what the livig do ad tur them to stoe by starig at them.…
  • Lua (song) — Sigle ifobox Name Lua Artist Bright Eyes from Album I'm Wide Awake, It's Morig Released October 26, 2004 Format CD Recorded February 2004 Gere Folk music Legth 16:05 Label Saddle Creek LBJ-68 Producer Mike Mogis Chart positio #1 (U.S.…
  • Lua — may refer to: Lua (programmig laguage), a lightweight, extesible programmig laguage Lua (Yu-Gi-Oh! 5D's) Lua (goddess), the Roma goddess Lua (martial art), a traditioal Hawaiia martial art "Lua" (sog), a sigle by the folk rock…
  • Lua (goddess) — In Roman mythology, Lua was a goddess to whom soldiers sacrificed captured weapons. [ [http://homepage.mac.com/dykow/libpagan/l.html liber paganum, part L ] ] References …
  • Lua Player — Ifobox Software ame Lua Player captio Lua Player for PSP developer Frak Buß, Joachim Begtsso ad "IsertWittyName" released ? frequetly_updated yes programmig laguage C++ operatig system PlayStatio Portable laguage ? gere…
  • Marcelinho da lua — Marceliho da Lua is a Brazilia reggae/electroic siger. He released the album Traqüilo i 2003. The album's staple sog, Traqüilo, was part of the playlist for EA sports' FIFA 06 video game. Both Seu Jorge ad Mart'ália participated to…
  • Lua people — ethic group group Lua poptime Ukow popplace Laos, Thailad, Uited States (Califoria) rels Aimism, Shamaism, Theravada Buddhism lags Lao, Ti, Thai, others related The Lua People are a miority cultural group ative to Laos, although…
  • Lua Curtiss House I — Ifobox rhp ame Lua Curtiss House I captio locator_x 239 locator_y 167 locatio Miami Sprigs, Florida area added November 1, 1985 visitatio_um visitatio_year goverig_body The Lua Curtiss House I (also kow as The Alamo) is a historic…
  • Lua Curtiss House II — Ifobox rhp ame Lua Curtiss House II captio locator_x 239 locator_y 167 locatio Miami Sprigs, Florida area added November 1, 1985 visitatio_um visitatio_year goverig_body The Lua Curtiss House II (also kow as the Gregory House) is a…
  • Oscar Lua — Ifobox NFLactive ame Oscar Lua width 170 captio curretteam Free Aget curretumber -- curretpositio Liebacker birthdate birth date ad age 1984 5 9 birthplace Idio, Califoria heightft 6 heighti 0 weight 238 debutyear debutteam…