Что хороший язык сценариев состоит в том, чтобы интегрировать в высокоэффективные приложения?

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

int countRecursive(int cancelCondition) 
{
    struct hidden {
        static int countRecursive(int cancelCondition, int counter = 0) {
            if(cancelCondition > 0)
            {
                return countRecursive(--cancelCondition, ++counter);
            }
            else
            {
                return counter;
            }
        }
    }; 
    return hidden::countRecursive(cancelCondition);
}

Локальные классы - изящная, но редко встречающаяся особенность C ++. Они обладают некоторыми ограничениями, но, к счастью, могут иметь статические функции-члены. Никакой код извне не может передать hidden::countRecursive недействительный counter. Это полностью под контролем countRecursive.

8
задан Grant Peters 27 February 2009 в 17:38
поделиться

10 ответов

Нам везло с Белкой до сих пор. Lua так популярен, это продвигается к становлению стандартом.

Я рекомендую волноваться больше о памяти, чем скорость. Большинство языков сценариев "достаточно быстро" и если они становятся медленными, можно всегда снижать часть той функциональности назад в C++. Многие из них горят через большую память, тем не менее, и на консоли память еще больше дефицитного ресурса, чем процессорное время. Неограниченное потребление памяти разрушит Вас в конечном счете, и если необходимо выделить 4 МБ только для интерпретатора, это похоже на необходимость бросить 30 структур из окна для создания места.

3
ответ дан 5 December 2019 в 04:58
поделиться

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

9
ответ дан 5 December 2019 в 04:58
поделиться

Lua является очень хорошим соответствием для Ваших потребностей. Я возьму их в том же порядке.

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

Lua компилирует на любой платформе с компилятором C ANSI, какой afaik включает все играющие платформы.

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

Существует много Lua/C ++ обязательные инструменты.

Это не поддерживает многопоточность (Вы не можете получить доступ к единственному экземпляру интерпретатора от нескольких потоков), но у Вас может быть несколько экземпляров интерпретатора, один на поток, или даже один на игровой объект.

7
ответ дан 5 December 2019 в 04:58
поделиться
6
ответ дан 5 December 2019 в 04:58
поделиться

Lua использовались в промышленности видеоигры в течение многих лет. Легкий и эффективный.

Однако ChaiScript и Сокол являются хорошими кандидатами, соответствующими Вашим потребностям и с высокоуровневым языком, чем Lua, но с меньшим количеством истории и общественной поддержки.

7
ответ дан 5 December 2019 в 04:58
поделиться

Lua и затем LuaJIT для дополнительного blaziness!

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

что касается параллелизма, или LuaLanes или самокрутка. если Ваша программа C++ является уже многопоточной, просто назовите отдельный LuaStates от каждого потока и используйте совместно использованные структуры Вашего собственного C++ в качестве каналов передачи в случае необходимости.

как Вы могли бы уже знать, чаще всего повторный ответ в Lua является 'самокруткой', и это часто - лучший совет! кроме тех случаев, когда это о привязке к общим библиотекам C/C++, в этом случае довольно вероятно, что уже существует один.

2
ответ дан 5 December 2019 в 04:58
поделиться

Если бы Вы еще не посмотрели на него, я предложил бы, чтобы Вы проверили Angelscript.

Я успешно использовал его в кросс-платформенной среде (Windows и Linux только с перекомпилировать), и это разработано для интеграции хорошо с C++ (оба объекта и код).

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

2
ответ дан 5 December 2019 в 04:58
поделиться

Запустите с Python.

Если можно доказать, что Вы нуждаетесь в большей скорости, то смотрите на Stackless Python. Это - то, что КАНУН Онлайн использует для их игры.

1
ответ дан 5 December 2019 в 04:58
поделиться

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

0
ответ дан 5 December 2019 в 04:58
поделиться

Они приходят на ум:

  • Lua
  • Python с повышением:: Python
  • MzScheme или хитрость
  • Ruby с БОЛЬШИМ ГЛОТКОМ
0
ответ дан 5 December 2019 в 04:58
поделиться
Другие вопросы по тегам:

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