{}const=>[]async()letfn</>var
LuaРазработка

Первый код на Lua: гайд для тех, кто хочет начать программировать и не сойти с ума

Разбираемся с языком Lua с нуля — от установки до мини-игры за 10 минут. Без занудной теории, с примерами кода и веселой подачей. Узнай, почему Lua — один из самых дружелюбных языков для старта в программировании, где он используется и как написать свой первый проект.

К

Кодик

Автор

calendar_today
schedule6 мин чтения

Когда ты открыл Lua и подумал: «Подождите, а где фигурные скобки?»

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

Если ты когда-нибудь играл в World of Warcraft, Roblox или мод на Garry's Mod — поздравляю, ты уже косвенно пользовался Lua. Этот язык буквально везде, где нужно что-то быстро заскриптовать, не разворачивая при этом космическую станцию из зависимостей.

Шаг 0: Установка (спойлер — это быстро)

Lua — один из самых лёгких языков в плане установки. Никаких гигабайтных SDK, никаких «пожалуйста, обновите вашу версию Java до 847.3».

На Linux/macOS:

# Ubuntu/Debian
sudo apt install lua5.4

# macOS (через Homebrew)
brew install lua

На Windows:

Скачай LuaBinaries с официального сайта или поставь через scoop:

scoop install lua

Проверяем, что всё работает:

lua -v

Если в ответ прилетело что-то вроде Lua 5.4.7 — ты в деле. Если нет — ну, классика, проверь PATH.

🔥 100 000+ учеников уже с нами

Устал читать теорию?
Пора кодить!

Кодик — приложение, где ты учишься программировать через практику. AI-наставник, интерактивные уроки, реальные проекты.

🤖 AI 24/7
🎓 Сертификаты
💰 Бесплатно
🚀 Начать учиться
Присоединились сегодня

Шаг 1: Hello, World! (ритуал посвящения)

Создай файл hello.lua и напиши:

print("Hello, World!")

Запусти:

lua hello.lua

Всё. Один. Один единственный вызов. Без public static void main, без import, без #include <iostream>. Lua уважает твоё время.

Для сравнения, вот то же самое на Java:

public class HelloWorld {
    public static void main(String[] args) {
        System.out.println("Hello, World!");
    }
}

Lua на это смотрит как:

«Братан, зачем столько букв? print() и пошли дальше.»

Шаг 2: Переменные — просто пишешь и всё

В Lua не нужно объявлять тип переменной. Никаких int, string, float. Lua сам разберётся:

name = "Алексей"
age = 25
is_developer = true

print(name)          -- Алексей
print(type(age))     -- number
print(type(name))    -- string

Локальные переменные объявляются через local — и это считается хорошим тоном:

local score = 100
local player = "Hero"

Почему local? Потому что без него переменная становится глобальной, а глобальные переменные в большом проекте — это как оставить ключи от квартиры под ковриком. Вроде удобно, но потом будешь удивляться.

Шаг 3: Условия — if, elseif, else, end

local hp = 30

if hp > 50 then
    print("Всё норм, воюем дальше")
elseif hp > 0 then
    print("Аккуратнее, HP на исходе!")
else
    print("Game Over. Респаун через 5 секунд")
end

Обрати внимание: вместо { и }then и end. Поначалу непривычно, но потом ты поймёшь, что это даже чище читается. Lua любит слова, а не символы.

Ещё один момент — в Lua нет !=. Вместо него используется ~=:

if name ~= "Admin" then
    print("Доступ запрещён")
end

Да, тильда. Просто прими это.

Шаг 4: Циклы — крутим, вертим

while:

local i = 1
while i <= 5 do
    print("Итерация: " .. i)
    i = i + 1
end

Кстати, .. — это конкатенация строк в Lua. Не +, не concat(), а просто две точки.

for:

for i = 1, 5 do
    print("Шаг " .. i)
end
-- С шагом
for i = 10, 1, -1 do
    print(i)
end
print("Поехали! 🚀")

for-in (для обхода таблиц):

local fruits = {"яблоко", "банан", "манго"}

for index, fruit in ipairs(fruits) do
    print(index .. ". " .. fruit)
end

Шаг 5: Функции — пишем свои команды

local function greet(name)
    return "Привет, " .. name .. "! Добро пожаловать в Lua"
end

print(greet("Мария"))

