|
@@ -0,0 +1,90 @@
|
|
|
+# Lua
|
|
|
+
|
|
|
+**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 ключевых слов
|
|
|
+
|
|
|
+Синтаксис языка напоминает **Python** или **JavaScript**, но в отличии от них, выглядит более простым и свободным.
|
|
|
+В языке практически нет строгих правил, поэтому написать одно и тоже действие можно разнообразными способами.
|
|
|
+Пример стандартного Hello World! тремя разными способами:
|
|
|
+
|
|
|
+
|
|
|
+___
|
|
|
+Помимо этого **Lua** позволяет использовать на первый взгляд абсурдное написание кода:
|
|
|
+
|
|
|
+
|
|
|
+___
|
|
|
+### Типы данных
|
|
|
+В языке представлены следующие типы данных:
|
|
|
+1. Boolean - логический тип.
|
|
|
+2. Nil - пустой тип, аналог null.
|
|
|
+3. Number - любое число.
|
|
|
+4. String - строка текста.
|
|
|
+5. Function - функция.
|
|
|
+6. Table - может быть массивом, словарём или некой реализацией класса.
|
|
|
+
|
|
|
+Однако в **Lua** используется динамическая типизация, поэтому нельзя чётко указать тип данных, не считая функций.
|
|
|
+___
|
|
|
+### Пример скрипта
|
|
|
+Рассмотрим пример самого простого алгоритма сортировки, реализованного в **Lua**:
|
|
|
+
|
|
|
+Рассмотрим каждый блок в отдельности:
|
|
|
+``` Lua
|
|
|
+function ShowTable(t)
|
|
|
+ print(table.concat(t, ", "))
|
|
|
+end
|
|
|
+```
|
|
|
+
|
|
|
+Данный блок является очень простым и лишь выводит массив скрепив его в одну строку с помощью ``table.concat()``
|
|
|
+Следующий уже является более интересным:
|
|
|
+
|
|
|
+``` Lua
|
|
|
+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, как это принято обычно.
|
|
|
+
|
|
|
+``` Lua
|
|
|
+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 ""
|
|
|
+```
|
|
|
+
|
|
|
+Ну и само тело скрипта, в котором просто создаётся массив и вызываются функции.
|