Lua.md 7.7 KB

Lua

logo
Lua - скриптовый язык программирования, который в основном используется для создания бизнес-логики приложения.
Главная особенность Lua заключается в том, что он может использоваться как в качестве отдельного, так и встроенного скриптового языка. Уже в процессе создания разработчики поставили себе цель – сделать компактный и простой инструмент, который мог бы с легкостью работать в различных исполняющих средах и обеспечивать при этом должный уровень производительности


Помимо этого, Lua разрабатывался с учетом того, чтобы в последующем могли легко выучить его синтаксис и понять особенности. Причем простота языка делает его интересным даже непрофессиональным разработчикам.
Lua относится к языкам программирования ООП. Благодаря встроенным средствам параллельного программирования, разработчики могут создавать многопоточные приложения без обращения к внешним библиотекам или API. При этом, в языке эффективно реализованы возможности межъязыкового взаимодействия.
Где применяется язык Lua? Несмотря на достаточно широкое применение в промышленности, более активно он сегодня используется при разработке компьютерных игр.
Связано это с тем, что Lua позволяет довольно легко запрограммировать поведение так называемых NPC (от англ. Non-playable characters). Также, с помощью этого языка программируются и другие персонажи, поведение которых можно впоследствии быстро менять, не оказывая влияния на движок.


Преимущества и недостатки

Lua обладает следующими преимуществами:

  1. Хорошая переносимость. Например, можно без особых изменений перенести программу из Windows на Linux.
  2. Большое количество библиотек. Несмотря на то, что по этому параметру Lua проигрывает JavaScript, на официальном сайте языка можно найти все необходимые библиотеки для работы, которых более чем достаточно для выполнения различных задач.
  3. Возможность быстрого добавления новых библиотек, написанных на языке С.
  4. Простота синтаксиса и развертывания. Изучение языка не потребует много времени у тех, кто уже занимается программированием. Для новичков этот язык также будет просто в изучении.
  5. Приложения и программы, написанные на Lua потребляют мало памяти.

Что касается недостатков, к ним можно отнести то, что язык является скриптовым. Конечно, его можно использовать и самостоятельно, однако чаще всего он применяется вместе с другими языками программирования, например С. Поэтому для полноценной работы потребуется знание еще одного языка разработки.


Основы

Lua является довольно простым в изучении языком, он имеет всего лишь 22 ключевых слова, для сравнения, в C# зарезервированно 77 ключевых слов
syntax
Синтаксис языка напоминает Python или JavaScript, но в отличии от них, выглядит более простым и свободным.
В языке практически нет строгих правил, поэтому написать одно и тоже действие можно разнообразными способами.
Пример стандартного Hello World! тремя разными способами:
Hello World
output 1


Помимо этого Lua позволяет использовать на первый взгляд абсурдное написание кода:
test print
output 2


Типы данных

В языке представлены следующие типы данных:

  1. Boolean - логический тип.
  2. Nil - пустой тип, аналог null.
  3. Number - любое число.
  4. String - строка текста.
  5. Function - функция.
  6. Table - может быть массивом, словарём или некой реализацией класса.

Однако в Lua используется динамическая типизация, поэтому нельзя чётко указать тип данных, не считая функций.


Пример скрипта

Рассмотрим пример самого простого алгоритма сортировки, реализованного в Lua:
sort
Рассмотрим каждый блок в отдельности:

function ShowTable(t)
	print(table.concat(t, ", "))
end

Данный блок является очень простым и лишь выводит массив скрепив его в одну строку с помощью table.concat()
Следующий уже является более интересным:

function Sort(t)
	for i = 1, #t - 1 do
		for j = i + 1, #t do
			if t[i] > t[j] then
				x = t[i]
				t[i] = t[j]
				t[j] = x
			end
		end
	end
	return t
end

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

  • Для получения размера массива используется символ #. #Переменная
  • Массивы начинаются с 1, а не с 0, как это принято обычно.
print "Table:"
a = {10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0}
ShowTable(a)
print ""

print "After sort:"
a = Sort(a)
ShowTable(a)
print ""

Ну и само тело скрипта, в котором просто создаётся массив и вызываются функции.