Функции в Lua — это first-class citizens. Их можно сохранять в переменные, передавать как аргументы, возвращать из других функций. В общем, функциональное программирование тут не на словах:

local function apply(func, value)
    return func(value)
end

local function double(x)
    return x * 2
end

print(apply(double, 21))  -- 42

42 — ответ на всё. Совпадение? Не думаю.

Шаг 6: Таблицы — сердце Lua

Вот тут начинается магия. В Lua нет массивов, нет объектов, нет словарей. Зато есть таблицы — универсальная структура данных, которая заменяет всё:

-- Как массив
local colors = {"красный", "зелёный", "синий"}
print(colors[1])  -- красный (индексация с 1!)

-- Как словарь
local player = {
    name = "Warrior",
    hp = 100,
    level = 5
}
print(player.name)   -- Warrior
print(player["hp"])  -- 100

-- Как объект с методами
function player:takeDamage(damage)
    self.hp = self.hp - damage
    print(self.name .. " получил " .. damage .. " урона. HP: " .. self.hp)
end

player:takeDamage(25)  -- Warrior получил 25 урона. HP: 75

Важный момент: индексация в Lua начинается с 1, а не с 0. Да, это та самая деталь, которая будет вызывать у тебя экзистенциальный кризис, если ты привык к JavaScript или Python. Но ты привыкнешь.

Шаг 7: Мини-проект — текстовый квест

Пора собрать всё вместе. Вот тебе маленькая текстовая игра:

local function game()
    print("=============================")
    print("  ПОДЗЕМЕЛЬЕ КОДА")
    print("=============================")
    print("")
    print("Ты стоишь перед входом в тёмную пещеру.")
    print("Внутри слышен странный шум...")
    print("")
    print("Что делаешь?")
    print("1 — Входишь в пещеру")
    print("2 — Уходишь домой пить чай")
    print("")

    io.write("Твой выбор: ")
    local choice = io.read()

    if choice == "1" then
        print("")
        print("Ты входишь и находишь... древний ноутбук!")
        print("На экране открыт файл с кодом на Lua.")
        print("Ты начинаешь читать... и становишься программистом!")
        print("")
        print("🏆 ПОБЕДА! +100 к навыку программирования")
    elseif choice == "2" then
        print("")
        print("Мудрый выбор. Чай — это тоже важно.")
        print("Но пещера будет ждать тебя...")
        print("")
        print("☕ КОНЕЦ. Но ты всегда можешь вернуться!")
    else
        print("")
        print("Неизвестная команда. Пещера в замешательстве.")
        print("Попробуй снова!")
    end
end

game()

Сохрани это в quest.lua, запусти lua quest.lua — и поздравляю, ты только что написал свою первую игру на Lua.

Что дальше?

Lua — это язык, который откроет тебе двери в геймдев (Love2D, Defold, Roblox), в embedded-разработку, в написание плагинов и скриптов для существующих приложений. Он лёгкий, быстрый и при этом удивительно мощный.

Вот несколько направлений, куда можно двигаться:

  • Roblox Studio — если хочешь делать игры и зарабатывать на этом

  • Love2D — минималистичный 2D-движок для инди-игр

  • Neovim — конфигурация и плагины пишутся на Lua

  • OpenResty/Nginx — Lua для высоконагруженных веб-серверов

  • Embedded/IoT — Lua отлично работает на микроконтроллерах (NodeMCU, ESP8266)

Если тебе зашёл этот формат и хочется двигаться дальше — заглядывай в Кодик. Это приложение, где можно изучать программирование с нуля: от Python и JavaScript до HTML, CSS и других технологий. Никакой сухой теории на 200 страниц — только понятные уроки с практикой, после которых ты реально понимаешь, что написал и зачем.

Кодик создан специально для тех, кто хочет учиться в своём темпе, с телефона или компьютера — без привязки к расписанию и длинным курсам.

А ещё у нас есть Telegram-канал с сообществом из 2000+ разработчиков, где регулярно выходят полезные посты по программированию, разборы задач и новости из мира разработки. Это отличный способ повторять материал и оставаться в теме — даже когда стоишь в очереди за кофе.

Итого

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

🎯Хватит откладывать

Понравилась статья?
Пора применять на практике!

В Кодик ты не просто читаешь — ты сразу пишешь код. Теория + практика = реальный скилл.

Мгновенная практика
🧠AI объяснит код
🏆Сертификат

Без регистрации • Без карты