Программирование предусматривает разнообразные языки. Все они в той или иной степени имеют преимущества и недостатки, используются для конкретных целей. Многие слышали о LUA. Эта статья как раз и будет посвящена этому языку программирования.
Язык программирования – это…
Язык программирования – некий перечень формальных правил и принципов, используемых при написании контентна. Общий язык помогает коммуникации людей, а упомянутый термин относится к устройствам и программному обеспечению.
Язык программирования – способ «общения»:
- пользователя с компьютером;
- устройств друг с другом;
- программного обеспечения между собой;
- устройств с утилитами.
В зависимости от выбранного варианта можно весьма легко создавать программы, приложения, игры и даже писать веб-страницы.
Луа – язык программирования, в основе которого лежат скрипты. Называется скриптовым. Используется для того, чтобы создавать бизнес-логику утилит.
Относится к мультипарадигменным. Lua обладает неплохой поддержкой декларативного стиля создания программного обеспечения. Написан на C. Язык был представлен миру в 1993 году в качестве самостоятельной разработки.
Немного истории
LUA изначально разработан Роберто Иерусалимши, Вальдемаром Селесом и Луисом Энрике. Изначально «средство» было представлено программным обеспечением, интегрируемым кодификациями на C и иных «традиционных» языках. За счет этого разработчики могли значительно ускорить процесс создания собственных утилит.
Прародителями LUA считаются SOL и DEL. С самых первых дней обладал открытый исходный код. Это значит, что в развитии оного имеет право поучаствовать каждый желающий. Выделился тем, что основан в Бразилии, которая на рынке IT-разработок практически не фигурировала.
Текущая версия языка – 5.4.0. Вышло во второй половине 2020 года. Активно используется в IT-областях и бизнесе.
Преимущества и недостатки
У языка LUA есть сильные и слабые стороны. Изучить оные необходимо перед тем, как приступать к обучению соответствующему способу «общения» с ПО и устройствами.
О сильных сторонах
Плюсы LUA:
- Портатируемость. Утилиты, написанные на Луа, неплохо переносятся с Windows на Linux и другие операционные системы.
- Количество библиотек. Их очень много. Большинство представлены на официальном сайте LUA. Предлагаемые библиотеки подходят для решения основной массы задач, стоящих перед пользователями.
- Право на добавление собственных библиотек. Достигается за счет открытого исходного кода. Добавляемые библиотеки должны быть разработаны на C.
- Синтаксис. LUA – простой язык, который читается без каких-либо проблем. Осваивается быстро даже новичками в IT-области.
- Адаптивность. Программное обеспечение, написанное на Луа, занимает меньше памяти на задействованных устройствах.
Это – компактный мультиплатформенный язык, который легко «настроить под себя».
О слабых сторонах
Но, как и любой другой язык, LUA имеет некоторые изъяны:
- Выступает в качестве скриптового. Это значит, что часто применяется совместно с другими языками.
- Для полноценного применения разработчику необходимо знать дополнительно 2-3 programming languages.
- Не всегда быстро работает.
Профессионалы раньше считали, что данный вариант подходит лишь для мелких проектов. Частично данное заверение правильно. Связано это с тем, что LUA относится к модульным языкам. Но посредством их сочетания нередко удается добиться колоссальных результатов.
Перспективы
Сейчас на передовой линии находится разработка игр. Луа для этих целей – не лучшее решение. Индекс Tiobe показывает, что данный вариант находится на позиции под номером 30.
Соответствующее явление связано с тем, что language обычно применяется в сочетании с другими «способами общения» и создания ПО. Луа задействуют преимущественно для того, чтобы решать отдельные задачи. Только через него создать хорошую игру не получится.
При трудоустройстве LUA-разработчики нередко сталкиваются с проблемами. Лишь некоторые компании действительно набирают таких работников. В подобных местах возможна конкуренция.
В качестве основного LUA использовать не рекомендуется. Он может быть изучен в виде дополнительного, на первых порах осваивания программирования. Особенно, если хочется заниматься игровой разработкой.
Как можно использовать
Вот несколько направлений, в которых иногда пригодится Луа:
- разработка игрового контента;
- создание сценариев для автономного программного обеспечения;
- интернет-сценарии;
- расширения и дополнительных софт БД;
- создание систем безопасности.
Разработка обычно требует применения одного или нескольких иных языков программирования. Иначе контент окажется не слишком функциональным.
Окружающая среда
Весь процесс написания исходного кода осуществляется в разнообразных средах. Этому моменту требуется уделить должное внимание, иначе наладить работу не получится.
Локальная
Чтобы провести настройку локальной среды, требуется обеспечить наличие на задействованном устройстве:
- текстового редактора;
- компилятор;
- интерпретатор.
Далее все перечисленные компоненты будут рассмотрены более подробно. Информация предназначена преимущественно для новичков.
Редактор текста
Он требуется для того, чтобы осуществлять запись программного кода утилиты. Воспользоваться можно любым известным текстовым редактором. Примеры:
- «Блокнот» в Windows;
- команда «Редактирование операционной системы»;
- VIM;
- Epsilon.
Версия и имя редактора способны отличаться друг от друга в зависимости от операционной системы.
Создаваемые здесь документы – исходные файлы, содержащие непосредственный код приложения. Для рассматриваемого «способа общения» актуально расширение .lua.
Немного об интерпретаторе
Интерпретатор – программное обеспечение небольшого размера, которое позволит набирать команды Lua и сразу же выполнять. Помогает останавливать выполнение файла при обнаружении ошибок.
Подойдет любой доступный интерпретатор Луа.
А что там с компиляторами
Компилятор – специализированное программное обеспечение. Его знают все программисты и разработчики. Так называются утилиты, которые обрабатывают исходный код и преобразовывают его в машинный.
Компиляция позволяет исполнить имеющуюся кодификацию, проверить ее работоспособность и наличие ошибок. Для работы с Луа и его дальнейшим внедрением в другой язык программирования потребуется компилятор, совместимый с интерфейсами оных.
Для Windows
Для того, чтобы работать с Луа в Windows, был создан специальный компилятор – SciTE. Чтобы его «поставить» в Виндовс, потребуется выполнить следующие манипуляции:
- Открыть официальный сайт SciTE.
- Переключиться в раздел загрузки.
- Выбрать желаемый файл и его версию.
- Дождаться завершения операции.
- Активировать исполняемый файл.
- Завершить манипуляции, следуя подсказкам на экране.
В ходе описанных действий пользователь получит LUA IDE. Действия можно проводить через командную строчку. Тогда предварительно осуществляется инициализация MinGW. Там происходит компиляция и установка для Windows.
Для Linux
Linux – операционная система, которая стала пользоваться в последние годы определенным спросом. Хороший бесплатный конкурент коммерческим операционным системам. Но работать с ней «рядовому» пользователю бывает трудно.
Для сбора LUA потребуется открыть командную строку Линукс и выполнить следующую кодификацию:
Теперь все готово к полноценной работе. Но это еще не все, о чем рекомендуется знать каждому разработчику.
Для MacOS
У компании Apple есть собственная компьютерная операционная система, которая имеет ряд особенностей. Но в ней тоже можно программировать на различных языках. Главное грамотно осуществить подготовку.
Компилятор Луа здесь собирается при помощи команды такого типа:
Последняя строчка не является обязательной. Пользователь при помощи нее сможет провести тестирование «среды».
IDE
Для Windows SciTE IDE Lua является IDE изначально предусмотренной разработчиками «способа общения». Для других платформ можно использовать альтернативное программное обеспечение от ZeroBrane Studio.
Без установки
Изучение рассматриваемого варианта создания контента – это рассмотрение основных его особенностей и функций. Компилятор здесь стоит далеко не на самом последнем месте.
Если требуется проверить работу небольшой программы, можно не задумываться над установкой компилятора. Подобное ПО находится в свободном доступе в Сети.
Пример — этот и этот сайты. Здесь можно программировать и проверять имеющиеся кодификации в режиме реального времени. Отличительной чертой такого подхода является его компактность и кроссплатформенность.
Синтаксис
Для того, чтобы программировать на LUA, важно изучить его синтаксис. Возможна работа в нескольких режимах:
- интерактивном;
- по умолчанию.
Записывать текст допустимо в свободном формате. Команды предусматривают разделение пробелом. Иногда для реализации поставленной задачи ставят точку с запятой (символ).
Лексика
Обучение рассматриваемому языку программирования не доставит существенных хлопот ни новичкам, ни опытным разработчикам. Связано это с тем, что его авторы постарались сделать свое детище универсальным.
Рассматривая лексику, стоит запомнить следующие данные:
- Основной алфавит – это английский язык. Люди, хорошо его знающие, быстрее остальных разберутся в командах.
- Строковые литералы могут использовать символы из иных ЯП.
- Идентификаторы включают в себя: буквы, цифры, подчеркивание. Не могут начинаться с цифр.
- Нельзя в качестве идентификатора использовать вариант ключевого слова.
- Программеры рекомендуют отказаться от идентификаторов, начинающихся с подчеркивания.
Последний момент обоснован тем, что подобные «нестандартные» символы применяются на практике для системных задач.
Выше приведены слова, которые не применяются в процессе присваивания имен.
Типы данных
Язык, который мы изучаем — вариант с неявным динамическим обозначением типов информации. Переменная будет содержать значение того или иного вида. Значение выступает в роли аргумента, если осуществляется вызов функции. После этого оные отправляются на исходные позиции в виде результата.
Предусматриваются следующие типы данных:
- Булево. Boolean. Это – истина и ложь.
- Nil – постой элемент. Указывает на отсутствие пригодного значения.
- Число. Number. Это тип данных, представленный теми или иными числами. В основном вещественными.
- Строка – string. Используется для того, чтобы описать символьные массивы. Преимущественно применяются 8-битные символы. Строки являются константами – они не меняются ни при каких обстоятельствах. Функции – полноправные объекты, позволяющие присваивать и передавать в параметрах интересующую информацию.
- Thread. Тип, предусматривающий сопрограммы.
- Userdata. Требуется для получения внешних сведений, полученных из других programming language.
Углубленное изучение можно провести позже. В качестве «базы» предложенные сведения являются достаточными.
Присваивание
В качестве оператора присваивания выступает символ «равно». Здесь допускается параллельное присваивание, как и в иных ЯП. Можно составлять выражения типа:
a, b = b, a.
Не нужно обеспечивать полное соответствие числа переменных количеству имеющихся значений. А значить, пользоваться оператором присваивания будет проще, чем в аналогичных languages.
Табличные дела
Таблицы – это динамические ассоциативные массивы. Представлены парами «ключ-значение» в больших объемах. Единственный составной тип информации. Лежат в основе всех пользовательских БД.
Может наблюдаться следующее:
- Ключи представлены литералами.
- В виде ключа допускается применение любого значения, исключая nil.
- Если nil записывается в элементы, манипуляция будет рассматриваться в качестве удаления соответствующего объекта.
- Создание – как и массивы, но в виде значений принимаются целые числа компонентов в множестве.
- Списки – это массивы двухэлементных массивов, хранящий значения и ссылки на иные компоненты.
Также стоит обратить внимание на то, что при многомерных массивах чаще всего встречается реализация по типу «массив массивов». Многогранные и сложные составляющие реализовываются посредством таблиц. Как именно – зависит от поставленной перед разработчиком задачи.
Метатаблицы
Помогают в реализации большинства языков опций. Если выучить принципы работы с метатаблицами, удастся значительно упростить реализацию тех или иных задач.
Важно запомнить следующее:
- Метатаблица своими свойствами напоминает обычную таблицу с возможностью соответствия всем правилам и нормам.
- Отвечает за хранение разнообразных метаданных типов и объектов. Здесь хранятся сведения, связанные с опциями и параметрами типов/объектов ЯП.
- Используемые материалы могут применяться через интерпретатор, расширяя функциональные возможности ПО.
- Может быть связана со значениями любого типа.
- Допускается применение всех метаметодов для арифметических манипуляций.
Рассматриваемый ЯП позволяет организовывать реализацию арифметики любых имеющихся объектов. Для этого осуществляется работа со стандартными и библиотечными метаметодами (через специальные библиотеки).
Особенности реализации
Изучение любого ЯП – это обучение базовым навыкам и принципам работы выбранного варианта. При должной подготовке и на начальных порах все это не доставит никаких существенных хлопот. Главное значить, с чего начинать.
Реализация Луа предусматривает:
- компилятор исходного кода (может быть запущен в режиме онлайн);
- виртуальную машину.
Обработка кода происходит так:
- Пользователь пишет кодификацию.
- Происходит обработка оной компилятором и преобразование в байт-коды.
- Виртуальная машина запускает байт-коды.
- Последние не выступают в виде команды сетевой машины – они рассматриваются как команды виртуального процессора с разнообразными регистрами.
Классическая ВМ предусматривает распределение памяти задействованного устройства совместно со сборкой ненужной информации. Здесь имеет место единый строковый пул, который снижает требования к расходу памяти, необходимой для хранения строчек.
Если есть ошибки
Выучить язык программирования LUA – это не значит, что кодификации будут функционировать без ошибок. Корректировки иногда необходимы даже контенту от опытных разработчиков. Главное вовремя обнаружить проблемное место и внести те или иные изменения.
Если при обработке программной кодификации в процессе компиляции обнаруживается ошибка (или если исполняется ее часть), система передаст управление хосту. Последний сможет увидеть ошибку и предпринять определенные меры. Пример – сообщить об обнаруженной неполадке.
Как получить образование и лучше разбираться в ЯП
Выучить ЯП можно несколькими способами. Все зависит от того, чего именно хочет добиться пользователь:
- Обращение в ВУЗ. Вариант для тех, кто выпустился из школы и хочет полноценно работать программистом. Отнимает много средств, времени и сил. По выпуску выдается диплом государственного образца. Здесь затрагиваются самые известные ЯП.
- Поступление в техникум. Отличное начало для старта в мире разработки. Обучение длиться меньше, чем в ВУЗе. По выпуску студент получит диплом о среднем профессиональном образовании. Этот документ поможет при поступлении в ВУЗ. Здесь достаточно много практики, но большинство ЯП не затрагиваются.
- Самообразование. Никаких документов, подтверждающих знания, не будет. Человек полностью самостоятельно старается познать ЯП. Зато такой подход может не требовать вообще никаких вложений – в Сети полно необходимой информации и туториалов. Часто самообразование используется людьми с хорошим самоконтролем. Позволяет больше практиковаться и полностью собственными силами контролировать процедуру обучения.
Но самым современным, простым и эффективным вариантом является обучение на специализированных курсах для новичков и продвинутых разработчиков. Там объяснят, что такое for i, как работать с компиляторами и многое другое. Обучение длится до года. В конце выдается электронный сертификат.
Хотите освоить современную IT-специальность? Огромный выбор курсов по востребованным IT-направлениям есть в Otus!
<!DOCTYPE html>
<html dir="ltr" lang="ru-RU">
<head>
<meta charset="UTF-8" />
<meta http-equiv="x-ua-compatible" content="ie=edge" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<link rel="profile" href="http://gmpg.org/xfn/11" />
<title>Знакомство с LUA и его компилятором: что должен знать программист OTUS</title>
<!-- All in One SEO 4.5.2.1 - aioseo.com -->
<meta name="description" content="Программирование предусматривает разнообразные языки. Все они в той или иной степени имеют преимущества и недостатки, используются для конкретных целей. Многие слышали о LUA. Эта статья как раз и будет посвящена этому языку программирования. Язык программирования – это… Язык программирования – некий перечень формальных правил и принципов, используемых при написании контентна. Общий язык помогает коммуникации людей," />
<meta name="robots" content="max-image-preview:large" />
<link rel="canonical" href="https://otus.ru/journal/znakomstvo-s-lua-i-ego-kompilyatorom-chto-dolzhen-znat-programmist/" />
<meta name="generator" content="All in One SEO (AIOSEO) 4.5.2.1" />
<script type="application/ld+json" class="aioseo-schema">
{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/otus.ru\/journal\/znakomstvo-s-lua-i-ego-kompilyatorom-chto-dolzhen-znat-programmist\/#article","name":"\u0417\u043d\u0430\u043a\u043e\u043c\u0441\u0442\u0432\u043e \u0441 LUA \u0438 \u0435\u0433\u043e \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440\u043e\u043c: \u0447\u0442\u043e \u0434\u043e\u043b\u0436\u0435\u043d \u0437\u043d\u0430\u0442\u044c \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0441\u0442 OTUS","headline":"\u0417\u043d\u0430\u043a\u043e\u043c\u0441\u0442\u0432\u043e \u0441 LUA \u0438 \u0435\u0433\u043e \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440\u043e\u043c: \u0447\u0442\u043e \u0434\u043e\u043b\u0436\u0435\u043d \u0437\u043d\u0430\u0442\u044c \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0441\u0442","author":{"@id":"https:\/\/otus.ru\/journal\/author\/a-pavlenko\/#author"},"publisher":{"@id":"https:\/\/otus.ru\/journal\/#organization"},"image":{"@type":"ImageObject","url":"https:\/\/otus.ru\/journal\/wp-content\/uploads\/2022\/02\/oj-1080x720-10.png","width":1080,"height":720},"datePublished":"2022-02-04T18:24:21+00:00","dateModified":"2022-02-04T18:24:23+00:00","inLanguage":"ru-RU","mainEntityOfPage":{"@id":"https:\/\/otus.ru\/journal\/znakomstvo-s-lua-i-ego-kompilyatorom-chto-dolzhen-znat-programmist\/#webpage"},"isPartOf":{"@id":"https:\/\/otus.ru\/journal\/znakomstvo-s-lua-i-ego-kompilyatorom-chto-dolzhen-znat-programmist\/#webpage"},"articleSection":"\u041f\u043e\u043b\u0435\u0437\u043d\u043e\u0435, LUA"},{"@type":"BreadcrumbList","@id":"https:\/\/otus.ru\/journal\/znakomstvo-s-lua-i-ego-kompilyatorom-chto-dolzhen-znat-programmist\/#breadcrumblist","itemListElement":[{"@type":"ListItem","@id":"https:\/\/otus.ru\/journal\/#listItem","position":1,"name":"\u0413\u043b\u0430\u0432\u043d\u0430\u044f \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430","item":"https:\/\/otus.ru\/journal\/","nextItem":"https:\/\/otus.ru\/journal\/znakomstvo-s-lua-i-ego-kompilyatorom-chto-dolzhen-znat-programmist\/#listItem"},{"@type":"ListItem","@id":"https:\/\/otus.ru\/journal\/znakomstvo-s-lua-i-ego-kompilyatorom-chto-dolzhen-znat-programmist\/#listItem","position":2,"name":"\u0417\u043d\u0430\u043a\u043e\u043c\u0441\u0442\u0432\u043e \u0441 LUA \u0438 \u0435\u0433\u043e \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440\u043e\u043c: \u0447\u0442\u043e \u0434\u043e\u043b\u0436\u0435\u043d \u0437\u043d\u0430\u0442\u044c \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0441\u0442","previousItem":"https:\/\/otus.ru\/journal\/#listItem"}]},{"@type":"Organization","@id":"https:\/\/otus.ru\/journal\/#organization","name":"\u041e\u0442\u0443\u0441 \u043e\u043d\u043b\u0430\u0439\u043d-\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u0435","url":"https:\/\/otus.ru\/journal\/","sameAs":["https:\/\/www.youtube.com\/channel\/UCetgtvy93o3i3CvyGXKFU3g"],"contactPoint":{"@type":"ContactPoint","telephone":"+74999389202","contactType":"Customer Support"}},{"@type":"Person","@id":"https:\/\/otus.ru\/journal\/author\/a-pavlenko\/#author","url":"https:\/\/otus.ru\/journal\/author\/a-pavlenko\/","name":"A. Pavlenko","image":{"@type":"ImageObject","@id":"https:\/\/otus.ru\/journal\/znakomstvo-s-lua-i-ego-kompilyatorom-chto-dolzhen-znat-programmist\/#authorImage","url":"https:\/\/secure.gravatar.com\/avatar\/d4c499a104d7c2522fa41f89e6819499?s=96&d=mm&r=g","width":96,"height":96,"caption":"A. Pavlenko"}},{"@type":"WebPage","@id":"https:\/\/otus.ru\/journal\/znakomstvo-s-lua-i-ego-kompilyatorom-chto-dolzhen-znat-programmist\/#webpage","url":"https:\/\/otus.ru\/journal\/znakomstvo-s-lua-i-ego-kompilyatorom-chto-dolzhen-znat-programmist\/","name":"\u0417\u043d\u0430\u043a\u043e\u043c\u0441\u0442\u0432\u043e \u0441 LUA \u0438 \u0435\u0433\u043e \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440\u043e\u043c: \u0447\u0442\u043e \u0434\u043e\u043b\u0436\u0435\u043d \u0437\u043d\u0430\u0442\u044c \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0441\u0442 OTUS","description":"\u041f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u043f\u0440\u0435\u0434\u0443\u0441\u043c\u0430\u0442\u0440\u0438\u0432\u0430\u0435\u0442 \u0440\u0430\u0437\u043d\u043e\u043e\u0431\u0440\u0430\u0437\u043d\u044b\u0435 \u044f\u0437\u044b\u043a\u0438. \u0412\u0441\u0435 \u043e\u043d\u0438 \u0432 \u0442\u043e\u0439 \u0438\u043b\u0438 \u0438\u043d\u043e\u0439 \u0441\u0442\u0435\u043f\u0435\u043d\u0438 \u0438\u043c\u0435\u044e\u0442 \u043f\u0440\u0435\u0438\u043c\u0443\u0449\u0435\u0441\u0442\u0432\u0430 \u0438 \u043d\u0435\u0434\u043e\u0441\u0442\u0430\u0442\u043a\u0438, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442\u0441\u044f \u0434\u043b\u044f \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u044b\u0445 \u0446\u0435\u043b\u0435\u0439. \u041c\u043d\u043e\u0433\u0438\u0435 \u0441\u043b\u044b\u0448\u0430\u043b\u0438 \u043e LUA. \u042d\u0442\u0430 \u0441\u0442\u0430\u0442\u044c\u044f \u043a\u0430\u043a \u0440\u0430\u0437 \u0438 \u0431\u0443\u0434\u0435\u0442 \u043f\u043e\u0441\u0432\u044f\u0449\u0435\u043d\u0430 \u044d\u0442\u043e\u043c\u0443 \u044f\u0437\u044b\u043a\u0443 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f. \u042f\u0437\u044b\u043a \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u2013 \u044d\u0442\u043e\u2026 \u042f\u0437\u044b\u043a \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u2013 \u043d\u0435\u043a\u0438\u0439 \u043f\u0435\u0440\u0435\u0447\u0435\u043d\u044c \u0444\u043e\u0440\u043c\u0430\u043b\u044c\u043d\u044b\u0445 \u043f\u0440\u0430\u0432\u0438\u043b \u0438 \u043f\u0440\u0438\u043d\u0446\u0438\u043f\u043e\u0432, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u044b\u0445 \u043f\u0440\u0438 \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0438\u0438 \u043a\u043e\u043d\u0442\u0435\u043d\u0442\u043d\u0430. \u041e\u0431\u0449\u0438\u0439 \u044f\u0437\u044b\u043a \u043f\u043e\u043c\u043e\u0433\u0430\u0435\u0442 \u043a\u043e\u043c\u043c\u0443\u043d\u0438\u043a\u0430\u0446\u0438\u0438 \u043b\u044e\u0434\u0435\u0439,","inLanguage":"ru-RU","isPartOf":{"@id":"https:\/\/otus.ru\/journal\/#website"},"breadcrumb":{"@id":"https:\/\/otus.ru\/journal\/znakomstvo-s-lua-i-ego-kompilyatorom-chto-dolzhen-znat-programmist\/#breadcrumblist"},"author":{"@id":"https:\/\/otus.ru\/journal\/author\/a-pavlenko\/#author"},"creator":{"@id":"https:\/\/otus.ru\/journal\/author\/a-pavlenko\/#author"},"image":{"@type":"ImageObject","url":"https:\/\/otus.ru\/journal\/wp-content\/uploads\/2022\/02\/oj-1080x720-10.png","@id":"https:\/\/otus.ru\/journal\/znakomstvo-s-lua-i-ego-kompilyatorom-chto-dolzhen-znat-programmist\/#mainImage","width":1080,"height":720},"primaryImageOfPage":{"@id":"https:\/\/otus.ru\/journal\/znakomstvo-s-lua-i-ego-kompilyatorom-chto-dolzhen-znat-programmist\/#mainImage"},"datePublished":"2022-02-04T18:24:21+00:00","dateModified":"2022-02-04T18:24:23+00:00"},{"@type":"WebSite","@id":"https:\/\/otus.ru\/journal\/#website","url":"https:\/\/otus.ru\/journal\/","name":"OTUS JOURNAL","description":"Blog about IT","inLanguage":"ru-RU","publisher":{"@id":"https:\/\/otus.ru\/journal\/#organization"}}]}
</script>
<!-- All in One SEO -->
<link rel='dns-prefetch' href='//otus.ru' />
<link rel='dns-prefetch' href='//fonts.googleapis.com' />
<link rel='stylesheet' id='wp-block-library-css' href='https://otus.ru/journal/wp-includes/css/dist/block-library/style.min.css?ver=6.4.7' type='text/css' media='all' />
<style id='classic-theme-styles-inline-css' type='text/css'>
/*! This file is auto-generated */
.wp-block-button__link{color:#fff;background-color:#32373c;border-radius:9999px;box-shadow:none;text-decoration:none;padding:calc(.667em + 2px) calc(1.333em + 2px);font-size:1.125em}.wp-block-file__button{background:#32373c;color:#fff;text-decoration:none}
</style>
<style id='global-styles-inline-css' type='text/css'>
body{--wp--preset--color--black: #000000;--wp--preset--color--cyan-bluish-gray: #abb8c3;--wp--preset--color--white: #ffffff;--wp--preset--color--pale-pink: #f78da7;--wp--preset--color--vivid-red: #cf2e2e;--wp--preset--color--luminous-vivid-orange: #ff6900;--wp--preset--color--luminous-vivid-amber: #fcb900;--wp--preset--color--light-green-cyan: #7bdcb5;--wp--preset--color--vivid-green-cyan: #00d084;--wp--preset--color--pale-cyan-blue: #8ed1fc;--wp--preset--color--vivid-cyan-blue: #0693e3;--wp--preset--color--vivid-purple: #9b51e0;--wp--preset--gradient--vivid-cyan-blue-to-vivid-purple: linear-gradient(135deg,rgba(6,147,227,1) 0%,rgb(155,81,224) 100%);--wp--preset--gradient--light-green-cyan-to-vivid-green-cyan: linear-gradient(135deg,rgb(122,220,180) 0%,rgb(0,208,130) 100%);--wp--preset--gradient--luminous-vivid-amber-to-luminous-vivid-orange: linear-gradient(135deg,rgba(252,185,0,1) 0%,rgba(255,105,0,1) 100%);--wp--preset--gradient--luminous-vivid-orange-to-vivid-red: linear-gradient(135deg,rgba(255,105,0,1) 0%,rgb(207,46,46) 100%);--wp--preset--gradient--very-light-gray-to-cyan-bluish-gray: linear-gradient(135deg,rgb(238,238,238) 0%,rgb(169,184,195) 100%);--wp--preset--gradient--cool-to-warm-spectrum: linear-gradient(135deg,rgb(74,234,220) 0%,rgb(151,120,209) 20%,rgb(207,42,186) 40%,rgb(238,44,130) 60%,rgb(251,105,98) 80%,rgb(254,248,76) 100%);--wp--preset--gradient--blush-light-purple: linear-gradient(135deg,rgb(255,206,236) 0%,rgb(152,150,240) 100%);--wp--preset--gradient--blush-bordeaux: linear-gradient(135deg,rgb(254,205,165) 0%,rgb(254,45,45) 50%,rgb(107,0,62) 100%);--wp--preset--gradient--luminous-dusk: linear-gradient(135deg,rgb(255,203,112) 0%,rgb(199,81,192) 50%,rgb(65,88,208) 100%);--wp--preset--gradient--pale-ocean: linear-gradient(135deg,rgb(255,245,203) 0%,rgb(182,227,212) 50%,rgb(51,167,181) 100%);--wp--preset--gradient--electric-grass: linear-gradient(135deg,rgb(202,248,128) 0%,rgb(113,206,126) 100%);--wp--preset--gradient--midnight: linear-gradient(135deg,rgb(2,3,129) 0%,rgb(40,116,252) 100%);--wp--preset--font-size--small: 13px;--wp--preset--font-size--medium: 20px;--wp--preset--font-size--large: 36px;--wp--preset--font-size--x-large: 42px;--wp--preset--spacing--20: 0.44rem;--wp--preset--spacing--30: 0.67rem;--wp--preset--spacing--40: 1rem;--wp--preset--spacing--50: 1.5rem;--wp--preset--spacing--60: 2.25rem;--wp--preset--spacing--70: 3.38rem;--wp--preset--spacing--80: 5.06rem;--wp--preset--shadow--natural: 6px 6px 9px rgba(0, 0, 0, 0.2);--wp--preset--shadow--deep: 12px 12px 50px rgba(0, 0, 0, 0.4);--wp--preset--shadow--sharp: 6px 6px 0px rgba(0, 0, 0, 0.2);--wp--preset--shadow--outlined: 6px 6px 0px -3px rgba(255, 255, 255, 1), 6px 6px rgba(0, 0, 0, 1);--wp--preset--shadow--crisp: 6px 6px 0px rgba(0, 0, 0, 1);}:where(.is-layout-flex){gap: 0.5em;}:where(.is-layout-grid){gap: 0.5em;}body .is-layout-flow > .alignleft{float: left;margin-inline-start: 0;margin-inline-end: 2em;}body .is-layout-flow > .alignright{float: right;margin-inline-start: 2em;margin-inline-end: 0;}body .is-layout-flow > .aligncenter{margin-left: auto !important;margin-right: auto !important;}body .is-layout-constrained > .alignleft{float: left;margin-inline-start: 0;margin-inline-end: 2em;}body .is-layout-constrained > .alignright{float: right;margin-inline-start: 2em;margin-inline-end: 0;}body .is-layout-constrained > .aligncenter{margin-left: auto !important;margin-right: auto !important;}body .is-layout-constrained > :where(:not(.alignleft):not(.alignright):not(.alignfull)){max-width: var(--wp--style--global--content-size);margin-left: auto !important;margin-right: auto !important;}body .is-layout-constrained > .alignwide{max-width: var(--wp--style--global--wide-size);}body .is-layout-flex{display: flex;}body .is-layout-flex{flex-wrap: wrap;align-items: center;}body .is-layout-flex > *{margin: 0;}body .is-layout-grid{display: grid;}body .is-layout-grid > *{margin: 0;}:where(.wp-block-columns.is-layout-flex){gap: 2em;}:where(.wp-block-columns.is-layout-grid){gap: 2em;}:where(.wp-block-post-template.is-layout-flex){gap: 1.25em;}:where(.wp-block-post-template.is-layout-grid){gap: 1.25em;}.has-black-color{color: var(--wp--preset--color--black) !important;}.has-cyan-bluish-gray-color{color: var(--wp--preset--color--cyan-bluish-gray) !important;}.has-white-color{color: var(--wp--preset--color--white) !important;}.has-pale-pink-color{color: var(--wp--preset--color--pale-pink) !important;}.has-vivid-red-color{color: var(--wp--preset--color--vivid-red) !important;}.has-luminous-vivid-orange-color{color: var(--wp--preset--color--luminous-vivid-orange) !important;}.has-luminous-vivid-amber-color{color: var(--wp--preset--color--luminous-vivid-amber) !important;}.has-light-green-cyan-color{color: var(--wp--preset--color--light-green-cyan) !important;}.has-vivid-green-cyan-color{color: var(--wp--preset--color--vivid-green-cyan) !important;}.has-pale-cyan-blue-color{color: var(--wp--preset--color--pale-cyan-blue) !important;}.has-vivid-cyan-blue-color{color: var(--wp--preset--color--vivid-cyan-blue) !important;}.has-vivid-purple-color{color: var(--wp--preset--color--vivid-purple) !important;}.has-black-background-color{background-color: var(--wp--preset--color--black) !important;}.has-cyan-bluish-gray-background-color{background-color: var(--wp--preset--color--cyan-bluish-gray) !important;}.has-white-background-color{background-color: var(--wp--preset--color--white) !important;}.has-pale-pink-background-color{background-color: var(--wp--preset--color--pale-pink) !important;}.has-vivid-red-background-color{background-color: var(--wp--preset--color--vivid-red) !important;}.has-luminous-vivid-orange-background-color{background-color: var(--wp--preset--color--luminous-vivid-orange) !important;}.has-luminous-vivid-amber-background-color{background-color: var(--wp--preset--color--luminous-vivid-amber) !important;}.has-light-green-cyan-background-color{background-color: var(--wp--preset--color--light-green-cyan) !important;}.has-vivid-green-cyan-background-color{background-color: var(--wp--preset--color--vivid-green-cyan) !important;}.has-pale-cyan-blue-background-color{background-color: var(--wp--preset--color--pale-cyan-blue) !important;}.has-vivid-cyan-blue-background-color{background-color: var(--wp--preset--color--vivid-cyan-blue) !important;}.has-vivid-purple-background-color{background-color: var(--wp--preset--color--vivid-purple) !important;}.has-black-border-color{border-color: var(--wp--preset--color--black) !important;}.has-cyan-bluish-gray-border-color{border-color: var(--wp--preset--color--cyan-bluish-gray) !important;}.has-white-border-color{border-color: var(--wp--preset--color--white) !important;}.has-pale-pink-border-color{border-color: var(--wp--preset--color--pale-pink) !important;}.has-vivid-red-border-color{border-color: var(--wp--preset--color--vivid-red) !important;}.has-luminous-vivid-orange-border-color{border-color: var(--wp--preset--color--luminous-vivid-orange) !important;}.has-luminous-vivid-amber-border-color{border-color: var(--wp--preset--color--luminous-vivid-amber) !important;}.has-light-green-cyan-border-color{border-color: var(--wp--preset--color--light-green-cyan) !important;}.has-vivid-green-cyan-border-color{border-color: var(--wp--preset--color--vivid-green-cyan) !important;}.has-pale-cyan-blue-border-color{border-color: var(--wp--preset--color--pale-cyan-blue) !important;}.has-vivid-cyan-blue-border-color{border-color: var(--wp--preset--color--vivid-cyan-blue) !important;}.has-vivid-purple-border-color{border-color: var(--wp--preset--color--vivid-purple) !important;}.has-vivid-cyan-blue-to-vivid-purple-gradient-background{background: var(--wp--preset--gradient--vivid-cyan-blue-to-vivid-purple) !important;}.has-light-green-cyan-to-vivid-green-cyan-gradient-background{background: var(--wp--preset--gradient--light-green-cyan-to-vivid-green-cyan) !important;}.has-luminous-vivid-amber-to-luminous-vivid-orange-gradient-background{background: var(--wp--preset--gradient--luminous-vivid-amber-to-luminous-vivid-orange) !important;}.has-luminous-vivid-orange-to-vivid-red-gradient-background{background: var(--wp--preset--gradient--luminous-vivid-orange-to-vivid-red) !important;}.has-very-light-gray-to-cyan-bluish-gray-gradient-background{background: var(--wp--preset--gradient--very-light-gray-to-cyan-bluish-gray) !important;}.has-cool-to-warm-spectrum-gradient-background{background: var(--wp--preset--gradient--cool-to-warm-spectrum) !important;}.has-blush-light-purple-gradient-background{background: var(--wp--preset--gradient--blush-light-purple) !important;}.has-blush-bordeaux-gradient-background{background: var(--wp--preset--gradient--blush-bordeaux) !important;}.has-luminous-dusk-gradient-background{background: var(--wp--preset--gradient--luminous-dusk) !important;}.has-pale-ocean-gradient-background{background: var(--wp--preset--gradient--pale-ocean) !important;}.has-electric-grass-gradient-background{background: var(--wp--preset--gradient--electric-grass) !important;}.has-midnight-gradient-background{background: var(--wp--preset--gradient--midnight) !important;}.has-small-font-size{font-size: var(--wp--preset--font-size--small) !important;}.has-medium-font-size{font-size: var(--wp--preset--font-size--medium) !important;}.has-large-font-size{font-size: var(--wp--preset--font-size--large) !important;}.has-x-large-font-size{font-size: var(--wp--preset--font-size--x-large) !important;}
.wp-block-navigation a:where(:not(.wp-element-button)){color: inherit;}
:where(.wp-block-post-template.is-layout-flex){gap: 1.25em;}:where(.wp-block-post-template.is-layout-grid){gap: 1.25em;}
:where(.wp-block-columns.is-layout-flex){gap: 2em;}:where(.wp-block-columns.is-layout-grid){gap: 2em;}
.wp-block-pullquote{font-size: 1.5em;line-height: 1.6;}
</style>
<link rel='stylesheet' id='wbcr-comments-plus-url-span-css' href='https://otus.ru/journal/wp-content/plugins/clearfy/components/comments-plus/assets/css/url-span.css?ver=2.2.0' type='text/css' media='all' />
<link rel='stylesheet' id='wpel-style-css' href='https://otus.ru/journal/wp-content/plugins/wp-external-links/public/css/wpel.css?ver=2.59' type='text/css' media='all' />
<link rel='stylesheet' id='ez-toc-css' href='https://otus.ru/journal/wp-content/plugins/easy-table-of-contents/assets/css/screen.min.css?ver=2.0.61' type='text/css' media='all' />
<style id='ez-toc-inline-css' type='text/css'>
div#ez-toc-container .ez-toc-title {font-size: 120%;}div#ez-toc-container .ez-toc-title {font-weight: 500;}div#ez-toc-container ul li {font-size: 95%;}div#ez-toc-container nav ul ul li {font-size: 90%;}
.ez-toc-container-direction {direction: ltr;}.ez-toc-counter ul{counter-reset: item ;}.ez-toc-counter nav ul li a::before {content: counters(item, ".", decimal) ". ";display: inline-block;counter-increment: item;flex-grow: 0;flex-shrink: 0;margin-right: .2em; float: left; }.ez-toc-widget-direction {direction: ltr;}.ez-toc-widget-container ul{counter-reset: item ;}.ez-toc-widget-container nav ul li a::before {content: counters(item, ".", decimal) ". ";display: inline-block;counter-increment: item;flex-grow: 0;flex-shrink: 0;margin-right: .2em; float: left; }
</style>
<link rel='stylesheet' id='contentberg-fonts-css' href='https://fonts.googleapis.com/css?family=Roboto%3A400%2C500%2C700%7CPT+Serif%3A400%2C400i%2C600%7CIBM+Plex+Serif%3A500' type='text/css' media='all' />
<link rel='stylesheet' id='contentberg-core-css' href='https://otus.ru/journal/wp-content/themes/contentberg/style.css?ver=1.8.3' type='text/css' media='all' />
<link rel='stylesheet' id='contentberg-lightbox-css' href='https://otus.ru/journal/wp-content/themes/contentberg/css/lightbox.css?ver=1.8.3' type='text/css' media='all' />
<link rel='stylesheet' id='font-awesome-css' href='https://otus.ru/journal/wp-content/themes/contentberg/css/fontawesome/css/font-awesome.min.css?ver=1.8.3' type='text/css' media='all' />
<script type="text/javascript" id="breeze-prefetch-js-extra">
/* <![CDATA[ */
var breeze_prefetch = {"local_url":"https:\/\/otus.ru\/journal","ignore_remote_prefetch":"1","ignore_list":["\/wp-admin\/"]};
/* ]]> */
</script>
<script type="text/javascript" src="https://otus.ru/journal/wp-content/plugins/breeze/assets/js/js-front-end/breeze-prefetch-links.min.js" id="breeze-prefetch-js"></script>
<script type="text/javascript" src="https://otus.ru/journal/wp-includes/js/jquery/jquery.min.js" id="jquery-core-js"></script>
<script type="text/javascript" src="https://otus.ru/journal/wp-includes/js/jquery/jquery-migrate.min.js" id="jquery-migrate-js"></script>
<script type="text/javascript" src="https://otus.ru/journal/wp-content/themes/contentberg/js/lazysizes.js" id="lazysizes-js"></script>
<link rel="https://api.w.org/" href="https://otus.ru/journal/wp-json/" /><link rel="alternate" type="application/json" href="https://otus.ru/journal/wp-json/wp/v2/posts/2897" /><link rel='shortlink' href='https://otus.ru/journal/?p=2897' />
<link rel="alternate" type="application/json+oembed" href="https://otus.ru/journal/wp-json/oembed/1.0/embed?url=https%3A%2F%2Fotus.ru%2Fjournal%2Fznakomstvo-s-lua-i-ego-kompilyatorom-chto-dolzhen-znat-programmist%2F" />
<link rel="alternate" type="text/xml+oembed" href="https://otus.ru/journal/wp-json/oembed/1.0/embed?url=https%3A%2F%2Fotus.ru%2Fjournal%2Fznakomstvo-s-lua-i-ego-kompilyatorom-chto-dolzhen-znat-programmist%2F&format=xml" />
<script>var Sphere_Plugin = {"ajaxurl":"https:\/\/otus.ru\/journal\/wp-admin\/admin-ajax.php"};</script><link rel="icon" href="https://otus.ru/journal/wp-content/uploads/2020/11/cropped-OTUS_logo_OTUS-COMP-LOGO-WHITE-1-32x32.png" sizes="32x32" />
<link rel="icon" href="https://otus.ru/journal/wp-content/uploads/2020/11/cropped-OTUS_logo_OTUS-COMP-LOGO-WHITE-1-192x192.png" sizes="192x192" />
<link rel="apple-touch-icon" href="https://otus.ru/journal/wp-content/uploads/2020/11/cropped-OTUS_logo_OTUS-COMP-LOGO-WHITE-1-180x180.png" />
<meta name="msapplication-TileImage" content="https://otus.ru/journal/wp-content/uploads/2020/11/cropped-OTUS_logo_OTUS-COMP-LOGO-WHITE-1-270x270.png" />
<style type="text/css" id="wp-custom-css">
#menu-item-10406 .wpel-icon {
display: none;
}
#menu-item-10407 .wpel-icon {
display: none;
}
.otus-login-site a .wpel-icon {
display: none;
}
.menu-menju-navykov-container a .wpel-icon {
display: none;
}
.otus-login-site a
{
background: #ffd709;
border-radius: 12px;
color: #0f0f10;
font-size: 14px;
font-weight: 700;
line-height: 20px;
display: block;
text-align: center;
padding: 8px 25px;
}
.main-footer.dark {
background: linear-gradient(90deg, #a64fc5, #4f54e6);
border-color: transparent;
}
.main-footer.bold .copyright {
color: #fff;
}
.main-footer.bold .to-top i {
color: #fff;
}
.main-footer.bold .back-to-top {
color: #fff;
}
.nav__scroll {
overflow-x: auto;
-webkit-overflow-scrolling: touch;
}
.scrollable-menu .menu {
display: flex;
}
.nav__scroll
{
background: linear-gradient(90deg, #a64fc5, #4f54e6);
}
.scrollable-menu .menu .menu-item {
flex: 0 0 auto;
padding: 15px 15px;
}
.scrollable-menu .menu .menu-item a {
color: #fff;
}
.nav__scroll::-webkit-scrollbar{background-color:#fff;height:5px;}
.nav__scroll::-webkit-scrollbar-thumb{background-color:#dcdcdc;}
.nav__scroll::-webkit-scrollbar-track{-webkit-border-radius:0;border-radius:0;background-color:#fff;}/
body {
min-width: 320px;
}
.banner-click img {
margin: 0 auto;
display: block;
}
.banner-click {
cursor: pointer;
}
.banner-footer-area {
margin-bottom: 20px;
}
.banner-left-area {
margin-top: 40px;
} </style>
<!--Start VDZ Yandex Metrika Plugin-->
<!-- Yandex.Metrika counter --><script type="text/javascript" >(function(m,e,t,r,i,k,a){m[i]=m[i]||function(){(m[i].a=m[i].a||[]).push(arguments)};m[i].l=1*new Date();k=e.createElement(t),a=e.getElementsByTagName(t)[0],k.async=1,k.src=r,a.parentNode.insertBefore(k,a)})(window, document, "script", "https://mc.yandex.ru/metrika/tag.js", "ym");ym(34531570, "init", {clickmap:true, trackLinks:true, accurateTrackBounce:true, webvisor:true, trackHash:true, ecommerce:"dataLayer"});</script>
<noscript><div><img src="https://mc.yandex.ru/watch/34531570" style="position:absolute; left:-9999px;" alt="" /></div></noscript>
<!-- /Yandex.Metrika counter --><!--START ADD EVENTS FROM CF7--><script type='text/javascript'>document.addEventListener( 'wpcf7submit', function( event ) {
//event.detail.contactFormId;
if(ym){
//console.log(event.detail);
ym(34531570, 'reachGoal', 'VDZ_SEND_CONTACT_FORM_7');
ym(34531570, 'params', {
page_url: window.location.href,
status: event.detail.status,
locale: event.detail.contactFormLocale,
form_id: event.detail.contactFormId,
});
}
}, false );
</script><!--END ADD EVENTS FROM CF7-->
<!--End VDZ Yandex Metrika Plugin-->
</head>
<body class="post-template-default single single-post postid-2897 single-format-standard right-sidebar lazy-normal has-lb">
<div class="main-wrap">
<header id="main-head" class="main-head head-nav-below has-search-modal simple simple-boxed">
<div class="inner inner-head" data-sticky-bar="0">
<div class="wrap cf wrap-head">
<div class="left-contain">
<span class="mobile-nav"><i class="fa fa-bars"></i></span>
<div class="title">
<a href="https://otus.ru/journal/" title="OTUS JOURNAL" rel="home" data-wpel-link="internal">
<span class="text-logo"><img src="/journal/wp-content/themes/contentberg/img/logo_site.svg" alt="OTUS JOURNAL"></span>
</a>
</div>
</div>
<div class="navigation-wrap inline">
<nav class="navigation inline simple light" data-sticky-bar="0">
<div class="menu-rubriki-container"><ul id="menu-rubriki" class="menu"><li id="menu-item-109" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-cat-1 menu-item-109"><a href="https://otus.ru/journal/category/pro-it/" data-wpel-link="internal"><span>Про IT</span></a></li>
<li id="menu-item-113" class="menu-item menu-item-type-taxonomy menu-item-object-category current-post-ancestor current-menu-parent current-post-parent menu-cat-4 menu-item-113"><a href="https://otus.ru/journal/category/polza/" data-wpel-link="internal"><span>Полезное</span></a></li>
<li id="menu-item-114" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-cat-3 menu-item-114"><a href="https://otus.ru/journal/category/lifestyle/" data-wpel-link="internal"><span>Лайфстайл</span></a></li>
<li id="menu-item-10406" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-10406"><a href="https://otus.ru/catalog/courses" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer" class="wpel-icon-right"><span>Обучение</span><span class="wpel-icon wpel-image wpel-icon-6"></span></a></li>
<li id="menu-item-10407" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-10407"><a href="https://otus.ru/about" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer" class="wpel-icon-right"><span>Информация</span><span class="wpel-icon wpel-image wpel-icon-6"></span></a></li>
</ul></div> </nav>
</div>
<div class="actions">
<div class="otus-login-site">
<a href="https://otus.ru/login/" target="_blank" data-wpel-link="external" rel="nofollow external noopener noreferrer" class="wpel-icon-right">Войти<span class="wpel-icon wpel-image wpel-icon-6"></span></a>
</div>
<a href="#" title="Search" class="search-link"><i class="fa fa-search"></i></a>
</div>
</div>
</div>
</header> <!-- .main-head -->
<div class="nav nav_disable nav_colored nav_transparent course-categories__nav nav__scroll ">
<div class="container wrap">
<div class="links inline simple light scrollable-menu">
<div class="menu-menju-navykov-container"><ul id="menu-menju-navykov" class="menu"><li id="menu-item-10413" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-10413"><a href="https://otus.ru/categories/programming/" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer" class="wpel-icon-right">Программирование<span class="wpel-icon wpel-image wpel-icon-6"></span></a></li>
<li id="menu-item-10414" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-10414"><a href="https://otus.ru/categories/architecture/" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer" class="wpel-icon-right">Архитектура<span class="wpel-icon wpel-image wpel-icon-6"></span></a></li>
<li id="menu-item-10415" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-10415"><a href="https://otus.ru/categories/operations/" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer" class="wpel-icon-right">Инфраструктура<span class="wpel-icon wpel-image wpel-icon-6"></span></a></li>
<li id="menu-item-10416" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-10416"><a href="https://otus.ru/categories/information-security-courses/" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer" class="wpel-icon-right">Безопасность<span class="wpel-icon wpel-image wpel-icon-6"></span></a></li>
<li id="menu-item-10417" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-10417"><a href="https://otus.ru/categories/data-science/" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer" class="wpel-icon-right">Data Science<span class="wpel-icon wpel-image wpel-icon-6"></span></a></li>
<li id="menu-item-10418" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-10418"><a href="https://otus.ru/categories/gamedev/" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer" class="wpel-icon-right">GameDev<span class="wpel-icon wpel-image wpel-icon-6"></span></a></li>
<li id="menu-item-10419" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-10419"><a href="https://otus.ru/categories/marketing-business/" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer" class="wpel-icon-right">Управление<span class="wpel-icon wpel-image wpel-icon-6"></span></a></li>
<li id="menu-item-10420" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-10420"><a href="https://otus.ru/categories/analytics/" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer" class="wpel-icon-right">Аналитика и анализ<span class="wpel-icon wpel-image wpel-icon-6"></span></a></li>
<li id="menu-item-10421" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-10421"><a href="https://otus.ru/categories/testing/" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer" class="wpel-icon-right">Тестирование<span class="wpel-icon wpel-image wpel-icon-6"></span></a></li>
</ul></div> </div>
</div>
</div>
<div class="main wrap">
<div class="ts-row cf">
<div class="col-8 main-content cf">
<article id="post-2897" class="the-post post-2897 post type-post status-publish format-standard has-post-thumbnail category-polza tag-lua">
<header class="post-header the-post-header cf">
<div class="post-meta the-post-meta">
<span class="post-cat">
<a href="https://otus.ru/journal/category/polza/" class="category" data-wpel-link="internal">Полезное</a>
</span>
<h1 class="post-title">
Знакомство с LUA и его компилятором: что должен знать программист
</h1>
<a href="https://otus.ru/journal/znakomstvo-s-lua-i-ego-kompilyatorom-chto-dolzhen-znat-programmist/" class="date-link" data-wpel-link="internal"><time class="post-date">4 февраля, 2022</time></a>
</div>
<div class="featured">
<a href="https://otus.ru/journal/wp-content/uploads/2022/02/oj-1080x720-10.png" class="image-link" data-wpel-link="internal"><img width="770" height="515" src="data:image/svg+xml,%3Csvg%20viewBox%3D%270%200%20770%20515%27%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%3E%3C%2Fsvg%3E" class="attachment-contentberg-main size-contentberg-main lazyload wp-post-image" alt="Знакомство с LUA и его компилятором: что должен знать программист" title="Знакомство с LUA и его компилятором: что должен знать программист" decoding="async" fetchpriority="high" data-srcset="https://otus.ru/journal/wp-content/uploads/2022/02/oj-1080x720-10-770x515.png 770w, https://otus.ru/journal/wp-content/uploads/2022/02/oj-1080x720-10-300x200.png 300w, https://otus.ru/journal/wp-content/uploads/2022/02/oj-1080x720-10-1024x683.png 1024w, https://otus.ru/journal/wp-content/uploads/2022/02/oj-1080x720-10-150x100.png 150w, https://otus.ru/journal/wp-content/uploads/2022/02/oj-1080x720-10-270x180.png 270w" data-src="https://otus.ru/journal/wp-content/uploads/2022/02/oj-1080x720-10-770x515.png" data-sizes="(max-width: 770px) 100vw, 770px" /> </a>
</div>
</header><!-- .post-header -->
<div class="post-content description cf entry-content content-normal">
<div id="ez-toc-container" class="ez-toc-v2_0_61 counter-hierarchy ez-toc-counter ez-toc-grey ez-toc-container-direction">
<div class="ez-toc-title-container">
<p class="ez-toc-title " >Содержание</p>
<span class="ez-toc-title-toggle"><a href="#" class="ez-toc-pull-right ez-toc-btn ez-toc-btn-xs ez-toc-btn-default ez-toc-toggle" aria-label="Toggle Table of Content"><span class="ez-toc-js-icon-con"><span class=""><span class="eztoc-hide" style="display:none;">Toggle</span><span class="ez-toc-icon-toggle-span"><svg style="fill: #999;color:#999" xmlns="http://www.w3.org/2000/svg" class="list-377408" width="20px" height="20px" viewBox="0 0 24 24" fill="none"><path d="M6 6H4v2h2V6zm14 0H8v2h12V6zM4 11h2v2H4v-2zm16 0H8v2h12v-2zM4 16h2v2H4v-2zm16 0H8v2h12v-2z" fill="currentColor"></path></svg><svg style="fill: #999;color:#999" class="arrow-unsorted-368013" xmlns="http://www.w3.org/2000/svg" width="10px" height="10px" viewBox="0 0 24 24" version="1.2" baseProfile="tiny"><path d="M18.2 9.3l-6.2-6.3-6.2 6.3c-.2.2-.3.4-.3.7s.1.5.3.7c.2.2.4.3.7.3h11c.3 0 .5-.1.7-.3.2-.2.3-.5.3-.7s-.1-.5-.3-.7zM5.8 14.7l6.2 6.3 6.2-6.3c.2-.2.3-.5.3-.7s-.1-.5-.3-.7c-.2-.2-.4-.3-.7-.3h-11c-.3 0-.5.1-.7.3-.2.2-.3.5-.3.7s.1.5.3.7z"/></svg></span></span></span></a></span></div>
<nav><ul class='ez-toc-list ez-toc-list-level-1 ' ><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class="ez-toc-link ez-toc-heading-1" href="#%D0%AF%D0%B7%D1%8B%D0%BA_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D1%8F_%E2%80%93_%D1%8D%D1%82%D0%BE%E2%80%A6" title="Язык программирования – это…">Язык программирования – это…</a></li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class="ez-toc-link ez-toc-heading-2" href="#LUA_%E2%80%93_%D1%87%D1%82%D0%BE_%D1%8D%D1%82%D0%BE_%D1%82%D0%B0%D0%BA%D0%BE%D0%B5" title="LUA – что это такое">LUA – что это такое</a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class="ez-toc-link ez-toc-heading-3" href="#%D0%9D%D0%B5%D0%BC%D0%BD%D0%BE%D0%B3%D0%BE_%D0%B8%D1%81%D1%82%D0%BE%D1%80%D0%B8%D0%B8" title="Немного истории">Немного истории</a></li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class="ez-toc-link ez-toc-heading-4" href="#%D0%9F%D1%80%D0%B5%D0%B8%D0%BC%D1%83%D1%89%D0%B5%D1%81%D1%82%D0%B2%D0%B0_%D0%B8_%D0%BD%D0%B5%D0%B4%D0%BE%D1%81%D1%82%D0%B0%D1%82%D0%BA%D0%B8" title="Преимущества и недостатки">Преимущества и недостатки</a><ul class='ez-toc-list-level-4' ><li class='ez-toc-heading-level-4'><a class="ez-toc-link ez-toc-heading-5" href="#%D0%9E_%D1%81%D0%B8%D0%BB%D1%8C%D0%BD%D1%8B%D1%85_%D1%81%D1%82%D0%BE%D1%80%D0%BE%D0%BD%D0%B0%D1%85" title="О сильных сторонах">О сильных сторонах</a></li><li class='ez-toc-page-1 ez-toc-heading-level-4'><a class="ez-toc-link ez-toc-heading-6" href="#%D0%9E_%D1%81%D0%BB%D0%B0%D0%B1%D1%8B%D1%85_%D1%81%D1%82%D0%BE%D1%80%D0%BE%D0%BD%D0%B0%D1%85" title="О слабых сторонах">О слабых сторонах</a></li></ul></li></ul></li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class="ez-toc-link ez-toc-heading-7" href="#%D0%9F%D0%B5%D1%80%D1%81%D0%BF%D0%B5%D0%BA%D1%82%D0%B8%D0%B2%D1%8B" title="Перспективы">Перспективы</a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class="ez-toc-link ez-toc-heading-8" href="#%D0%9A%D0%B0%D0%BA_%D0%BC%D0%BE%D0%B6%D0%BD%D0%BE_%D0%B8%D1%81%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D1%82%D1%8C" title="Как можно использовать">Как можно использовать</a></li></ul></li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class="ez-toc-link ez-toc-heading-9" href="#%D0%9E%D0%BA%D1%80%D1%83%D0%B6%D0%B0%D1%8E%D1%89%D0%B0%D1%8F_%D1%81%D1%80%D0%B5%D0%B4%D0%B0" title="Окружающая среда">Окружающая среда</a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class="ez-toc-link ez-toc-heading-10" href="#%D0%9B%D0%BE%D0%BA%D0%B0%D0%BB%D1%8C%D0%BD%D0%B0%D1%8F" title="Локальная">Локальная</a><ul class='ez-toc-list-level-4' ><li class='ez-toc-heading-level-4'><a class="ez-toc-link ez-toc-heading-11" href="#%D0%A0%D0%B5%D0%B4%D0%B0%D0%BA%D1%82%D0%BE%D1%80_%D1%82%D0%B5%D0%BA%D1%81%D1%82%D0%B0" title="Редактор текста">Редактор текста</a></li><li class='ez-toc-page-1 ez-toc-heading-level-4'><a class="ez-toc-link ez-toc-heading-12" href="#%D0%9D%D0%B5%D0%BC%D0%BD%D0%BE%D0%B3%D0%BE_%D0%BE%D0%B1_%D0%B8%D0%BD%D1%82%D0%B5%D1%80%D0%BF%D1%80%D0%B5%D1%82%D0%B0%D1%82%D0%BE%D1%80%D0%B5" title="Немного об интерпретаторе">Немного об интерпретаторе</a></li><li class='ez-toc-page-1 ez-toc-heading-level-4'><a class="ez-toc-link ez-toc-heading-13" href="#%D0%90_%D1%87%D1%82%D0%BE_%D1%82%D0%B0%D0%BC_%D1%81_%D0%BA%D0%BE%D0%BC%D0%BF%D0%B8%D0%BB%D1%8F%D1%82%D0%BE%D1%80%D0%B0%D0%BC%D0%B8" title="А что там с компиляторами">А что там с компиляторами</a><ul class='ez-toc-list-level-5' ><li class='ez-toc-heading-level-5'><a class="ez-toc-link ez-toc-heading-14" href="#%D0%94%D0%BB%D1%8F_Windows" title="Для Windows">Для Windows</a></li><li class='ez-toc-page-1 ez-toc-heading-level-5'><a class="ez-toc-link ez-toc-heading-15" href="#%D0%94%D0%BB%D1%8F_Linux" title="Для Linux">Для Linux</a></li><li class='ez-toc-page-1 ez-toc-heading-level-5'><a class="ez-toc-link ez-toc-heading-16" href="#%D0%94%D0%BB%D1%8F_MacOS" title="Для MacOS">Для MacOS</a></li><li class='ez-toc-page-1 ez-toc-heading-level-5'><a class="ez-toc-link ez-toc-heading-17" href="#IDE" title="IDE">IDE</a></li><li class='ez-toc-page-1 ez-toc-heading-level-5'><a class="ez-toc-link ez-toc-heading-18" href="#%D0%91%D0%B5%D0%B7_%D1%83%D1%81%D1%82%D0%B0%D0%BD%D0%BE%D0%B2%D0%BA%D0%B8" title="Без установки">Без установки</a></li></ul></li></ul></li></ul></li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class="ez-toc-link ez-toc-heading-19" href="#%D0%A1%D0%B8%D0%BD%D1%82%D0%B0%D0%BA%D1%81%D0%B8%D1%81" title="Синтаксис">Синтаксис</a></li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class="ez-toc-link ez-toc-heading-20" href="#%D0%9B%D0%B5%D0%BA%D1%81%D0%B8%D0%BA%D0%B0" title="Лексика">Лексика</a></li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class="ez-toc-link ez-toc-heading-21" href="#%D0%A2%D0%B8%D0%BF%D1%8B_%D0%B4%D0%B0%D0%BD%D0%BD%D1%8B%D1%85" title="Типы данных">Типы данных</a></li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class="ez-toc-link ez-toc-heading-22" href="#%D0%9F%D1%80%D0%B8%D1%81%D0%B2%D0%B0%D0%B8%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5" title="Присваивание">Присваивание</a></li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class="ez-toc-link ez-toc-heading-23" href="#%D0%A2%D0%B0%D0%B1%D0%BB%D0%B8%D1%87%D0%BD%D1%8B%D0%B5_%D0%B4%D0%B5%D0%BB%D0%B0" title="Табличные дела">Табличные дела</a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class="ez-toc-link ez-toc-heading-24" href="#%D0%9C%D0%B5%D1%82%D0%B0%D1%82%D0%B0%D0%B1%D0%BB%D0%B8%D1%86%D1%8B" title="Метатаблицы">Метатаблицы</a></li></ul></li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class="ez-toc-link ez-toc-heading-25" href="#%D0%9E%D1%81%D0%BE%D0%B1%D0%B5%D0%BD%D0%BD%D0%BE%D1%81%D1%82%D0%B8_%D1%80%D0%B5%D0%B0%D0%BB%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D0%B8" title="Особенности реализации">Особенности реализации</a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class="ez-toc-link ez-toc-heading-26" href="#%D0%95%D1%81%D0%BB%D0%B8_%D0%B5%D1%81%D1%82%D1%8C_%D0%BE%D1%88%D0%B8%D0%B1%D0%BA%D0%B8" title="Если есть ошибки">Если есть ошибки</a></li></ul></li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class="ez-toc-link ez-toc-heading-27" href="#%D0%9A%D0%B0%D0%BA_%D0%BF%D0%BE%D0%BB%D1%83%D1%87%D0%B8%D1%82%D1%8C_%D0%BE%D0%B1%D1%80%D0%B0%D0%B7%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5_%D0%B8_%D0%BB%D1%83%D1%87%D1%88%D0%B5_%D1%80%D0%B0%D0%B7%D0%B1%D0%B8%D1%80%D0%B0%D1%82%D1%8C%D1%81%D1%8F_%D0%B2_%D0%AF%D0%9F" title="Как получить образование и лучше разбираться в ЯП">Как получить образование и лучше разбираться в ЯП</a></li></ul></nav></div>
<p>Программирование предусматривает разнообразные языки. Все они в той или иной степени имеют преимущества и недостатки, используются для конкретных целей. Многие слышали о <strong>LUA</strong>. Эта статья как раз и будет посвящена этому языку программирования.</p>
<h2 class="wp-block-heading"><span class="ez-toc-section" id="%D0%AF%D0%B7%D1%8B%D0%BA_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D1%8F_%E2%80%93_%D1%8D%D1%82%D0%BE%E2%80%A6"></span>Язык программирования – это…<span class="ez-toc-section-end"></span></h2>
<p>Язык программирования – некий перечень формальных правил и принципов, используемых при написании контентна. Общий язык помогает коммуникации людей, а упомянутый термин относится к устройствам и программному обеспечению.</p>
<p>Язык программирования – способ «общения»:</p>
<ul><li>пользователя с компьютером;</li><li>устройств друг с другом;</li><li>программного обеспечения между собой;</li><li>устройств с утилитами.</li></ul>
<p>В зависимости от выбранного варианта можно весьма легко создавать программы, приложения, игры и даже писать веб-страницы.</p>
<h2 class="wp-block-heading"><span class="ez-toc-section" id="LUA_%E2%80%93_%D1%87%D1%82%D0%BE_%D1%8D%D1%82%D0%BE_%D1%82%D0%B0%D0%BA%D0%BE%D0%B5"></span>LUA – что это такое<span class="ez-toc-section-end"></span></h2>
<p>Луа – язык программирования, в основе которого лежат <a href="https://otus.ru/journal/osnovy-raboty-so-skriptami/" data-wpel-link="internal">скрипты</a>. Называется скриптовым. Используется для того, чтобы создавать бизнес-логику утилит.</p>
<p>Относится к мультипарадигменным. Lua обладает неплохой поддержкой декларативного стиля создания программного обеспечения. Написан на C. Язык был представлен миру в 1993 году в качестве самостоятельной разработки.</p>
<h3 class="wp-block-heading"><span class="ez-toc-section" id="%D0%9D%D0%B5%D0%BC%D0%BD%D0%BE%D0%B3%D0%BE_%D0%B8%D1%81%D1%82%D0%BE%D1%80%D0%B8%D0%B8"></span>Немного истории<span class="ez-toc-section-end"></span></h3>
<p>LUA изначально разработан Роберто Иерусалимши, Вальдемаром Селесом и Луисом Энрике. Изначально «средство» было представлено программным обеспечением, интегрируемым кодификациями на C и иных «традиционных» языках. За счет этого разработчики могли значительно ускорить процесс создания собственных утилит.</p>
<p>Прародителями LUA считаются SOL и DEL. С самых первых дней обладал открытый исходный код. Это значит, что в развитии оного имеет право поучаствовать каждый желающий. Выделился тем, что основан в Бразилии, которая на рынке IT-разработок практически не фигурировала.</p>
<p>Текущая версия языка – 5.4.0. Вышло во второй половине 2020 года. Активно используется в IT-областях и бизнесе.</p>
<h3 class="wp-block-heading"><span class="ez-toc-section" id="%D0%9F%D1%80%D0%B5%D0%B8%D0%BC%D1%83%D1%89%D0%B5%D1%81%D1%82%D0%B2%D0%B0_%D0%B8_%D0%BD%D0%B5%D0%B4%D0%BE%D1%81%D1%82%D0%B0%D1%82%D0%BA%D0%B8"></span>Преимущества и недостатки<span class="ez-toc-section-end"></span></h3>
<p>У языка LUA есть сильные и слабые стороны. Изучить оные необходимо перед тем, как приступать к обучению соответствующему способу «общения» с ПО и устройствами.</p>
<h4 class="wp-block-heading"><span class="ez-toc-section" id="%D0%9E_%D1%81%D0%B8%D0%BB%D1%8C%D0%BD%D1%8B%D1%85_%D1%81%D1%82%D0%BE%D1%80%D0%BE%D0%BD%D0%B0%D1%85"></span>О сильных сторонах<span class="ez-toc-section-end"></span></h4>
<p>Плюсы LUA:</p>
<ol type="1"><li>Портатируемость. Утилиты, написанные на Луа, неплохо переносятся с Windows на Linux и другие операционные системы.</li><li>Количество библиотек. Их очень много. Большинство представлены на официальном сайте LUA. Предлагаемые библиотеки подходят для решения основной массы задач, стоящих перед пользователями.</li><li>Право на добавление собственных библиотек. Достигается за счет открытого исходного кода. Добавляемые библиотеки должны быть разработаны на C.</li><li>Синтаксис. LUA – простой язык, который читается без каких-либо проблем. Осваивается быстро даже новичками в IT-области.</li><li>Адаптивность. Программное обеспечение, написанное на Луа, занимает меньше памяти на задействованных устройствах.</li></ol>
<p>Это – компактный мультиплатформенный язык, который легко «настроить под себя».</p>
<h4 class="wp-block-heading"><span class="ez-toc-section" id="%D0%9E_%D1%81%D0%BB%D0%B0%D0%B1%D1%8B%D1%85_%D1%81%D1%82%D0%BE%D1%80%D0%BE%D0%BD%D0%B0%D1%85"></span>О слабых сторонах<span class="ez-toc-section-end"></span></h4>
<p>Но, как и любой другой язык, LUA имеет некоторые изъяны:</p>
<ol type="1"><li>Выступает в качестве скриптового. Это значит, что часто применяется совместно с другими языками.</li><li>Для полноценного применения разработчику необходимо знать дополнительно 2-3 programming languages.</li><li>Не всегда быстро работает.</li></ol>
<p>Профессионалы раньше считали, что данный вариант подходит лишь для мелких проектов. Частично данное заверение правильно. Связано это с тем, что LUA относится к модульным языкам. Но посредством их сочетания нередко удается добиться колоссальных результатов.</p>
<h2 class="wp-block-heading"><span class="ez-toc-section" id="%D0%9F%D0%B5%D1%80%D1%81%D0%BF%D0%B5%D0%BA%D1%82%D0%B8%D0%B2%D1%8B"></span>Перспективы<span class="ez-toc-section-end"></span></h2>
<p>Сейчас на передовой линии находится разработка игр. Луа для этих целей – не лучшее решение. Индекс Tiobe показывает, что данный вариант находится на позиции под номером 30.</p>
<p>Соответствующее явление связано с тем, что language обычно применяется в сочетании с другими «способами общения» и создания ПО. Луа задействуют преимущественно для того, чтобы решать отдельные задачи. Только через него создать хорошую игру не получится.</p>
<p>При трудоустройстве LUA-разработчики нередко сталкиваются с проблемами. Лишь некоторые компании действительно набирают таких работников. В подобных местах возможна конкуренция.</p>
<p>В качестве основного LUA использовать не рекомендуется. Он может быть изучен в виде дополнительного, на первых порах осваивания программирования. Особенно, если хочется заниматься игровой разработкой.</p>
<h3 class="wp-block-heading"><span class="ez-toc-section" id="%D0%9A%D0%B0%D0%BA_%D0%BC%D0%BE%D0%B6%D0%BD%D0%BE_%D0%B8%D1%81%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D1%82%D1%8C"></span>Как можно использовать<span class="ez-toc-section-end"></span></h3>
<p>Вот несколько направлений, в которых иногда пригодится Луа:</p>
<ul><li>разработка игрового контента;</li><li>создание сценариев для автономного программного обеспечения;</li><li>интернет-сценарии;</li><li>расширения и дополнительных софт БД;</li><li>создание систем безопасности.</li></ul>
<p>Разработка обычно требует применения одного или нескольких иных языков программирования. Иначе контент окажется не слишком функциональным.</p>
<h2 class="wp-block-heading"><span class="ez-toc-section" id="%D0%9E%D0%BA%D1%80%D1%83%D0%B6%D0%B0%D1%8E%D1%89%D0%B0%D1%8F_%D1%81%D1%80%D0%B5%D0%B4%D0%B0"></span>Окружающая среда<span class="ez-toc-section-end"></span></h2>
<p>Весь процесс написания исходного кода осуществляется в разнообразных средах. Этому моменту требуется уделить должное внимание, иначе наладить работу не получится.</p>
<h3 class="wp-block-heading"><span class="ez-toc-section" id="%D0%9B%D0%BE%D0%BA%D0%B0%D0%BB%D1%8C%D0%BD%D0%B0%D1%8F"></span>Локальная<span class="ez-toc-section-end"></span></h3>
<p>Чтобы провести настройку локальной среды, требуется обеспечить наличие на задействованном устройстве:</p>
<ul><li>текстового редактора;</li><li>компилятор;</li><li>интерпретатор.</li></ul>
<p>Далее все перечисленные компоненты будут рассмотрены более подробно. Информация предназначена преимущественно для новичков.</p>
<h4 class="wp-block-heading"><span class="ez-toc-section" id="%D0%A0%D0%B5%D0%B4%D0%B0%D0%BA%D1%82%D0%BE%D1%80_%D1%82%D0%B5%D0%BA%D1%81%D1%82%D0%B0"></span>Редактор текста<span class="ez-toc-section-end"></span></h4>
<p>Он требуется для того, чтобы осуществлять запись программного кода утилиты. Воспользоваться можно любым известным текстовым редактором. Примеры:</p>
<ul><li>«Блокнот» в Windows;</li><li>команда «Редактирование операционной системы»;</li><li>VIM;</li><li>Epsilon.</li></ul>
<p>Версия и имя редактора способны отличаться друг от друга в зависимости от операционной системы.</p>
<p>Создаваемые здесь документы – исходные файлы, содержащие непосредственный код приложения. Для рассматриваемого «способа общения» актуально расширение .lua.</p>
<h4 class="wp-block-heading"><span class="ez-toc-section" id="%D0%9D%D0%B5%D0%BC%D0%BD%D0%BE%D0%B3%D0%BE_%D0%BE%D0%B1_%D0%B8%D0%BD%D1%82%D0%B5%D1%80%D0%BF%D1%80%D0%B5%D1%82%D0%B0%D1%82%D0%BE%D1%80%D0%B5"></span>Немного об интерпретаторе<span class="ez-toc-section-end"></span></h4>
<p>Интерпретатор – программное обеспечение небольшого размера, которое позволит набирать команды Lua и сразу же выполнять. Помогает останавливать выполнение файла при обнаружении ошибок.</p>
<p>Подойдет любой доступный интерпретатор Луа.</p>
<h4 class="wp-block-heading"><span class="ez-toc-section" id="%D0%90_%D1%87%D1%82%D0%BE_%D1%82%D0%B0%D0%BC_%D1%81_%D0%BA%D0%BE%D0%BC%D0%BF%D0%B8%D0%BB%D1%8F%D1%82%D0%BE%D1%80%D0%B0%D0%BC%D0%B8"></span>А что там с компиляторами<span class="ez-toc-section-end"></span></h4>
<p>Компилятор – специализированное программное обеспечение. Его знают все программисты и разработчики. Так называются утилиты, которые обрабатывают исходный код и преобразовывают его в машинный.</p>
<p>Компиляция позволяет исполнить имеющуюся кодификацию, проверить ее работоспособность и наличие ошибок. Для работы с Луа и его дальнейшим внедрением в другой язык программирования потребуется компилятор, совместимый с интерфейсами оных.</p>
<h5 class="wp-block-heading"><span class="ez-toc-section" id="%D0%94%D0%BB%D1%8F_Windows"></span>Для Windows<span class="ez-toc-section-end"></span></h5>
<p>Для того, чтобы работать с Луа в Windows, был создан специальный компилятор – SciTE. Чтобы его «поставить» в Виндовс, потребуется выполнить следующие манипуляции:</p>
<ol type="1"><li>Открыть официальный сайт SciTE.</li><li>Переключиться в раздел загрузки.</li><li>Выбрать желаемый файл и его версию.</li><li>Дождаться завершения операции.</li><li>Активировать исполняемый файл.</li><li>Завершить манипуляции, следуя подсказкам на экране.</li></ol>
<p>В ходе описанных действий пользователь получит LUA IDE. Действия можно проводить через командную строчку. Тогда предварительно осуществляется инициализация MinGW. Там происходит компиляция и установка для Windows.</p>
<h5 class="wp-block-heading"><span class="ez-toc-section" id="%D0%94%D0%BB%D1%8F_Linux"></span>Для Linux<span class="ez-toc-section-end"></span></h5>
<p>Linux – операционная система, которая стала пользоваться в последние годы определенным спросом. Хороший бесплатный конкурент коммерческим операционным системам. Но работать с ней «рядовому» пользователю бывает трудно.</p>
<p>Для сбора LUA потребуется открыть командную строку Линукс и выполнить следующую кодификацию:</p>
<figure class="wp-block-image size-large"><img decoding="async" width="328" height="69" src="https://otus.ru/journal/wp-content/uploads/2022/02/1-7.jpg" alt="Знакомство с LUA и его компилятором: что должен знать программист" class="wp-image-2899" srcset="https://otus.ru/journal/wp-content/uploads/2022/02/1-7.jpg 328w, https://otus.ru/journal/wp-content/uploads/2022/02/1-7-300x63.jpg 300w, https://otus.ru/journal/wp-content/uploads/2022/02/1-7-150x32.jpg 150w" sizes="(max-width: 328px) 100vw, 328px" /></figure>
<p>Теперь все готово к полноценной работе. Но это еще не все, о чем рекомендуется знать каждому разработчику.</p>
<h5 class="wp-block-heading"><span class="ez-toc-section" id="%D0%94%D0%BB%D1%8F_MacOS"></span>Для MacOS<span class="ez-toc-section-end"></span></h5>
<p>У компании Apple есть собственная компьютерная операционная система, которая имеет ряд особенностей. Но в ней тоже можно программировать на различных языках. Главное грамотно осуществить подготовку.</p>
<p>Компилятор Луа здесь собирается при помощи команды такого типа:</p>
<figure class="wp-block-image size-large"><img decoding="async" width="351" height="68" src="https://otus.ru/journal/wp-content/uploads/2022/02/2-7.jpg" alt="Знакомство с LUA и его компилятором: что должен знать программист" class="wp-image-2900" srcset="https://otus.ru/journal/wp-content/uploads/2022/02/2-7.jpg 351w, https://otus.ru/journal/wp-content/uploads/2022/02/2-7-300x58.jpg 300w, https://otus.ru/journal/wp-content/uploads/2022/02/2-7-150x29.jpg 150w" sizes="(max-width: 351px) 100vw, 351px" /></figure>
<p>Последняя строчка не является обязательной. Пользователь при помощи нее сможет провести тестирование «среды».</p>
<h5 class="wp-block-heading"><span class="ez-toc-section" id="IDE"></span>IDE<span class="ez-toc-section-end"></span></h5>
<p>Для Windows SciTE IDE Lua является IDE изначально предусмотренной разработчиками «способа общения». Для других платформ можно использовать альтернативное программное обеспечение от ZeroBrane Studio.</p>
<h5 class="wp-block-heading"><span class="ez-toc-section" id="%D0%91%D0%B5%D0%B7_%D1%83%D1%81%D1%82%D0%B0%D0%BD%D0%BE%D0%B2%D0%BA%D0%B8"></span>Без установки<span class="ez-toc-section-end"></span></h5>
<p>Изучение рассматриваемого варианта создания контента – это рассмотрение основных его особенностей и функций. Компилятор здесь стоит далеко не на самом последнем месте.</p>
<p>Если требуется проверить работу небольшой программы, можно не задумываться над установкой компилятора. Подобное ПО находится в свободном доступе в Сети.</p>
<p>Пример — <a href="https://www.toolfk.com/tools/online-run-lua.html" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer" class="wpel-icon-right">этот<span class="wpel-icon wpel-image wpel-icon-6"></span></a> и <a href="https://ideone.com/l/lua" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer" class="wpel-icon-right">этот<span class="wpel-icon wpel-image wpel-icon-6"></span></a> сайты. Здесь можно программировать и проверять имеющиеся кодификации в режиме реального времени. Отличительной чертой такого подхода является его компактность и кроссплатформенность.</p>
<h2 class="wp-block-heading"><span class="ez-toc-section" id="%D0%A1%D0%B8%D0%BD%D1%82%D0%B0%D0%BA%D1%81%D0%B8%D1%81"></span>Синтаксис<span class="ez-toc-section-end"></span></h2>
<p>Для того, чтобы программировать на LUA, важно изучить его синтаксис. Возможна работа в нескольких режимах:</p>
<ul><li>интерактивном;</li><li>по умолчанию.</li></ul>
<p>Записывать текст допустимо в свободном формате. Команды предусматривают разделение пробелом. Иногда для реализации поставленной задачи ставят точку с запятой (символ).</p>
<h2 class="wp-block-heading"><span class="ez-toc-section" id="%D0%9B%D0%B5%D0%BA%D1%81%D0%B8%D0%BA%D0%B0"></span>Лексика<span class="ez-toc-section-end"></span></h2>
<p>Обучение рассматриваемому языку программирования не доставит существенных хлопот ни новичкам, ни опытным разработчикам. Связано это с тем, что его авторы постарались сделать свое детище универсальным.</p>
<p>Рассматривая лексику, стоит запомнить следующие данные:</p>
<ol type="1"><li>Основной алфавит – это английский язык. Люди, хорошо его знающие, быстрее остальных разберутся в командах.</li><li>Строковые литералы могут использовать символы из иных ЯП.</li><li>Идентификаторы включают в себя: буквы, цифры, подчеркивание. Не могут начинаться с цифр.</li><li>Нельзя в качестве идентификатора использовать вариант ключевого слова.</li><li>Программеры рекомендуют отказаться от идентификаторов, начинающихся с подчеркивания.</li></ol>
<p>Последний момент обоснован тем, что подобные «нестандартные» символы применяются на практике для системных задач.</p>
<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="350" height="125" src="https://otus.ru/journal/wp-content/uploads/2022/02/3-6.jpg" alt="Знакомство с LUA и его компилятором: что должен знать программист" class="wp-image-2901" srcset="https://otus.ru/journal/wp-content/uploads/2022/02/3-6.jpg 350w, https://otus.ru/journal/wp-content/uploads/2022/02/3-6-300x107.jpg 300w, https://otus.ru/journal/wp-content/uploads/2022/02/3-6-150x54.jpg 150w" sizes="(max-width: 350px) 100vw, 350px" /></figure>
<p>Выше приведены слова, которые не применяются в процессе присваивания имен.</p>
<h2 class="wp-block-heading"><span class="ez-toc-section" id="%D0%A2%D0%B8%D0%BF%D1%8B_%D0%B4%D0%B0%D0%BD%D0%BD%D1%8B%D1%85"></span>Типы данных<span class="ez-toc-section-end"></span></h2>
<p>Язык, который мы изучаем — вариант с неявным динамическим обозначением типов информации. Переменная будет содержать значение того или иного вида. Значение выступает в роли аргумента, если осуществляется вызов функции. После этого оные отправляются на исходные позиции в виде результата.</p>
<p>Предусматриваются следующие типы данных:</p>
<ol type="1"><li>Булево. Boolean. Это – истина и ложь.</li><li>Nil – постой элемент. Указывает на отсутствие пригодного значения.</li><li>Число. Number. Это тип данных, представленный теми или иными числами. В основном вещественными.</li><li>Строка – string. Используется для того, чтобы описать символьные массивы. Преимущественно применяются 8-битные символы. Строки являются константами – они не меняются ни при каких обстоятельствах. Функции – полноправные объекты, позволяющие присваивать и передавать в параметрах интересующую информацию.</li><li>Thread. Тип, предусматривающий сопрограммы.</li><li>Userdata. Требуется для получения внешних сведений, полученных из других programming language.</li></ol>
<p>Углубленное изучение можно провести позже. В качестве «базы» предложенные сведения являются достаточными.</p>
<h2 class="wp-block-heading"><span class="ez-toc-section" id="%D0%9F%D1%80%D0%B8%D1%81%D0%B2%D0%B0%D0%B8%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5"></span>Присваивание<span class="ez-toc-section-end"></span></h2>
<p>В качестве оператора присваивания выступает символ «равно». Здесь допускается параллельное <a href="https://otus.ru/journal/prisvaivanie-v-programmirovanii/" data-wpel-link="internal">присваивание</a>, как и в иных ЯП. Можно составлять выражения типа:</p>
<p>a, b = b, a.</p>
<p>Не нужно обеспечивать полное соответствие числа переменных количеству имеющихся значений. А значить, пользоваться оператором присваивания будет проще, чем в аналогичных languages.</p>
<h2 class="wp-block-heading"><span class="ez-toc-section" id="%D0%A2%D0%B0%D0%B1%D0%BB%D0%B8%D1%87%D0%BD%D1%8B%D0%B5_%D0%B4%D0%B5%D0%BB%D0%B0"></span>Табличные дела<span class="ez-toc-section-end"></span></h2>
<p>Таблицы – это динамические ассоциативные массивы. Представлены парами «ключ-значение» в больших объемах. Единственный составной тип информации. Лежат в основе всех пользовательских БД.</p>
<p>Может наблюдаться следующее:</p>
<ul><li>Ключи представлены литералами.</li><li>В виде ключа допускается применение любого значения, исключая nil.</li><li>Если nil записывается в элементы, манипуляция будет рассматриваться в качестве удаления соответствующего объекта.</li><li>Создание – как и массивы, но в виде значений принимаются целые числа компонентов в множестве.</li><li>Списки – это массивы двухэлементных массивов, хранящий значения и ссылки на иные компоненты.</li></ul>
<p>Также стоит обратить внимание на то, что при многомерных массивах чаще всего встречается реализация по типу «массив массивов». Многогранные и сложные составляющие реализовываются посредством таблиц. Как именно – зависит от поставленной перед разработчиком задачи.</p>
<h3 class="wp-block-heading"><span class="ez-toc-section" id="%D0%9C%D0%B5%D1%82%D0%B0%D1%82%D0%B0%D0%B1%D0%BB%D0%B8%D1%86%D1%8B"></span>Метатаблицы<span class="ez-toc-section-end"></span></h3>
<p>Помогают в реализации большинства языков опций. Если выучить принципы работы с метатаблицами, удастся значительно упростить реализацию тех или иных задач.</p>
<p>Важно запомнить следующее:</p>
<ol type="1"><li>Метатаблица своими свойствами напоминает обычную таблицу с возможностью соответствия всем правилам и нормам.</li><li>Отвечает за хранение разнообразных метаданных типов и объектов. Здесь хранятся сведения, связанные с опциями и параметрами типов/объектов ЯП.</li><li>Используемые материалы могут применяться через интерпретатор, расширяя функциональные возможности ПО.</li><li>Может быть связана со значениями любого типа.</li><li>Допускается применение всех метаметодов для арифметических манипуляций.</li></ol>
<p>Рассматриваемый ЯП позволяет организовывать реализацию арифметики любых имеющихся объектов. Для этого осуществляется работа со стандартными и библиотечными метаметодами (через специальные библиотеки).</p>
<h2 class="wp-block-heading"><span class="ez-toc-section" id="%D0%9E%D1%81%D0%BE%D0%B1%D0%B5%D0%BD%D0%BD%D0%BE%D1%81%D1%82%D0%B8_%D1%80%D0%B5%D0%B0%D0%BB%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D0%B8"></span>Особенности реализации<span class="ez-toc-section-end"></span></h2>
<p>Изучение любого ЯП – это обучение базовым навыкам и принципам работы выбранного варианта. При должной подготовке и на начальных порах все это не доставит никаких существенных хлопот. Главное значить, с чего начинать.</p>
<p>Реализация Луа предусматривает:</p>
<ul><li>компилятор исходного кода (может быть запущен в режиме онлайн);</li><li>виртуальную машину.</li></ul>
<p>Обработка кода происходит так:</p>
<ol type="1"><li>Пользователь пишет кодификацию.</li><li>Происходит обработка оной компилятором и преобразование в байт-коды.</li><li>Виртуальная машина запускает байт-коды.</li><li>Последние не выступают в виде команды сетевой машины – они рассматриваются как команды виртуального процессора с разнообразными регистрами.</li></ol>
<p>Классическая ВМ предусматривает распределение памяти задействованного устройства совместно со сборкой ненужной информации. Здесь имеет место единый строковый пул, который снижает требования к расходу памяти, необходимой для хранения строчек.</p>
<h3 class="wp-block-heading"><span class="ez-toc-section" id="%D0%95%D1%81%D0%BB%D0%B8_%D0%B5%D1%81%D1%82%D1%8C_%D0%BE%D1%88%D0%B8%D0%B1%D0%BA%D0%B8"></span>Если есть ошибки<span class="ez-toc-section-end"></span></h3>
<p>Выучить язык программирования LUA – это не значит, что кодификации будут функционировать без ошибок. Корректировки иногда необходимы даже контенту от опытных разработчиков. Главное вовремя обнаружить проблемное место и внести те или иные изменения.</p>
<p>Если при обработке программной кодификации в процессе компиляции обнаруживается ошибка (или если исполняется ее часть), система передаст управление хосту. Последний сможет увидеть ошибку и предпринять определенные меры. Пример – сообщить об обнаруженной неполадке.</p>
<h2 class="wp-block-heading"><span class="ez-toc-section" id="%D0%9A%D0%B0%D0%BA_%D0%BF%D0%BE%D0%BB%D1%83%D1%87%D0%B8%D1%82%D1%8C_%D0%BE%D0%B1%D1%80%D0%B0%D0%B7%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5_%D0%B8_%D0%BB%D1%83%D1%87%D1%88%D0%B5_%D1%80%D0%B0%D0%B7%D0%B1%D0%B8%D1%80%D0%B0%D1%82%D1%8C%D1%81%D1%8F_%D0%B2_%D0%AF%D0%9F"></span>Как получить образование и лучше разбираться в ЯП<span class="ez-toc-section-end"></span></h2>
<p>Выучить ЯП можно несколькими способами. Все зависит от того, чего именно хочет добиться пользователь:</p>
<ol type="1"><li>Обращение в ВУЗ. Вариант для тех, кто выпустился из школы и хочет полноценно работать программистом. Отнимает много средств, времени и сил. По выпуску выдается диплом государственного образца. Здесь затрагиваются самые известные ЯП.</li><li>Поступление в техникум. Отличное начало для старта в мире разработки. Обучение длиться меньше, чем в ВУЗе. По выпуску студент получит диплом о среднем профессиональном образовании. Этот документ поможет при поступлении в ВУЗ. Здесь достаточно много практики, но большинство ЯП не затрагиваются.</li><li>Самообразование. Никаких документов, подтверждающих знания, не будет. Человек полностью самостоятельно старается познать ЯП. Зато такой подход может не требовать вообще никаких вложений – в Сети полно необходимой информации и туториалов. Часто самообразование используется людьми с хорошим самоконтролем. Позволяет больше практиковаться и полностью собственными силами контролировать процедуру обучения.</li></ol>
<p>Но самым современным, простым и эффективным вариантом является обучение на специализированных курсах для новичков и продвинутых разработчиков. Там объяснят, что такое for i, как работать с компиляторами и многое другое. Обучение длится до года. В конце выдается электронный сертификат.</p>
<p><em>Хотите освоить современную IT-специальность? Огромный выбор курсов по востребованным IT-направлениям есть в <a href="https://otus.ru/?utm_source=oj" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer" class="wpel-icon-right">Otus<span class="wpel-icon wpel-image wpel-icon-6"></span></a>!</em></p>
</div><!-- .post-content -->
<div class="the-post-foot cf">
<div class="tag-share cf">
<div class="post-tags"><a href="https://otus.ru/journal/tag/lua/" rel="tag" data-wpel-link="internal">LUA</a></div>
<div class="post-share">
<div class="post-share-icons cf">
<span class="counters">
</span>
<a href="https://www.facebook.com/sharer.php?u=https%3A%2F%2Fotus.ru%2Fjournal%2Fznakomstvo-s-lua-i-ego-kompilyatorom-chto-dolzhen-znat-programmist%2F" class="link facebook wpel-icon-right" target="_blank" title="Share on Facebook" data-wpel-link="external" rel="nofollow external noopener noreferrer"><i class="fa fa-facebook"></i><span class="wpel-icon wpel-image wpel-icon-6"></span></a>
<a href="https://twitter.com/intent/tweet?url=https%3A%2F%2Fotus.ru%2Fjournal%2Fznakomstvo-s-lua-i-ego-kompilyatorom-chto-dolzhen-znat-programmist%2F&text=%D0%97%D0%BD%D0%B0%D0%BA%D0%BE%D0%BC%D1%81%D1%82%D0%B2%D0%BE%20%D1%81%20LUA%20%D0%B8%20%D0%B5%D0%B3%D0%BE%20%D0%BA%D0%BE%D0%BC%D0%BF%D0%B8%D0%BB%D1%8F%D1%82%D0%BE%D1%80%D0%BE%D0%BC%3A%20%D1%87%D1%82%D0%BE%20%D0%B4%D0%BE%D0%BB%D0%B6%D0%B5%D0%BD%20%D0%B7%D0%BD%D0%B0%D1%82%D1%8C%20%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%81%D1%82" class="link twitter wpel-icon-right" target="_blank" title="Share on Twitter" data-wpel-link="external" rel="nofollow external noopener noreferrer"><i class="fa fa-twitter"></i><span class="wpel-icon wpel-image wpel-icon-6"></span></a>
<a href="https://www.linkedin.com/shareArticle?mini=true&url=https%3A%2F%2Fotus.ru%2Fjournal%2Fznakomstvo-s-lua-i-ego-kompilyatorom-chto-dolzhen-znat-programmist%2F" class="link linkedin wpel-icon-right" target="_blank" title="LinkedIn" data-wpel-link="external" rel="nofollow external noopener noreferrer"><i class="fa fa-linkedin"></i><span class="wpel-icon wpel-image wpel-icon-6"></span></a>
<a href="https://pinterest.com/pin/create/button/?url=https%3A%2F%2Fotus.ru%2Fjournal%2Fznakomstvo-s-lua-i-ego-kompilyatorom-chto-dolzhen-znat-programmist%2F&media=https%3A%2F%2Fotus.ru%2Fjournal%2Fwp-content%2Fuploads%2F2022%2F02%2Foj-1080x720-10.png&description=%D0%97%D0%BD%D0%B0%D0%BA%D0%BE%D0%BC%D1%81%D1%82%D0%B2%D0%BE%20%D1%81%20LUA%20%D0%B8%20%D0%B5%D0%B3%D0%BE%20%D0%BA%D0%BE%D0%BC%D0%BF%D0%B8%D0%BB%D1%8F%D1%82%D0%BE%D1%80%D0%BE%D0%BC%3A%20%D1%87%D1%82%D0%BE%20%D0%B4%D0%BE%D0%BB%D0%B6%D0%B5%D0%BD%20%D0%B7%D0%BD%D0%B0%D1%82%D1%8C%20%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%81%D1%82" class="link pinterest wpel-icon-right" target="_blank" title="Pinterest" data-wpel-link="external" rel="nofollow external noopener noreferrer"><i class="fa fa-pinterest-p"></i><span class="wpel-icon wpel-image wpel-icon-6"></span></a>
</div>
</div>
</div>
</div>
<div class="post-nav">
<div class="post previous cf">
<a href="https://otus.ru/journal/znakomstvo-s-linux-ustanovka-osobennosti-principy-raboty/" title="Prev Post" class="nav-icon" data-wpel-link="internal">
<i class="fa fa-angle-left"></i>
</a>
<span class="content">
<a href="https://otus.ru/journal/znakomstvo-s-linux-ustanovka-osobennosti-principy-raboty/" class="image-link" rel="previous" data-wpel-link="internal">
<img width="150" height="100" src="data:image/svg+xml,%3Csvg%20viewBox%3D%270%200%20150%20100%27%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%3E%3C%2Fsvg%3E" class="attachment-thumbnail size-thumbnail lazyload wp-post-image" alt="Знакомство с Linux: установка, особенности, принципы работы" decoding="async" loading="lazy" data-srcset="https://otus.ru/journal/wp-content/uploads/2022/02/oj-1080x720-9-150x100.png 150w, https://otus.ru/journal/wp-content/uploads/2022/02/oj-1080x720-9-300x200.png 300w, https://otus.ru/journal/wp-content/uploads/2022/02/oj-1080x720-9-1024x683.png 1024w, https://otus.ru/journal/wp-content/uploads/2022/02/oj-1080x720-9-768x512.png 768w, https://otus.ru/journal/wp-content/uploads/2022/02/oj-1080x720-9-270x180.png 270w, https://otus.ru/journal/wp-content/uploads/2022/02/oj-1080x720-9-770x515.png 770w, https://otus.ru/journal/wp-content/uploads/2022/02/oj-1080x720-9-370x245.png 370w, https://otus.ru/journal/wp-content/uploads/2022/02/oj-1080x720-9.png 1080w" data-src="https://otus.ru/journal/wp-content/uploads/2022/02/oj-1080x720-9-150x100.png" data-sizes="(max-width: 150px) 100vw, 150px" title="Знакомство с Linux: установка, особенности, принципы работы" /> </a>
<div class="post-meta">
<span class="label">Prev Post</span>
<div class="post-meta post-meta-b">
<h2 class="post-title">
<a href="https://otus.ru/journal/znakomstvo-s-linux-ustanovka-osobennosti-principy-raboty/" data-wpel-link="internal">Знакомство с Linux: установка, особенности, принципы работы</a>
</h2>
<div class="below">
<a href="https://otus.ru/journal/znakomstvo-s-linux-ustanovka-osobennosti-principy-raboty/" class="meta-item date-link" data-wpel-link="internal"><time class="post-date" datetime="2022-02-04T18:08:49+00:00">4 февраля, 2022</time></a>
<span class="meta-sep"></span>
<span class="meta-item read-time">10 Mins Read</span>
</div>
</div> </div>
</span>
</div>
<div class="post next cf">
<a href="https://otus.ru/journal/machine-learning-engineer-kto-eto-chem-zanimaetsya-kak-stat-specialistom/" title="Next Post" class="nav-icon" data-wpel-link="internal">
<i class="fa fa-angle-right"></i>
</a>
<span class="content">
<a href="https://otus.ru/journal/machine-learning-engineer-kto-eto-chem-zanimaetsya-kak-stat-specialistom/" class="image-link" rel="next" data-wpel-link="internal">
<img width="150" height="100" src="data:image/svg+xml,%3Csvg%20viewBox%3D%270%200%20150%20100%27%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%3E%3C%2Fsvg%3E" class="attachment-thumbnail size-thumbnail lazyload wp-post-image" alt="Machine Learning Engineer: кто это, чем занимается, как стать специалистом" decoding="async" loading="lazy" data-srcset="https://otus.ru/journal/wp-content/uploads/2022/02/oj-1080x720-11-150x100.png 150w, https://otus.ru/journal/wp-content/uploads/2022/02/oj-1080x720-11-300x200.png 300w, https://otus.ru/journal/wp-content/uploads/2022/02/oj-1080x720-11-1024x683.png 1024w, https://otus.ru/journal/wp-content/uploads/2022/02/oj-1080x720-11-768x512.png 768w, https://otus.ru/journal/wp-content/uploads/2022/02/oj-1080x720-11-270x180.png 270w, https://otus.ru/journal/wp-content/uploads/2022/02/oj-1080x720-11-770x515.png 770w, https://otus.ru/journal/wp-content/uploads/2022/02/oj-1080x720-11-370x245.png 370w, https://otus.ru/journal/wp-content/uploads/2022/02/oj-1080x720-11.png 1080w" data-src="https://otus.ru/journal/wp-content/uploads/2022/02/oj-1080x720-11-150x100.png" data-sizes="(max-width: 150px) 100vw, 150px" title="Machine Learning Engineer: кто это, чем занимается, как стать специалистом" /> </a>
<div class="post-meta">
<span class="label">Next Post</span>
<div class="post-meta post-meta-b">
<h2 class="post-title">
<a href="https://otus.ru/journal/machine-learning-engineer-kto-eto-chem-zanimaetsya-kak-stat-specialistom/" data-wpel-link="internal">Machine Learning Engineer: кто это, чем занимается, как стать специалистом</a>
</h2>
<div class="below">
<a href="https://otus.ru/journal/machine-learning-engineer-kto-eto-chem-zanimaetsya-kak-stat-specialistom/" class="meta-item date-link" data-wpel-link="internal"><time class="post-date" datetime="2022-02-04T18:36:04+00:00">4 февраля, 2022</time></a>
<span class="meta-sep"></span>
<span class="meta-item read-time">10 Mins Read</span>
</div>
</div> </div>
</span>
</div>
</div>
<section class="related-posts grid-3">
<h4 class="section-head"><span class="title">Читать ещё</span></h4>
<div class="ts-row posts cf">
<article class="post col-4">
<a href="https://otus.ru/journal/uroven-gotovnosti-cto-k-2026/" title="Уровень готовности CTO к 2026" class="image-link" data-wpel-link="internal">
<img width="270" height="180" src="data:image/svg+xml,%3Csvg%20viewBox%3D%270%200%20270%20180%27%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%3E%3C%2Fsvg%3E" class="image lazyload wp-post-image" alt="Уровень готовности CTO к 2026" title="Уровень готовности CTO к 2026" decoding="async" loading="lazy" data-srcset="https://otus.ru/journal/wp-content/uploads/2025/11/oj-1080x720-kopiya-3-270x180.jpg 270w, https://otus.ru/journal/wp-content/uploads/2025/11/oj-1080x720-kopiya-3-770x515.jpg 770w, https://otus.ru/journal/wp-content/uploads/2025/11/oj-1080x720-kopiya-3-370x245.jpg 370w" data-src="https://otus.ru/journal/wp-content/uploads/2025/11/oj-1080x720-kopiya-3-270x180.jpg" data-sizes="(max-width: 270px) 100vw, 270px" /> </a>
<div class="content">
<h3 class="post-title"><a href="https://otus.ru/journal/uroven-gotovnosti-cto-k-2026/" class="post-link" data-wpel-link="internal">Уровень готовности CTO к 2026</a></h3>
<div class="post-meta">
<time class="post-date" datetime="2025-11-16T19:50:59+00:00">16 ноября, 2025</time>
</div>
</div>
</article >
<article class="post col-4">
<a href="https://otus.ru/journal/novye-uroki-noyabrya-tolko-top-temy-po-programmirovaniju/" title="Новые уроки ноября: только топ-темы по программированию" class="image-link" data-wpel-link="internal">
<img width="270" height="180" src="data:image/svg+xml,%3Csvg%20viewBox%3D%270%200%20270%20180%27%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%3E%3C%2Fsvg%3E" class="image lazyload wp-post-image" alt="Новые уроки ноября: только топ-темы по программированию" title="Новые уроки ноября: только топ-темы по программированию" decoding="async" loading="lazy" data-srcset="https://otus.ru/journal/wp-content/uploads/2025/11/oj-1080x720-kopiya-2-270x180.jpg 270w, https://otus.ru/journal/wp-content/uploads/2025/11/oj-1080x720-kopiya-2-770x515.jpg 770w, https://otus.ru/journal/wp-content/uploads/2025/11/oj-1080x720-kopiya-2-370x245.jpg 370w" data-src="https://otus.ru/journal/wp-content/uploads/2025/11/oj-1080x720-kopiya-2-270x180.jpg" data-sizes="(max-width: 270px) 100vw, 270px" /> </a>
<div class="content">
<h3 class="post-title"><a href="https://otus.ru/journal/novye-uroki-noyabrya-tolko-top-temy-po-programmirovaniju/" class="post-link" data-wpel-link="internal">Новые уроки ноября: только топ-темы по программированию</a></h3>
<div class="post-meta">
<time class="post-date" datetime="2025-11-09T23:24:11+00:00">9 ноября, 2025</time>
</div>
</div>
</article >
<article class="post col-4">
<a href="https://otus.ru/journal/schjot-idjot-na-chasy/" title="Счёт идёт на часы" class="image-link" data-wpel-link="internal">
<img width="270" height="180" src="data:image/svg+xml,%3Csvg%20viewBox%3D%270%200%20270%20180%27%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%3E%3C%2Fsvg%3E" class="image lazyload wp-post-image" alt="Счёт идёт на часы" title="Счёт идёт на часы" decoding="async" loading="lazy" data-srcset="https://otus.ru/journal/wp-content/uploads/2025/10/oj-1080x720-kopiya-7-270x180.png 270w, https://otus.ru/journal/wp-content/uploads/2025/10/oj-1080x720-kopiya-7-770x515.png 770w, https://otus.ru/journal/wp-content/uploads/2025/10/oj-1080x720-kopiya-7-370x245.png 370w" data-src="https://otus.ru/journal/wp-content/uploads/2025/10/oj-1080x720-kopiya-7-270x180.png" data-sizes="(max-width: 270px) 100vw, 270px" /> </a>
<div class="content">
<h3 class="post-title"><a href="https://otus.ru/journal/schjot-idjot-na-chasy/" class="post-link" data-wpel-link="internal">Счёт идёт на часы</a></h3>
<div class="post-meta">
<time class="post-date" datetime="2025-10-30T15:04:59+00:00">30 октября, 2025</time>
</div>
</div>
</article >
</div>
</section>
</article> <!-- .the-post -->
</div>
<aside class="col-4 sidebar">
<div class="inner">
<ul>
<li id="search-2" class="widget widget_search"><h5 class="widget-title"><span>Поиск по блогу</span></h5>
<form method="get" class="search-form" action="https://otus.ru/journal/">
<label>
<span class="screen-reader-text">Search for:</span>
<input type="search" class="search-field" placeholder="Введите запрос и нажмите Enter" value="" name="s" title="Search for:" />
</label>
<button type="submit" class="search-submit"><i class="fa fa-search"></i></button>
</form>
</li>
<li id="tag_cloud-5" class="widget widget_tag_cloud"><h5 class="widget-title"><span>Метки</span></h5><div class="tagcloud"><a href="https://otus.ru/journal/tag/android-2/" class="tag-cloud-link tag-link-74 tag-link-position-1" style="font-size: 12.472222222222pt;" aria-label="Android (34 элемента)" data-wpel-link="internal">Android</a>
<a href="https://otus.ru/journal/tag/c-3/" class="tag-cloud-link tag-link-91 tag-link-position-2" style="font-size: 10.916666666667pt;" aria-label="C (23 элемента)" data-wpel-link="internal">C</a>
<a href="https://otus.ru/journal/tag/c-2/" class="tag-cloud-link tag-link-81 tag-link-position-3" style="font-size: 12.666666666667pt;" aria-label="C# (35 элементов)" data-wpel-link="internal">C#</a>
<a href="https://otus.ru/journal/tag/c/" class="tag-cloud-link tag-link-20 tag-link-position-4" style="font-size: 12.472222222222pt;" aria-label="c++ (34 элемента)" data-wpel-link="internal">c++</a>
<a href="https://otus.ru/journal/tag/computer-science/" class="tag-cloud-link tag-link-209 tag-link-position-5" style="font-size: 15.972222222222pt;" aria-label="computer science (78 элементов)" data-wpel-link="internal">computer science</a>
<a href="https://otus.ru/journal/tag/css/" class="tag-cloud-link tag-link-288 tag-link-position-6" style="font-size: 8.6805555555556pt;" aria-label="CSS (13 элементов)" data-wpel-link="internal">CSS</a>
<a href="https://otus.ru/journal/tag/data-science/" class="tag-cloud-link tag-link-151 tag-link-position-7" style="font-size: 8pt;" aria-label="Data Science (11 элементов)" data-wpel-link="internal">Data Science</a>
<a href="https://otus.ru/journal/tag/devops/" class="tag-cloud-link tag-link-98 tag-link-position-8" style="font-size: 10.138888888889pt;" aria-label="devops (19 элементов)" data-wpel-link="internal">devops</a>
<a href="https://otus.ru/journal/tag/docker/" class="tag-cloud-link tag-link-143 tag-link-position-9" style="font-size: 8.2916666666667pt;" aria-label="Docker (12 элементов)" data-wpel-link="internal">Docker</a>
<a href="https://otus.ru/journal/tag/gamedev/" class="tag-cloud-link tag-link-25 tag-link-position-10" style="font-size: 11.694444444444pt;" aria-label="gamedev (28 элементов)" data-wpel-link="internal">gamedev</a>
<a href="https://otus.ru/journal/tag/hr/" class="tag-cloud-link tag-link-103 tag-link-position-11" style="font-size: 8pt;" aria-label="hr (11 элементов)" data-wpel-link="internal">hr</a>
<a href="https://otus.ru/journal/tag/html/" class="tag-cloud-link tag-link-217 tag-link-position-12" style="font-size: 11.208333333333pt;" aria-label="HTML (25 элементов)" data-wpel-link="internal">HTML</a>
<a href="https://otus.ru/journal/tag/ios/" class="tag-cloud-link tag-link-101 tag-link-position-13" style="font-size: 8.9722222222222pt;" aria-label="iOS (14 элементов)" data-wpel-link="internal">iOS</a>
<a href="https://otus.ru/journal/tag/it/" class="tag-cloud-link tag-link-50 tag-link-position-14" style="font-size: 10.527777777778pt;" aria-label="IT (21 элемент)" data-wpel-link="internal">IT</a>
<a href="https://otus.ru/journal/tag/java/" class="tag-cloud-link tag-link-75 tag-link-position-15" style="font-size: 15.680555555556pt;" aria-label="Java (73 элемента)" data-wpel-link="internal">Java</a>
<a href="https://otus.ru/journal/tag/javascript/" class="tag-cloud-link tag-link-83 tag-link-position-16" style="font-size: 14.319444444444pt;" aria-label="JavaScript (53 элемента)" data-wpel-link="internal">JavaScript</a>
<a href="https://otus.ru/journal/tag/linux/" class="tag-cloud-link tag-link-141 tag-link-position-17" style="font-size: 11.888888888889pt;" aria-label="Linux (29 элементов)" data-wpel-link="internal">Linux</a>
<a href="https://otus.ru/journal/tag/machine-learning/" class="tag-cloud-link tag-link-167 tag-link-position-18" style="font-size: 8.6805555555556pt;" aria-label="Machine Learning (13 элементов)" data-wpel-link="internal">Machine Learning</a>
<a href="https://otus.ru/journal/tag/otus-book/" class="tag-cloud-link tag-link-261 tag-link-position-19" style="font-size: 9.9444444444444pt;" aria-label="otus book (18 элементов)" data-wpel-link="internal">otus book</a>
<a href="https://otus.ru/journal/tag/php/" class="tag-cloud-link tag-link-45 tag-link-position-20" style="font-size: 10.527777777778pt;" aria-label="PHP (21 элемент)" data-wpel-link="internal">PHP</a>
<a href="https://otus.ru/journal/tag/python/" class="tag-cloud-link tag-link-27 tag-link-position-21" style="font-size: 16.944444444444pt;" aria-label="Python (99 элементов)" data-wpel-link="internal">Python</a>
<a href="https://otus.ru/journal/tag/qa/" class="tag-cloud-link tag-link-155 tag-link-position-22" style="font-size: 11.402777777778pt;" aria-label="qa (26 элементов)" data-wpel-link="internal">qa</a>
<a href="https://otus.ru/journal/tag/sql/" class="tag-cloud-link tag-link-38 tag-link-position-23" style="font-size: 12.861111111111pt;" aria-label="SQL (37 элементов)" data-wpel-link="internal">SQL</a>
<a href="https://otus.ru/journal/tag/team-lead/" class="tag-cloud-link tag-link-364 tag-link-position-24" style="font-size: 9.9444444444444pt;" aria-label="team lead (18 элементов)" data-wpel-link="internal">team lead</a>
<a href="https://otus.ru/journal/tag/unity/" class="tag-cloud-link tag-link-24 tag-link-position-25" style="font-size: 8pt;" aria-label="unity (11 элементов)" data-wpel-link="internal">unity</a>
<a href="https://otus.ru/journal/tag/algoritmy/" class="tag-cloud-link tag-link-30 tag-link-position-26" style="font-size: 9.9444444444444pt;" aria-label="Алгоритмы (18 элементов)" data-wpel-link="internal">Алгоритмы</a>
<a href="https://otus.ru/journal/tag/bazy-dannyh/" class="tag-cloud-link tag-link-40 tag-link-position-27" style="font-size: 10.138888888889pt;" aria-label="Базы данных (19 элементов)" data-wpel-link="internal">Базы данных</a>
<a href="https://otus.ru/journal/tag/matematika/" class="tag-cloud-link tag-link-44 tag-link-position-28" style="font-size: 10.916666666667pt;" aria-label="Математика (23 элемента)" data-wpel-link="internal">Математика</a>
<a href="https://otus.ru/journal/tag/arhitektura-po/" class="tag-cloud-link tag-link-10 tag-link-position-29" style="font-size: 9.4583333333333pt;" aria-label="архитектура ПО (16 элементов)" data-wpel-link="internal">архитектура ПО</a>
<a href="https://otus.ru/journal/tag/bazy-dannyh-2/" class="tag-cloud-link tag-link-251 tag-link-position-30" style="font-size: 10.138888888889pt;" aria-label="базы данных (19 элементов)" data-wpel-link="internal">базы данных</a>
<a href="https://otus.ru/journal/tag/vebinar/" class="tag-cloud-link tag-link-201 tag-link-position-31" style="font-size: 13.930555555556pt;" aria-label="вебинар (48 элементов)" data-wpel-link="internal">вебинар</a>
<a href="https://otus.ru/journal/tag/dajdzhest/" class="tag-cloud-link tag-link-308 tag-link-position-32" style="font-size: 10.722222222222pt;" aria-label="дайджест (22 элемента)" data-wpel-link="internal">дайджест</a>
<a href="https://otus.ru/journal/tag/zapis-vebinara/" class="tag-cloud-link tag-link-226 tag-link-position-33" style="font-size: 14.902777777778pt;" aria-label="запись вебинара (61 элемент)" data-wpel-link="internal">запись вебинара</a>
<a href="https://otus.ru/journal/tag/zapis-uroka/" class="tag-cloud-link tag-link-272 tag-link-position-34" style="font-size: 16.069444444444pt;" aria-label="запись урока (80 элементов)" data-wpel-link="internal">запись урока</a>
<a href="https://otus.ru/journal/tag/informacionnaya-bezopasnost/" class="tag-cloud-link tag-link-232 tag-link-position-35" style="font-size: 10.138888888889pt;" aria-label="информационная безопасность (19 элементов)" data-wpel-link="internal">информационная безопасность</a>
<a href="https://otus.ru/journal/tag/karera-v-it/" class="tag-cloud-link tag-link-292 tag-link-position-36" style="font-size: 9.9444444444444pt;" aria-label="карьера в IT (18 элементов)" data-wpel-link="internal">карьера в IT</a>
<a href="https://otus.ru/journal/tag/podborka/" class="tag-cloud-link tag-link-7 tag-link-position-37" style="font-size: 12.666666666667pt;" aria-label="подборка (35 элементов)" data-wpel-link="internal">подборка</a>
<a href="https://otus.ru/journal/tag/podborka-statej/" class="tag-cloud-link tag-link-219 tag-link-position-38" style="font-size: 15.777777777778pt;" aria-label="подборка статей (75 элементов)" data-wpel-link="internal">подборка статей</a>
<a href="https://otus.ru/journal/tag/programmirovanie/" class="tag-cloud-link tag-link-65 tag-link-position-39" style="font-size: 22pt;" aria-label="программирование (332 элемента)" data-wpel-link="internal">программирование</a>
<a href="https://otus.ru/journal/tag/proekt/" class="tag-cloud-link tag-link-321 tag-link-position-40" style="font-size: 11.888888888889pt;" aria-label="проект (29 элементов)" data-wpel-link="internal">проект</a>
<a href="https://otus.ru/journal/tag/proektnaya-rabota/" class="tag-cloud-link tag-link-310 tag-link-position-41" style="font-size: 11.597222222222pt;" aria-label="проектная работа (27 элементов)" data-wpel-link="internal">проектная работа</a>
<a href="https://otus.ru/journal/tag/seti/" class="tag-cloud-link tag-link-181 tag-link-position-42" style="font-size: 12.958333333333pt;" aria-label="сети (38 элементов)" data-wpel-link="internal">сети</a>
<a href="https://otus.ru/journal/tag/testirovanie/" class="tag-cloud-link tag-link-69 tag-link-position-43" style="font-size: 13.930555555556pt;" aria-label="тестирование (48 элементов)" data-wpel-link="internal">тестирование</a>
<a href="https://otus.ru/journal/tag/upravlenie-komandoj/" class="tag-cloud-link tag-link-63 tag-link-position-44" style="font-size: 11.694444444444pt;" aria-label="управление командой (28 элементов)" data-wpel-link="internal">управление командой</a>
<a href="https://otus.ru/journal/tag/habr-2/" class="tag-cloud-link tag-link-203 tag-link-position-45" style="font-size: 13.930555555556pt;" aria-label="хабр (48 элементов)" data-wpel-link="internal">хабр</a></div>
</li>
</ul>
</div>
</aside>
</div> <!-- .ts-row -->
</div> <!-- .main -->
<footer class="main-footer dark bold">
<section class="lower-footer cf">
<div class="wrap">
<div class="links">
<div class="menu-menju-navykov-container"><ul id="menu-menju-navykov-1" class="menu"><li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-10413"><a href="https://otus.ru/categories/programming/" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer" class="wpel-icon-right">Программирование<span class="wpel-icon wpel-image wpel-icon-6"></span></a></li>
<li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-10414"><a href="https://otus.ru/categories/architecture/" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer" class="wpel-icon-right">Архитектура<span class="wpel-icon wpel-image wpel-icon-6"></span></a></li>
<li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-10415"><a href="https://otus.ru/categories/operations/" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer" class="wpel-icon-right">Инфраструктура<span class="wpel-icon wpel-image wpel-icon-6"></span></a></li>
<li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-10416"><a href="https://otus.ru/categories/information-security-courses/" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer" class="wpel-icon-right">Безопасность<span class="wpel-icon wpel-image wpel-icon-6"></span></a></li>
<li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-10417"><a href="https://otus.ru/categories/data-science/" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer" class="wpel-icon-right">Data Science<span class="wpel-icon wpel-image wpel-icon-6"></span></a></li>
<li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-10418"><a href="https://otus.ru/categories/gamedev/" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer" class="wpel-icon-right">GameDev<span class="wpel-icon wpel-image wpel-icon-6"></span></a></li>
<li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-10419"><a href="https://otus.ru/categories/marketing-business/" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer" class="wpel-icon-right">Управление<span class="wpel-icon wpel-image wpel-icon-6"></span></a></li>
<li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-10420"><a href="https://otus.ru/categories/analytics/" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer" class="wpel-icon-right">Аналитика и анализ<span class="wpel-icon wpel-image wpel-icon-6"></span></a></li>
<li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-10421"><a href="https://otus.ru/categories/testing/" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer" class="wpel-icon-right">Тестирование<span class="wpel-icon wpel-image wpel-icon-6"></span></a></li>
</ul></div> </div>
<p class="copyright"> © 2015-2026 OTUS </p>
<div class="to-top">
<a href="#" class="back-to-top"><i class="fa fa-angle-up"></i> Top</a>
</div>
</div>
</section>
</footer>
</div> <!-- .main-wrap -->
<div class="mobile-menu-container off-canvas" id="mobile-menu">
<a href="#" class="close"><i class="fa fa-times"></i></a>
<div class="logo">
</div>
<ul class="mobile-menu"></ul>
</div>
<div class="search-modal-wrap">
<div class="search-modal-box" role="dialog" aria-modal="true">
<form method="get" class="search-form" action="https://otus.ru/journal/">
<input type="search" class="search-field" name="s" placeholder="Search..." value="" required />
<button type="submit" class="search-submit visuallyhidden">Submit</button>
<p class="message">
Type above and press <em>Enter</em> to search. Press <em>Esc</em> to cancel. </p>
</form>
</div>
</div>
<script type="text/javascript" src="https://otus.ru/journal/wp-content/plugins/clearfy/components/comments-plus/assets/js/url-span.js" id="wbcr-comments-plus-url-span-js"></script>
<script type="text/javascript" id="ez-toc-scroll-scriptjs-js-extra">
/* <![CDATA[ */
var eztoc_smooth_local = {"scroll_offset":"30"};
/* ]]> */
</script>
<script type="text/javascript" src="https://otus.ru/journal/wp-content/plugins/easy-table-of-contents/assets/js/smooth_scroll.min.js" id="ez-toc-scroll-scriptjs-js"></script>
<script type="text/javascript" src="https://otus.ru/journal/wp-content/plugins/easy-table-of-contents/vendor/js-cookie/js.cookie.min.js" id="ez-toc-js-cookie-js"></script>
<script type="text/javascript" src="https://otus.ru/journal/wp-content/plugins/easy-table-of-contents/vendor/sticky-kit/jquery.sticky-kit.min.js" id="ez-toc-jquery-sticky-kit-js"></script>
<script type="text/javascript" id="ez-toc-js-js-extra">
/* <![CDATA[ */
var ezTOC = {"smooth_scroll":"1","visibility_hide_by_default":"","scroll_offset":"30","fallbackIcon":"<span class=\"\"><span class=\"eztoc-hide\" style=\"display:none;\">Toggle<\/span><span class=\"ez-toc-icon-toggle-span\"><svg style=\"fill: #999;color:#999\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" class=\"list-377408\" width=\"20px\" height=\"20px\" viewBox=\"0 0 24 24\" fill=\"none\"><path d=\"M6 6H4v2h2V6zm14 0H8v2h12V6zM4 11h2v2H4v-2zm16 0H8v2h12v-2zM4 16h2v2H4v-2zm16 0H8v2h12v-2z\" fill=\"currentColor\"><\/path><\/svg><svg style=\"fill: #999;color:#999\" class=\"arrow-unsorted-368013\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"10px\" height=\"10px\" viewBox=\"0 0 24 24\" version=\"1.2\" baseProfile=\"tiny\"><path d=\"M18.2 9.3l-6.2-6.3-6.2 6.3c-.2.2-.3.4-.3.7s.1.5.3.7c.2.2.4.3.7.3h11c.3 0 .5-.1.7-.3.2-.2.3-.5.3-.7s-.1-.5-.3-.7zM5.8 14.7l6.2 6.3 6.2-6.3c.2-.2.3-.5.3-.7s-.1-.5-.3-.7c-.2-.2-.4-.3-.7-.3h-11c-.3 0-.5.1-.7.3-.2.2-.3.5-.3.7s.1.5.3.7z\"\/><\/svg><\/span><\/span>"};
/* ]]> */
</script>
<script type="text/javascript" src="https://otus.ru/journal/wp-content/plugins/easy-table-of-contents/assets/js/front.min.js" id="ez-toc-js-js"></script>
<script type="text/javascript" src="https://otus.ru/journal/wp-content/themes/contentberg/js/custom-script.js" id="custom-script-js"></script>
<script type="text/javascript" src="https://otus.ru/journal/wp-content/themes/contentberg/js/magnific-popup.js" id="magnific-popup-js"></script>
<script type="text/javascript" src="https://otus.ru/journal/wp-content/themes/contentberg/js/jquery.fitvids.js" id="jquery-fitvids-js"></script>
<script type="text/javascript" src="https://otus.ru/journal/wp-includes/js/imagesloaded.min.js" id="imagesloaded-js"></script>
<script type="text/javascript" src="https://otus.ru/journal/wp-content/themes/contentberg/js/object-fit-images.js" id="object-fit-images-js"></script>
<script type="text/javascript" id="contentberg-theme-js-extra">
/* <![CDATA[ */
var Bunyad = {"custom_ajax_url":"\/journal\/znakomstvo-s-lua-i-ego-kompilyatorom-chto-dolzhen-znat-programmist\/"};
/* ]]> */
</script>
<script type="text/javascript" src="https://otus.ru/journal/wp-content/themes/contentberg/js/theme.js" id="contentberg-theme-js"></script>
<script type="text/javascript" src="https://otus.ru/journal/wp-content/themes/contentberg/js/theia-sticky-sidebar.js" id="theia-sticky-sidebar-js"></script>
<script type="text/javascript" src="https://otus.ru/journal/wp-content/themes/contentberg/js/jquery.slick.js" id="jquery-slick-js"></script>
<script type="text/javascript" src="https://otus.ru/journal/wp-content/themes/contentberg/js/jarallax.js" id="jarallax-js"></script>
<script type="text/javascript" src="https://otus.ru/journal/wp-includes/js/masonry.min.js" id="masonry-js"></script>
<script type="text/javascript" src="https://otus.ru/journal/wp-includes/js/jquery/jquery.masonry.min.js" id="jquery-masonry-js"></script>
</body>
</html>
<!-- Cache served by breeze CACHE - Last modified: Tue, 10 Mar 2026 16:45:45 GMT -->