Задать вопрос
Artouiros
@Artouiros

lua — практическое применение?

Недавно возникла идея попробовать написать аддон к WoW. С луа не был знаком совсем. Но скажу честно — язык очень понравился. Есть ли какое-то практическое применение его, кроме околоигровой индустрии?
  • Вопрос задан
  • 17702 просмотра
Подписаться 3 Оценить Комментировать
Пригласить эксперта
Ответы на вопрос 9
Zigmar
@Zigmar
Луа, будучи, очень простым и компактным языком — легко встраиваться. Включаете пару десятков чистых сишных файлов в проект — и вуаля — у вас встроеный язык. Еще, настраиваемость — по большому счету, в плане библиотек, луа это скорее скелет языка, чем полноценный язык програмирования. Иногда при встраивание вообще выкидвают большую часть (или всю) «стандартную» библиотеку, заменяя ее специализированной под домейн, фактически создавая специализированный язык. Еще один плюс — компактность. Я как-то давно, проверял возможность запускать луа-интерпретатор в качестве отладочного модуля на встроенном чипе (я не говорю про смартфоны, а про «жесткий» embedded). Так вот, виртуальная машина луа (правда почти без библиотек и без интерпретатора, кормить ей надо было уже байткод) занимала 15кб (!) RISC кода. Оказалось, что вполне реально запустить было на том железе, хотя в конце эту идею зарубили как слишком сумашедшую («интепретатор в нашем RT?!»). Идем дальше, Луа можно использовать в качестве декларативного языка, но с «плюшкой» в виде динамичности и читаемости человеком, в отличии скажем от статических декларативных систем, например XML. Я как-то делал декларативную систему описания автоматических тестов на луа, получилось по-моему, неплохо. :) А из более простых примеров такого применения — это файлы конфигурации. Простые файлы var=value легко распарсить вручную, на зато на луа можо сделать вот так:
width = 100
height = width*1.2
positions[0] = {x=0, y=height-20 }

Причем реализуется буквально в пару строчек со стороны хоста — инициализовать луа, запарсить и выполнить скрип, считать получившиеся глобальные переменные, все.

Вообщем давайте просуммируем: если нужен легко встраиваемый, компактный, настраиваемый и быстрый скриптовый язык, чтобы расширить функциональность вашей программе — луа отлично для это подходит. Но если нужный полноценный самостоятельный язык, c богатой библиотекой и возможность писать приложения от начала до конца, то лучше посмотреть в сторону «серьёзных» собратьев, скажем Пайтона (Perl, Ruby, whatever). Их, кстати, тоже можно встроить в качество скриптового языка, просто это далеко не всегда оправданно там, где можно ограничится луа.

Вот.

ЗЫ: JavaScript в чем-то похож на луа тем, что он тоже почти никогда не используется как «самостоятельный» язык.
Ответ написан
Комментировать
atomlib
@atomlib
Да, на нём, например, написан XMPP-сервер. Мотивировали они это тем, что игры-то требуют быстроты — вот и lua быстрый, поэтому Jabber-сервер на его основе должен получиться шустреньким.
en.wikipedia.org/wiki/Prosody_(software)
Вообще, вот вам весь список en.wikipedia.org/wiki/Lua_(programming_language)#Other
Ответ написан
Lerg
@Lerg
Defold, Corona, Lua, GameDev
Ещё добавлю про игры: Lua позволяет писать кросплатформенные игры для мобильных устройств в специальных фреймворках. Это например Corona (iOS + Android), cocos2d-x и недавно вышешдший Moai SDK.
Сам сейчас активно на Lua пишу игру, гораздо легче чем на ObjC/C++/Java, если не обращать внимания на ограничения фреймворка.
Ответ написан
Levsha100
@Levsha100
Еще его юзают как конфиг для awesome.
Ответ написан
Комментировать
taliban
@taliban
php программист
Вообще на луа очень часто пишут макросы/аддоны/итд. В этой отрасли он стоит на равне с питоном, яваскриптом и перлом, он очень гибкий, не нуждающийся в ручном управлении рессурсами язык и есть на всех платформах.
Ответ написан
Комментировать
xanep
@xanep
Применяется в любых приложениях, где нужны скрипты. Не обязательно игры. Хотя, похоже, питон понемногу вытесняет луа.
Ответ написан
Комментировать
susl
@susl
Помимо того что уже сказали есть интересный проект LuaTeX — можно писать скрипты к теху на луа. Иногда можно вообще обойтись без генерации какого либо тех-кода извне.
Пока сыроват, но с каждым годом все лучше :)
Ответ написан
Комментировать
sev
@sev
Одна весьма известная компания на рынке производства мобильных приложений разработала на Lua целый фреймворк, который позволяет им писать бизнес-логику один раз, а затем исполнять практически на любых смартфонах (поддерживается iOS, WinCE, Symbian, Android). Нативно пишется только GUI. Как результат, скорость разработки повышается в разы, вход для новых разрабочиков весьма низок, ну и одновременный выпуск приложений под несколько платформ совершенно безпроблемный.
Ответ написан
Комментировать
sev
@sev
… А в околоигровой индустрии его используют опять же из-за простоты. Как результат, скрипты для игр могут писаться не совсем программистами, а иногда совсем не программистами, т.е. сценаристами, аниматорами.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы