мне нужно принять решение какой scripting engine использовать в проекте.
Прошу у вас совета.
Требования такие:
1. Кроссплатформенность
2. Работа с ECMAScript, но с возможностью расширения до синтаксиса близкого к C#
3. Лёгкость интегрирования в существующий C++ проект
4. Лёгкость самого scripting engine, то есть малый размер и скорость работы.
Здравствуйте, korzhik, Вы писали:
K>Здравствуйте,
K>мне нужно принять решение какой scripting engine использовать в проекте. K>Прошу у вас совета.
Qt Script for Applications здесь
K>Требования такие: K>1. Кроссплатформенность
Да еще какая! K>2. Работа с ECMAScript, но с возможностью расширения до синтаксиса близкого к C#
С ECMAScript работает, насчет С# не уверен K>3. Лёгкость интегрирования в существующий C++ проект
Сам только сегодня обнаружил... Если проект пишется на Qt, то да, а если не на нем, то не знаю. K>4. Лёгкость самого scripting engine, то есть малый размер и скорость работы.
И это есть
K>Спасибо.
Здравствуйте, korzhik, Вы писали:
K>мне нужно принять решение какой scripting engine использовать в проекте.
Пока такого выбора делать не приходилось, но вполне возможно предстоит в будующем.
В гейм-деве бешенной популярностью пользуется Lua
K>Требования такие: K>1. Кроссплатформенность [LuaCheia] (5.0) — Lua 5.0 for GNU/Linux, Mac/OS X, Windows, *BSD, Solaris, etc. Includes many add-on binary modules.
K>2. Работа с ECMAScript, но с возможностью расширения до синтаксиса близкого к C#
K>3. Лёгкость интегрирования в существующий C++ проект
Судя по кол-ву инструментов (http://lua-users.org/wiki/LuaAddons, раздел Code wrappers) — не проблема
K>4. Лёгкость самого scripting engine, то есть малый размер и скорость работы. http://en.wikipedia.org/wiki/Lua_programming_language#Philosophy
In general, Lua strives to provide flexible meta-features that can be extended as needed, rather than supply a featureset specific to one programming paradigm. As a result, the base language is light—in fact, the full reference interpreter is only about 150KB compiled—and easily adaptable to a broad range of applications.
Lua programs are not interpreted directly, but are compiled to bytecode which is then run on the Lua virtual machine. The compilation process is typically transparent to the user and is performed during run-time, but it can be done offline in order to increase performance or reduce the memory footprint of the host environment by leaving out the compiler.
Здравствуйте, korzhik, Вы писали:
K>2. Работа с ECMAScript, но с возможностью расширения до синтаксиса близкого к C#
Вроде как вот эти кандидатуры подходят: TIScript от небезызвестного тебе c-smile DMDScript от автора языка D и компилятора Digital Mars C++ (но платное).
Если же не нужна ECMAScript, то можно рассмотреть множество скриптовых языков: Lua, Python, Ruby -- они все кроссплатформенные и внедряются в C++ проекты.
SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Здравствуйте, eao197, Вы писали:
E>Здравствуйте, korzhik, Вы писали:
K>>2. Работа с ECMAScript, но с возможностью расширения до синтаксиса близкого к C#
E>Вроде как вот эти кандидатуры подходят: E>TIScript от небезызвестного тебе c-smile E>DMDScript от автора языка D и компилятора Digital Mars C++ (но платное).
E>Если же не нужна ECMAScript, то можно рассмотреть множество скриптовых языков: Lua, Python, Ruby -- они все кроссплатформенные и внедряются в C++ проекты.
Если не считать что TIScript это "черный ящик" (исходники к нему не прилагаются) то выглядит неплохо.
От себя хотел добавить, что за 3 года с луа 5 проблем там не обнаружил.
Но если программировать скрипты придется самому то душа просит что нить более объектно-ориентированное
Здравствуйте, SleepyDrago, Вы писали:
SD>От себя хотел добавить, что за 3 года с луа 5 проблем там не обнаружил. SD>Но если программировать скрипты придется самому то душа просит что нить более объектно-ориентированное
Объектно-ориентированность в Луа находится на вполне достаточном уровне. При наличии хорошей обертки. См., например, luabind. Там есть даже "наследование" от классов С++.
Здравствуйте, korzhik, Вы писали:
K>Здравствуйте, K>мне нужно принять решение какой scripting engine использовать в проекте. K>Прошу у вас совета.
Предлагаю посмотреть на http://www.angelcode.com/angelscript K>Требования такие: K>1. Кроссплатформенность
Есть такое свойство. K>2. Работа с ECMAScript, но с возможностью расширения до синтаксиса близкого к C#
Это не совсем. Синтаксис C-подобен, но не ECMAScript. Лицензия — BSD-style, написан на C++. Так что доработать, наверное, можно. Только вот не могу сказать, каких усилий это потребует. K>3. Лёгкость интегрирования в существующий C++ проект
Интегрируется не просто просто, а очень просто. Проще не видел. K>4. Лёгкость самого scripting engine, то есть малый размер и скорость работы.
Он типизированный. С одной стороны, он благодаря этому быстрее работает, с другой стороны, в скриптах как-то непривычно типизировать переменные. K>Спасибо.
Рад, если помог.
Здравствуйте, korzhik, Вы писали:
K>Здравствуйте,
K>мне нужно принять решение какой scripting engine использовать в проекте. K>Прошу у вас совета.
K>Требования такие:
K>1. Кроссплатформенность K>2. Работа с ECMAScript, но с возможностью расширения до синтаксиса близкого к C# K>3. Лёгкость интегрирования в существующий C++ проект K>4. Лёгкость самого scripting engine, то есть малый размер и скорость работы. (от себя) безопасность хост-программы
Здравствуйте, SleepyDrago, Вы писали:
SD>Здравствуйте, eao197, Вы писали:
E>>Здравствуйте, korzhik, Вы писали:
K>>>2. Работа с ECMAScript, но с возможностью расширения до синтаксиса близкого к C#
E>>Вроде как вот эти кандидатуры подходят: E>>TIScript от небезызвестного тебе c-smile E>>DMDScript от автора языка D и компилятора Digital Mars C++ (но платное).
E>>Если же не нужна ECMAScript, то можно рассмотреть множество скриптовых языков: Lua, Python, Ruby -- они все кроссплатформенные и внедряются в C++ проекты.
SD>Если не считать что TIScript это "черный ящик" (исходники к нему не прилагаются) то выглядит неплохо.
На самом деле исходники доступны но они не open source. Не все заказчики любят это дело.
SD>От себя хотел добавить, что за 3 года с луа 5 проблем там не обнаружил. SD>Но если программировать скрипты придется самому то душа просит что нить более объектно-ориентированное
tiscript это prototype based язык/runtime
что есть хорошо и что есть плохо:
например такие трюки как:
var myobject = new Class1();
myobject.method1();
...
myobject.class = Class2;
myobject.method1(); // уже другой метод совсем.
работают. Т.е. имеем эдакий динамический полиморфизм.
Иногда черезвычайно удобно. Но иногда можно нарваться на
"крякает но не утка" (это про duck typing).
язык c-smile в принципе более строгий — у него классы настоящие.
т.е. в каком-то смысле он ближе к C# и совсем близок к JavaScript v.2.0.
Что лучше надо смотреть по задаче.
Для web'a javascript (v.1.*, prototype based) практически идеален.
Здравствуйте, korzhik, Вы писали:
K>Здравствуйте, korzhik, Вы писали:
K>>Здравствуйте,
K>>мне нужно принять решение какой scripting engine использовать в проекте. K>>Прошу у вас совета.
K>Всем спасибо за ответы. K>Теперь надо найти время чтобы всё это просмотреть и сделать выбор. На днях займусь.
K>Мы уже хотели использовать tiscript, но нам нужны исходники. K>Начальство недавно связывалось с c-smile, но видно как раз из-за лицензии не получилось.
Как инициалы начальника? Не АШ случайно?
Там единственная проблема — сугубо организционная — установка SVN и все такое.
Здравствуйте, c-smile, Вы писали:
CS>Здравствуйте, korzhik, Вы писали:
K>>Здравствуйте, c-smile, Вы писали:
CS>>>Как инициалы начальника? Не АШ случайно?
K>>Нет. Инициалы — АА.
CS>Не было такого.
Мне сказали что с тобой связывались. Объяснили причину почему не договорились.
Человек с инициалами AA мой superviser. Возможно на самом деле с тобой общался кто и повыше, не знаю.
Здравствуйте, korzhik, Вы писали:
CS>>Не было такого.
K>Мне сказали что с тобой связывались. Объяснили причину почему не договорились. K>Человек с инициалами AA мой superviser. Возможно на самом деле с тобой общался кто и повыше, не знаю.
Здравствуйте, c-smile, Вы писали:
CS>Здравствуйте, korzhik, Вы писали:
CS>>>Не было такого.
K>>Мне сказали что с тобой связывались. Объяснили причину почему не договорились. K>>Человек с инициалами AA мой superviser. Возможно на самом деле с тобой общался кто и повыше, не знаю.
CS>Для тех кто следит за интригой: все, разобрались
я так и не понял : так есть от tiscript исходники или нет ?
или на каких доп условиях?
Здравствуйте, SleepyDrago, Вы писали:
SD>Здравствуйте, c-smile, Вы писали:
CS>>Здравствуйте, korzhik, Вы писали:
CS>>>>Не было такого.
K>>>Мне сказали что с тобой связывались. Объяснили причину почему не договорились. K>>>Человек с инициалами AA мой superviser. Возможно на самом деле с тобой общался кто и повыше, не знаю.
CS>>Для тех кто следит за интригой: все, разобрались
SD>я так и не понял : так есть от tiscript исходники или нет ? SD>или на каких доп условиях?
Доп. условий два:
1) написать мне письмо.
2) не публиковать в открытом доступе. Мотивы я изложил — не хочу потом с лицензиями разбираться — муторно очень.