encyklopedia.run.place

Lua

Lua – lekki, wieloparadygmatyczny język programowania skryptowego, opracowany w 1993 roku w Brazylii w PUCRS (Pontifícia Universidade Católica do Rio Grande do Sul). Jego nazwa oznacza „płomień” w języku portugalskim.

Historia

Projekt rozpoczął się w 1993 roku pod kierunkiem Roberto Ierusalimschy, Luiza Henrique de Figueiredo i Waldemara Celes. Pierwsza wersja, Lua 1.0, została wydana w 1993 roku jako narzędzie do rozszerzania aplikacji, głównie w środowisku Tecgraf. Kolejne wersje wprowadzały m.in. kolekcje typu table, mechanizmy pamięci garbage‑collector oraz wsparcie dla programowania obiektowego.

Charakterystyka

  • Składnia – prosta, inspirowana językiem C i Pascal, co ułatwia naukę osobom posiadającym podstawy tych języków.
  • Typowanie – dynamiczne, z jedną typową wartością nil oznaczającą brak danych.
  • Mechanizm pamięci – automatyczny garbage collector, eliminujący potrzebę ręcznego zwalniania pamięci.
  • Rozszerzalność – możliwość wywoływania kodu napisanego w C i C++ oraz łatwe osadzanie w innych aplikacjach.
  • Portowalność – interpreter dostępny na wszystkie główne platformy (Windows, macOS, Linux, Android, iOS).

Wersje

Główne gałęzie rozwojowe to:

  • Lua 5.0 (wydana w 2000 roku) – wprowadzenie metatabel i systemu modułów.
  • Lua 5.1 (wydana w 2006 roku) – dodanie wsparcia dla coroutine i biblioteki debug.
  • Lua 5.2 (wydana w 2011 roku) – nowy mechanizm środowiskowy i uproszczony system pakietów.
  • Lua 5.3 (wydana w 2015 roku) – wprowadzenie liczby całkowitej 64‑bitowej oraz operatora bitowego.
  • Lua 5.4 (wydana w 2020 roku) – wsparcie dla to-be‑closed variables oraz ulepszony garbage collector.

Zastosowania

Lua jest wykorzystywany w wielu dziedzinach:

  • Gry komputerowe – silniki takie jak World of Warcraft, Roblox, Flame oraz CryEngine używają Lua do skryptowania logiki gry.
  • Aplikacje mobilne – biblioteka Corona SDK (obecnie Solar2D) pozwala tworzyć aplikacje i gry na Androida oraz iOS przy użyciu Lua.
  • Oprogramowanie CAD i GIS – AutoCAD oraz QGIS umożliwiają rozszerzanie funkcjonalności przy pomocy skryptów Lua.
  • Systemy wbudowane – dzięki małemu rozmiarowi (kilka setek kilobajtów) język jest popularny w urządzeniach IoT.
  • Przetwarzanie danych i automatyzacja – narzędzia takie jak Wireshark czy Nmap wykorzystują Lua do tworzenia własnych skryptów analizy.

Ekosystem

Komunikacja społeczności odbywa się głównie na Lua Users Wiki, w forach Stack Overflow oraz w repozytoriach GitHub, gdzie można znaleźć setki bibliotek (np. LuaSocket, LÖVE, Moai). Oficjalna strona projektu udostępnia pełną dokumentację oraz kompilatory dla wielu architektur.

Porównanie z innymi językami

W porównaniu do języków takich jak Python czy JavaScript, Lua wyróżnia się niższym zużyciem pamięci oraz lepszą integracją z C. Dzięki temu jest preferowany w sytuacjach, w których wymagana jest wysoka wydajność przy jednoczesnym zachowaniu prostoty skryptowania.

Przykładowy kod

-- prosty przykład: obliczanie silni przy pomocy rekurencji
function silnia(n)
    if n == 0 then
        return 1
    else
        return n * silnia(n - 1)
    end
end

print("Silnia 5 wynosi:", silnia(5))  -- wynik: 120

Bibliografia i dalsze lektury

  • Roberto Ierusalimschy, Luiz Henrique de Figueiredo, Waldemar Celes – Programming in Lua (wydania pierwsze, drugie, trzecie).
  • Oficjalna dokumentacja Lua – Manual referencyjny.
  • „Lua – język skryptowy w praktyce” – artykuł w Computer Science Journal.