Lua - скриптовый язык

Содержание

Слайд 2

ОСНОВНОЕ Lua (лу́а, с порт. — «луна») — скриптовый язык программирования,

ОСНОВНОЕ

Lua (лу́а, с порт. — «луна») — скриптовый язык программирования, разработанный в подразделении Tecgraf (Computer Graphics Technology Group) Католического

университета Рио-де-Жанейро (Бразилия). Интерпретатор языка является свободно распространяемым, с открытыми исходными текстами на языке Си.
Слайд 3

По возможностям, идеологии и реализации язык ближе всего к JavaScript, однако

По возможностям, идеологии и реализации язык ближе всего к JavaScript, однако Lua

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

Язык широко используется для создания тиражируемого программного обеспечения (например, на нём

Язык широко используется для создания тиражируемого программного обеспечения (например, на нём

написан графический интерфейс пакета Adobe Lightroom). Также получил известность как язык программирования уровней и расширений во многих играх (в том числе World of Warcraft и Garry's Mod) из-за удобства встраивания, скорости исполнения кода и лёгкости обучения.
Слайд 5

Lua разработана подразделением Tecgraf (группа технологий компьютерной графики) Католического университета Рио-де-Жанейро

Lua разработана подразделением Tecgraf (группа технологий компьютерной графики) Католического университета Рио-де-Жанейро

в Бразилии, история языка ведёт отсчёт с 1993 года. Авторы языка — Роберто Иерусалимский, Луиш Энрике ди Фигейреду (Luiz Henrique de Figueiredo) и Валдемар Селиш (Waldemar Celes). Lua распространяется свободно, с открытыми исходными текстами на языке Си.
Слайд 6

Историческими родителями Lua были языки конфигурирования и описания данных SOL (Simple

Историческими родителями Lua были языки конфигурирования и описания данных SOL (Simple Object Language)

и DEL (Data-Entry Language). Они были независимо разработаны в Tecgraf в 1992—1993 годах для добавления некоторой гибкости в два отдельных проекта (оба были интерактивными графическими приложениями для конструкторских нужд в компании Petrobras). В SOL и DEL отсутствовали какое-либо управляющие конструкции, и Petrobras чувствовал растущую необходимость в добавлении к ним полноценного программирования.
Слайд 7

Lua 1.0 была спроектирована таким образом, что её конструкторы объектов, тогда

Lua 1.0 была спроектирована таким образом, что её конструкторы объектов, тогда

чуть отличающиеся от текущего лёгкого и гибкого стиля, включали в себя синтаксис языка SOL (отсюда название Lua: по-португальски sol — «солнце», lua — «луна»). Управляющие конструкции Lua в основном заимствованы из Modula (if, while, repeat/until), хотя на них также повлияли CLU(параллельное присваивание, множественное возвращаемое значение функции как более простая альтернатива вместо передачи параметров по ссылке или явных указателей), C++ («отличная идея объявлять локальные переменные лишь тогда, когда они нужны»), SNOBOL и AWK (ассоциативные массивы). Создатели Lua также признают, что единый вездесущий механизм структурирования данных в LISP и Scheme (связный список) оказал большое влияние на их решение о выборе таблиц в качестве основной структуры данных для Lua.
Слайд 8

Версии Lua вплоть до 5.0 выпускались под лицензией, подобной лицензии BSD.

Версии Lua вплоть до 5.0 выпускались под лицензией, подобной лицензии BSD. Начиная

с версии 5.0 и выше Lua распространяется под лицензией MIT. Обе лицензии являются пермиссивными и практически идентичны.
Слайд 9

Lua обычно называют мультипарадигменным языком. Он обеспечивает небольшой набор базовых механизмов,

Lua обычно называют мультипарадигменным языком. Он обеспечивает небольшой набор базовых механизмов, которые

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

Lua — это динамически типизированный язык, предназначенный для использования в качестве

Lua — это динамически типизированный язык, предназначенный для использования в качестве расширения или в

качестве скриптового языка, и при этом достаточно компактный, чтобы поместиться на различных исполняющих платформах. Он поддерживает небольшое количество структур данных, такие как логические значения, числа (по умолчанию — двойной точности с плавающей точкой), а также строки. Типичные структуры данных, такие как массивы, наборы, списки и записи, могут быть представлены с использованием родной структуры данных Lua — таблицы, которая по существу является гетерогенным ассоциативным массивом.
Слайд 11

Lua реализует небольшой набор дополнительных функций, такие как сборщик мусора, принудительное

Lua реализует небольшой набор дополнительных функций, такие как сборщик мусора, принудительное

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

В LUA ВОСЕМЬ ОСНОВНЫХ ТИПОВ ДАННЫХ: nil (неопределенный) boolean (логический) number

В LUA ВОСЕМЬ ОСНОВНЫХ ТИПОВ ДАННЫХ:

nil (неопределенный)
boolean (логический)
number (числовой, с версии

5.3 добавлена возможность явного определения целого или вещественного формата числа)
string (строковый)
function (функция)
userdata (пользовательские данные)
thread (поток)
table (таблица)
Слайд 13

ПРИМЕРЫ ПРОГРАММ print(“Hello Word”); -- Однострочный комментарий --[[Многострочный Комментарий]]

ПРИМЕРЫ ПРОГРАММ

print(“Hello Word”);
-- Однострочный комментарий
--[[Многострочный
Комментарий]]

Слайд 14

ВЕТВЛЕНИЕ+ВЫЧИСЛЕНИЕ ФАКТОРИАЛА

ВЕТВЛЕНИЕ+ВЫЧИСЛЕНИЕ ФАКТОРИАЛА

Слайд 15

ЦИКЛ СО СЧЕТЧИКОМ

ЦИКЛ СО СЧЕТЧИКОМ

Слайд 16

Как и многие интерпретируемые языки программирования, реализация Lua имеет отдельно компилятор

Как и многие интерпретируемые языки программирования, реализация Lua имеет отдельно компилятор с исходного языка в исполняемый байт-код и виртуальную

машину для исполнения сгенерированного байт-кода. Причём байт-код — это не команды стековой машины, а команды некоего виртуального процессора с несколькими регистрами, что повышает эффективность исполнения. В стандартной виртуальной машине Lua используется распределение памяти со сборкой мусора (аналогично Java или .NET).
Lua использует единый строковый пул, что позволяет снизить расходы памяти на хранение строк.
Слайд 17

СУДЬБА ЯЗЫКА В настоящее время используется в различных проектах, где требуется

СУДЬБА ЯЗЫКА

В настоящее время используется в различных проектах, где требуется встроить

достаточно быстрый и нетрудный в освоении скриптовый язык программирования — например, в разработке игр, где Lua часто используется в качестве прослойки между игровым движком и данными для написания сценариев поведения/взаимодействия объектов.
Слайд 18

Первыми в разработку компьютерных игр язык Lua внедрила компания LucasArts, начиная

Первыми в разработку компьютерных игр язык Lua внедрила компания LucasArts, начиная с игры Grim Fandango. 
В

2003 году в результате опроса на сайте GameDev.net Lua был признан самым популярным скриптовым языком для разработки игр.
Также используется в авиасимуляторе X-Plane, в движке X-Ray для S.T.A.L.K.E.R.
Для популярной игры Minecraft созданы модификации ComputerCraft и его более совершенный аналог OpenComputers, которые добавляют компьютеры, программируемые на языке Lua.
Зарубежная команда Croteam (разработчики Serious Sam и The Talos Principle) используют Lua в скриптах начиная с версии Serious Engine 3.5.