Выбор встроенного языка сценариев для C ++ - PullRequest
9 голосов
/ 31 мая 2011

Я хочу выбрать встроенный язык сценариев, который я буду использовать на C ++. Следует подключить базу данных, такую ​​как Oracle. Мое хост-приложение является серверным приложением. Это передаст необработанные данные в скрипт. Скрипт будет разбирать и делать некоторые конкретные логики Также обновляет базу данных. Затем скрипт вернет необработанные данные в качестве результата. Можете ли вы помочь мне выбрать его? Thanx

Ответы [ 6 ]

19 голосов
/ 31 мая 2011

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

12 голосов
/ 31 мая 2011

Lua уже упоминается, и использование luabind даст вам более интерфейс в стиле c ++.
Вы также можете взглянуть на chaiscript . Это было больше разработано, чтобы соответствовать c ++.

8 голосов
/ 31 мая 2011

Сохраните это как test.c:

#include <Python.h>

int
main(int argc, char *argv[])
{
  Py_Initialize();
  PyRun_SimpleString("from time import time,ctime\n"
                     "print 'Today is',ctime(time())\n");
  Py_Finalize();
  return 0;
}

Запустите эту команду (если у вас установлен Python 2.7):

gcc test.c -o test -I /usr / include / python2.7 -lpython2.7

Теперь встроен Python.Это заняло у меня меньше минуты, поэтому мне трудно понять утверждения о «усилиях, необходимых для его внедрения».

Пример взят из http://docs.python.org/extending/embedding.html.

Я бы предложилPython поверх Lua, хотя Lua тоже хорош.

4 голосов
/ 31 мая 2011

У меня большой успех при добавлении встроенных сценариев в мои приложения C ++ с использованием AngelScript. Я обнаружил, что связывать очень легко, а синтаксис очень удобен, но это зависит от вашей целевой аудитории. Я обнаружил, что Lua очень быстр и относительно прост в связывании, но синтаксис мне немного неудобен. AngelScript очень похож на C / C ++, и я нахожу его очень простым для понимания и сопровождения, но тот, кто тратит больше времени на работу с CSS или HTML, может счесть это громоздким, а языковые идиомы могут плохо переводиться ..

http://www.angelcode.com/angelscript/

http://www.gamedev.net/forum/49-angelcode/

Только что понял, что ответил на аналогичный вопрос здесь:

https://stackoverflow.com/questions/191222/what-is-a-good-embeddable-language-i-can-use-for-scripting-inside-my-software

2 голосов
/ 03 декабря 2014

Вас может заинтересовать ObjectScript

ObjectScript, для краткости ОС, это новый язык программирования.Это бесплатный, кроссплатформенный, легкий, встраиваемый и с открытым исходным кодом.Он сочетает в себе преимущества нескольких языков, в том числе: JavaScript, Lua, Ruby, Python и PHP.ОС имеет синтаксис Javascripts, функцию «множественных результатов» от lua, синтаксический шугар из Ruby, а также магические методы из PHP и Ruby - и даже больше!

Минимальная используемая программа ObjectScript может выглядеть следующим образом

#include <objectscript.h>
using namespace ObjectScript;
int main(int argc, char* argv[])
{
    OS * os = OS::create(); // craete ObjectScript instance
    os->require("main.os"); // run ObjectScript program
    os->release();          // release the ObjectScript instance
    return 0;
}
2 голосов
/ 31 мая 2011

TCL будет еще одним вариантом для простого встраивания языка сценариев.

лично я бы пошел с языком сценариев, с которым вы и / или тот, кто будет использовать язык сценариев, уже знакомы, особенно если конечные пользователи смогут запускать пользовательские сценарии, вам нужно будет знать, что, если таковые имеются языки, с которыми они знакомы в своей сфере деятельности Люди в CAD / CAM могут знать TCL, люди в играх могут знать Lua и т. Д.

...