Lua - historie jednoho skriptovacího jazyka

Není to tak dlouho, co jsem tu psal, že zápisník bude vyhrazen pro hodnotnější věci, něž odkazy někam jinam. Dnes ale udělám vyjímku: Před pár dny jsem totiž narazil na moc zajímavý článek The Evolution of Lua (PDF), vytiskl jsem si ho a dnes jsem ho konečně dočetl.

Lua je jednoduchý dynamický skriptovací jazyk – ze stejné rodiny jako třeba Python nebo Ruby. Vyvinuli ho pánové Roberto Ierusalimschy, Luiz Henrique de Figueiredo, a Waldemar Celes na Pontifícia Universidade Católica v Rio de Janeiru a používá se především k psaní skriptů ve hrách (např. World of Warcraft, The Sims) a embeddingu do aplikací obecně. Luu (kromě obecných charakteristik rodiny dynamických skriptovacích jazyků) charakterizuje malé, jednoduché a portabilní jádro, syntaktická příbuznost s Modulou (tj. vypadá na první pohled trochu jako Pascal) a používání asociativního pole (v Lue zvaného tabulka) jako jediného složeného datového typu. Pomocí tabulek lze v Lue implementovat nejen pole, množiny a další datové struktury, ale třeba i objekty – jako hodnota v tabulce může být totiž uložena i reference na funkci. Není problém ani dědičnost (klasická, prototypová, vícenásobná,... – záleží na uživateli, co si pomocí tabulek implementuje).

Zmíněný článek Luu stručně představuje, popisuje její historii a pak podrobně rozebírá jednotlivé její funkce. Autoři u každé z nich vysvětlují, proč v dané fázi vývoje zvolili konkrétní implementaci, jaké problémy tím vyřešili, jaké naopak způsobili a jak v důsledku toho implementaci dále upravovali. Na konci pak vše shrnují a zhodnocují, včetně úvah typu "co bychom dnes udělali jinak".

Mám články popisující konkrétní zkušenosti s nějakým projektem (v manager-speaku zvané case-studies) rád. Člověk se z nich dozví mnoho o tom, které nápady jsou dobré a špatné nejen v teorii, ale i v praxi. Může také srovnávat s jinými podobnými projekty, které trochu zná (v tomto případě například vývoj JavaScriptu, který má jako jazyk k Lue až překvapivě blízko) a nebo dokonce s vlastními zkušenostmi. V neposlední řadě bývají takové články docela čtivé :-)

A Lua samotná? Líbí se mi její minimalističnost (podobná JavaScriptu a céčku) i některé další vlastnosti, ale v praxi si nejsem jist její vhodností mimo doménu embeddingu do aplikací. Při rozhodování mezi několika podobnými jazyky totiž většinou vítězí jazyky kladoucí větší důraz na expresivitu než na konzistenci a disponující rozsáhlými knihovnami. Obojí má za důsledek rychlejší vývoj aplikace, ale ani jedno není případ Luy. Každopádně je Lua další nástroj do pomyslného toolboxu, který se někdy může hodit.