Каковы наиболее эффективные способы использования Lua с C?

Насколько я понимаю, Lua является встраиваемым языком сценариев, который может выполнять методы на объектах. Каких подводных камней следует избегать? Возможно ли использовать Lua в качестве переводчика и выполнять методы в веб-среде или, как правило двигателя?

Ответ на: "Каковы наиболее эффективные способы использования Lua с C?"

Количество ответов:4
Скрипт

Lua является on track to becoming a core module for Apache web server. стать основным модулем для веб-сервера Apache.

Есть несколько инструментов для связывания Луа и C/.NET код here. . LuaInterface is the most up to date. является самым современным.

Lua очень быстро - скрипты могут быть предварительно дополнить bytecodes и функции выполняются близко к C' виртуальный метод вызовов. Это причина, почему он используется в игровой индустрии для сценариев ИИ, плагины, и другие привет-уровня вещи в играх.

Но вы ставите C и веб-сервер в ваших тегов вопроса.

Если вы не думаете о встроенных веб-серверах - чем Lua не очень сильна. Lua is ANSI C - он компилирует на родной код, и как таковой он не очень приветствуется на вашем asp.net сервере, ни на ваш код C. Подумайте о "среднем доверии" или "обязательном" или "64бит".

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

Почему мне нравится Lua является то, что он превосходит в качестве языка, особенно при использовании вместе с C / C, как это должно быть. Для меня, это слияние этих двух, что "делает" язык.

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

Языковые ловушки. Есть некоторые пожелания в Вики Луа, которые можно рассматривать как "ловушки". Нет оператора "переключатель". Нет надлежащего "Конд? a : b" формат. Если вы не хотите, чтобы растянуть свой ум выше таких довольно поверхностных синтаксисных вещей, то, возможно, JavaScript для вас?

В целом, это язык, который делает меня в 10-100 раз более продуктивным, чем программирование без него.

Мы использовали Lua в качестве языка сценариев в среднем по размеру применения биомедицинского инструмента C'. Это был отличный способ научить аппаратных парней, как написать свои собственные маленькие кусочки тестового кода.

Как только IronPython достиг зрелости, мы решили, что, поскольку Python немного более полнофункциональный и хорошо интегрированы с VS (а также с большим количеством людей, которые используют его), мы заменим все наши Lua с Python. До сих пор это работает очень хорошо. Lua является прекрасным немного языка, я не уверен, что я могу думать о каких-либо преимуществ Луа над Python на данный момент.

Lua может быть немного быстрее, но если вы уже расщепления доменов на скрипт-у и не-скрипт-у, по-видимому, это не большой фактор.