Когда стоит использовать встроенный язык сценариев, такой как Lua? - PullRequest
6 голосов
/ 26 февраля 2009

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

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

Ответы [ 8 ]

13 голосов
/ 26 февраля 2009

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

8 голосов
/ 26 февраля 2009

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

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

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

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

3 голосов
/ 23 апреля 2009

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

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

Стив Йегге сделал это для своего собственного двигателя mmorpg, приводящего в действие wyvern , используя jython или rhino и javascript (не помню). он написал ядро ​​ядра на языке Java, а логику программы на языке Python / Javascript.

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

  • ему не нужно перезапускать ядро ​​ядра при смене скриптов, потому что это отключит всех игроков
  • он может позволить другим заниматься более простым программированием, таким как определение новых предметов и монстров, не подвергая их критическому коду
  • песочница: если внутри скрипта происходит ошибка, вы можете уметь ее корректно обрабатывать, не подвергая опасности окружающее приложение
3 голосов
/ 26 февраля 2009

Луа это:

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

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

2 голосов
/ 08 марта 2009

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

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

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

2 голосов
/ 26 февраля 2009

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

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

2 голосов
/ 26 февраля 2009

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

0 голосов
/ 21 апреля 2009

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

...