A Lua programozási nyelv

Bevezetés

Történet

A történet 1993-ban kezdődött, amikor a Petrobas brazil olajvállalat több kisebb projekttel bízta meg a TecGraf nevű programozó céget. Az egyik feladat programok outputjából készült nagyméretű szöveges adatbázisok feldolgozása, megjelenítése volt. Az egyszerűbb, egységes feldolgozás miatt kifejlesztettek egy új nyelvet, a DEL-t (Data Entry Language). A másik feladat egy jelentés készítő (report generator) elkészítése volt. Ahhoz, hogy a jelentést a legapróbb részletekig személyre lehessen szabni, a fejlesztők egy új nyelv kifejlesztése mellett döntöttek: így látott napvilágot a SOL (Simple Object Language). Egyébként a SOL jelentése Nap Portugálul.

A fenti nyelvek tervei 1993 elejére készültek el, de soha nem használták őket. Az ok egyszerű: rájöttek, hogy ezek a nyelvek túlságosan speciálisak, a későbbi fejlesztések során komoly bővítésre szorulnak (például vezérlési szerkezetek terén). Olyan nyelvet kellett keresni, amely mindkét feladatra alkalmas, dinamikusan bővíthető, hordozható (hiszen a nagygépektől kezdve a kis DOS-os rendszerekig mindenhol használni kellett őket), gyors és mindenekelőtt egyszerű. Számításba jöhetett a Perl és a Tcl. A probléma az, hogy mindkettő csak Unix alapú rendszereken működött és adatleírásra nem voltak alkalmasak. Ekkor döntöttek egy új nyelv kifejlesztése mellett.

Az egyik fejlesztő javaslatára a nyelvet Holdnak, azaz Luának keresztelték el. Sokféle forrásból merítettek tervezésekor: átvették a SOL rekord és listakezelését, amelyet asszociatív tömb formájában találhatunk meg a Luában. A CLU-ból a többszörös értékadást, míg a Modulából a vezérlési szerkezeteket örökölte. A lokális változók a C++ hatására kerültek bele.

A Lua azóta sok változáson ment keresztül, jelenleg (2011. december) az 5.2-es verziónál tartanak. A fő tervezési elv továbbra is az egyszerűség és gyorsaság maradt. Gyorsaság tekintetében az igazi áttörést a Lua 2.0 hozta meg: az addigi compilert (a lex-et) egy sajátra cserélték le, így a sebesség megduplázódott. A Lua nemzetközi sikerét egy egyetemi tanár, Dr. Dobb cikkének köszönheti. Ezután kezdődött az igazi "pályafutása". Ma a Petrobas cégen kívül sok helyen - leginkább játékprogramok fejlesztésénél - használják.

Alapelvek

A nyelv kifejlesztői a következőket tekintették a tervezés alapelveinek:

Használat

A Luát, mint programozási nyelvet eredetileg interpreter formájában valósították meg. Ezt a jellegzetességét még ma is őrzi, habár egy új lehetőséggel bővült: C++ -ba ágyazható osztálykönyvtár formájában. A nyelv használata mindkét esetben ugyanaz, de a fordító használatában eltérések adódnak.

A Lua interpreter a standard csomag része, fordítás után lua paranccsal indítható. Interaktív módban a szabványos be és kimenetet használja. Ilyenkor a billentyűzetről soronként olvassa a parancsokat. A megfelelő kapcsolókkal persze fájlokban előre megírt programokat is képes futtatni. UNIX rendszereken a Lua forrásállományok közvetlenül futtathatók, ha első soruk ilyen alakú:

#!/usr/bin/env lua

A Lua for Windows környezet részét képezi egy interpreter, több tucat könyvtár, és egy SciTE alapú Lua IDE.

Az osztálykönyvtár használata némileg bonyolultabb: a kommunikáció a "beépített fordítóval" egy vermen keresztül történik. A verem kezelésére számos C++ utasítás áll rendelkezésre.