Когда хорошо использовать встроенный скриптовый язык, такой как Lua

Я играю в WoW около 2 лет, и мне было очень любопытно узнать о Lua, который используется для написания аддонов. Поскольку то, что я читал о Lua, было «быстрым», «легким» и «отличным», мне было интересно, как и когда его использовать.

Какова типичная ситуация, когда вам нужно будет встроить в систему язык сценариев, такой как Lua?


person Giann    schedule 26.02.2009    source источник


Ответы (8)


Когда вам нужно, чтобы конечные пользователи могли определять / изменять систему, не требуя перезаписи системы. Он используется в играх, чтобы разрешить расширения или позволить основному игровому движку оставаться неизменным, в то же время позволяя изменять контент.

person sfossen    schedule 26.02.2009

Встроенные языки сценариев также хорошо подходят для хранения информации о конфигурации. Последнее, что я проверял, все члены семейства Mozilla используют JavaScript для информации о конфигурации.

Далее, они отлично подходят для разработки плагинов. Вы можете создать собственный API, который будет доступен разработчикам плагинов, и разработчики плагинов получат большую свободу от наличия целого языка для работы.

Другой - когда плоские файлы недостаточно выразительны. Если вы хотите писать приложения, управляемые данными, в которых поведение параметризовано, вы действительно устанете от длинных строк проверки условий для комбинаций конфигураций. Когда это произойдет, вам лучше записать правила И их оценку в свой конфиг.

Эта тема получила некоторое освещение в книге Pragramtic Programmer.

person Ryan Graham    schedule 26.02.2009

Lua - это:

  • Легкий
  • Легко интегрируется даже в асинхронизированную среду, такую ​​как игра
  • Легко освоить для непрограммистов, таких как интеграторы, дизайнеры и художники.

Поскольку игры обычно требуют всех этих качеств, там в основном используется Lua. Другой ситуацией может быть любое приложение, которому требуются некоторые функции написания сценариев, но разработчики часто выбирают более тяжелое решение, такое как .Net или python.

person Coincoin    schedule 26.02.2009

В дополнение к упомянутым случаям создания сценариев и конфигурируемости я бы просто сказал, что Lua + C (или Lua + C ++) идеально подходит для любой разработки программного обеспечения. Это позволяет создать интерфейс движка / использования, в котором движок выполняется на C / C ++, а поведение или настройка выполняется в Lua.

В OS X Cocoa есть Objective-C (смесь C и Smalltalk, где язык меняется построчно). Я считаю Lua + C похожим, только язык меняется в исходном файле, что для меня является лучшей абстракцией.

Также заслуживают внимания причины, по которым вы не хотели бы использовать Lua. Потому что у него вряд ли есть хороший отладчик. Впрочем, людям он тоже вряд ли нужен. :)

person akauppi    schedule 08.03.2009

язык сценариев, такой как Lua, также можно использовать, если вам нужно изменить код (с немедленным вступлением в силу) во время работы приложения. в wow этого можно не увидеть, потому что, насколько я помню, код загружается в начале (а не перепроверяется и не перезагружается во время работы).

но подумайте о другом примере: веб-сервер и язык сценариев - (к счастью) вы можете изменить свой php-код без необходимости перекомпилировать apache или перезапускать apache.

Стив Йегге сделал это для своего собственного движка MMORPG, на котором работает wyvern, используя jython или rhino и javascript (не могу помнить). он написал ядро ​​движка на java, а логику программы на python / javascript.

эффект от этого:

  • ему не нужно перезапускать основной движок при изменении скриптов, потому что это отключит всех игроков
  • он может позволить другим заниматься более простым программированием, например определять новые предметы и монстров, не открывая им весь критический код
  • песочница: если ошибка происходит внутри скрипта, вы можете аккуратно обработать ее, не подвергая опасности окружающее приложение
person stefs    schedule 23.04.2009

Быстрая разработка приложений с ограничениями в реальном времени. Компьютерные игры - одна из таких ;-)

person vartec    schedule 26.02.2009
comment
другие неигровые приложения, использующие Lua как для расширяемости, так и для упрощения разработки / рефакторинга: apt, nmap, monotone, Adobe LightRoom, love2d, wildpockets - person Javier; 26.02.2009

Это подходящее решение, если вы хотите разрешить третьим сторонам разрабатывать плагины или моды для вашего программного обеспечения.

Вы можете реализовать API на любом языке, который вы используете, но язык сценариев, такой как LUA, имеет тенденцию быть более простым и доступным для случайных разработчиков.

person rgargente    schedule 26.02.2009

В дополнение ко всем отличным причинам, упомянутым другими, встраивание Lua в C очень полезно, когда вам нужно манипулировать текстом, работать с файлами или просто нужен язык более высокого уровня. Lua имеет множество отличных функций (таблицы, функции - это первоклассные значения, множество других хороших вещей). Кроме того, хотя lua не так быстр, как C или C ++, он довольно быстр для интерпретируемого языка.

person Community    schedule 21.04.2009