Поміж скриптових мов, що плодяться останнім часом як кролики, крім всіх відомих монстрів типу Perl, Python, PHP, існує одна маленька, майже крихітна, при тому зручна та потужна мова -- Lua. Звичайно, вона не призначена замінити, скажімо, Python. Її призначення скромніше. Це може бути написання скриптів для задання поведінки об'єктів програми, наприклад юнітів у іграх. Або конфігурування програми. Можливість задавати конфігурацію не просто числовими параметрами та стрічками, але й за допомогою повноцінної мови програмування - дуже потужна. Поки повіримо на слово, приклади будуть далі :-)
Трішки історії та реклами:
- Офіційний сайт: http://www.lua.org.
- Неофіційний сайт із документацією: http://lua-users.org/wiki/.
- Існування мови розпочалося в 1993, створена командою розробників з католицького університету Ріо-де-Жанейро, Роберто Єрусалимським (Roberto Ierusalimschy), Вольдемаром Целесом (Waldemar Celes) і Луісом Енріке (Luiz Henrique).
- "Стандартний" інтерпретатор реалізовано на C, хоча існують реалізації як іншими мовами, так і просто альтернативні, великий список тут: http://lua-users.org/wiki/LuaImplementations.
- Ліцензія, починаючи з версії 5.0 - MIT License. В загальних рисах, вона дозволяє робити з кодом майже все що завгодно, поки при його використанні вказується копірайт, а автори не несуть жодної відповідальності. Неофіційний переклад ліцензії українською тут.
- Актуальна зараз версія - 5.2, але так як вийшла вона всього кілька днів тому, все нижче стосується версії 5.1.
- Назва Lua португальською мовою означає Місяць.
Переваги мови перерахуємо, слідуючи за її авторами:
- Луа активно використовується в багатьох програмах, починаючи від Adobe's Photoshop Lightroom, та ігор і закінчуючи вбудованими системами. На англомовній вікіпедії для таких ігор навіть створено окрему категорію: "Category:Lua-scripted video games".
- Луа швидка, одна із найшвидших скриптових мов!
- Луа портабельна, легко переноситься практично на будь-яку платформу.
- Луа "ембедабельна" (embeddable) і може легко бути включена в програму, написану на C, C++, та на багатьох інших мовах (Java, C#, Smalltalk, Fortran, Ada, Erlang, Perl, Ruby).
- Луа дуже потужна! Але при тому - крихітна, інтерпретатор із всіма стандартними бібліотеками займає всього кількасот кілобайт.
- Включає доволі хороший очи́щувач па́м’яті (garbage collector).
- Про ліцензію вже згадувалося :-) -- дуже відкрита.
Давно хотів щось про неї написати, так як активно використовую в своїх обчислювальних програмах. А нещодавно і потреба виникла. Постів заплановано декілька - загальний огляд мови, деякі особливості використання, типові ідіоми та трюки, binding (прив'язку) до C/C++ та імпорт сутностей, оголошених в C/C++ програмі (функцій, змінних, класів) у Lua, як стандартним API, так і за допомогою сторонніх засобів (Diluculum, swig). Як воно вийде - побачимо :-)
Що ж це за мова така?