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.

Feb 15, 2007 – 17:32