Scripting engine for С++
От: korzhik Россия  
Дата: 27.12.05 16:51
Оценка:
Здравствуйте,

мне нужно принять решение какой scripting engine использовать в проекте.
Прошу у вас совета.

Требования такие:
1. Кроссплатформенность
2. Работа с ECMAScript, но с возможностью расширения до синтаксиса близкого к C#
3. Лёгкость интегрирования в существующий C++ проект
4. Лёгкость самого scripting engine, то есть малый размер и скорость работы.

Спасибо.
Re: Scripting engine for С++
От: 0xDEADF00D Россия  
Дата: 27.12.05 17:36
Оценка:
Здравствуйте, 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>Спасибо.
And solder won't keep me together (c)
Re: Scripting engine for С++
От: FreshMeat Россия http://www.rsdn.org
Дата: 27.12.05 18:11
Оценка:
Здравствуйте, 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.

Если правильно понимаю, следующая фича имела под собой целью повысить скорость работы (за что и пользуется таким успехом у гейм-девелоперов)
http://en.wikipedia.org/wiki/Lua_programming_language#Internals

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.



Дополнительные бонусы:
Что не может не радовать:

License for Lua 5.0 and future versions:
Starting with Lua 5.0, Lua is licensed under the terms of the MIT license reproduced below.

Используется в куче проектов, что автоматически означает:
1. стабильность
2. наличие комьюнити
3. богатый инструментарий



http://lua-users.org/wiki/
http://en.wikipedia.org/wiki/Lua_programming_language

А вообще, судя по http://en.wikipedia.org/wiki/Category:Scripting_languages и http://www.mvps.org/scripting/languages/ выбор предстоит непростой
Хорошо там, где мы есть! :)
Re: Scripting engine for С++
От: eao197 Беларусь http://eao197.blogspot.com
Дата: 27.12.05 18:25
Оценка:
Здравствуйте, korzhik, Вы писали:

K>2. Работа с ECMAScript, но с возможностью расширения до синтаксиса близкого к C#


Вроде как вот эти кандидатуры подходят:
TIScript от небезызвестного тебе c-smile
DMDScript от автора языка D и компилятора Digital Mars C++ (но платное).

Если же не нужна ECMAScript, то можно рассмотреть множество скриптовых языков: Lua, Python, Ruby -- они все кроссплатформенные и внедряются в C++ проекты.


SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Re[2]: Scripting engine for С++
От: SleepyDrago Украина  
Дата: 27.12.05 20:15
Оценка:
Здравствуйте, 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 проблем там не обнаружил.
Но если программировать скрипты придется самому то душа просит что нить более объектно-ориентированное

wbr
Re[3]: Scripting engine for С++
От: Tuo_Bellas Россия  
Дата: 27.12.05 20:27
Оценка:
Здравствуйте, SleepyDrago, Вы писали:

SD>От себя хотел добавить, что за 3 года с луа 5 проблем там не обнаружил.

SD>Но если программировать скрипты придется самому то душа просит что нить более объектно-ориентированное

Объектно-ориентированность в Луа находится на вполне достаточном уровне. При наличии хорошей обертки. См., например, luabind. Там есть даже "наследование" от классов С++.

Tuo_Bellas.
Re: Scripting engine for С++
От: Аноним  
Дата: 27.12.05 21:14
Оценка:
Python
Re: Scripting engine for С++
От: Сергей  
Дата: 27.12.05 23:55
Оценка: 17 (2)
Здравствуйте, 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>Спасибо.
Рад, если помог.
Re: Scripting engine for С++
От: _Winnie Россия C++.freerun
Дата: 28.12.05 03:34
Оценка: 11 (1) :)
Здравствуйте, korzhik, Вы писали:

K>Здравствуйте,


K>мне нужно принять решение какой scripting engine использовать в проекте.

K>Прошу у вас совета.

K>Требования такие:


K>1. Кроссплатформенность
K>2. Работа с ECMAScript, но с возможностью расширения до синтаксиса близкого к C#
K>3. Лёгкость интегрирования в существующий C++ проект
K>4. Лёгкость самого scripting engine, то есть малый размер и скорость работы.
(от себя) безопасность хост-программы

здесь описывается скриптовый язык, очень хорошо интегрирующийся в С++ — http://www.livejournal.com/users/_winnie/4401.html
ну и далее по ссылкам —
http://www.gamedev.ru/forum/?group=0&amp;topic=20087
http://www.chiark.greenend.org.uk/~sgtatham/coroutines.html
ну и поиск по форуму — http://rsdn.ru/search/?q=yield_return&amp;mode=rank&amp;group=N

K>Спасибо.
Правильно работающая программа — просто частный случай Undefined Behavior
Re[3]: Scripting engine for С++
От: c-smile Канада http://terrainformatica.com
Дата: 28.12.05 04:54
Оценка:
Здравствуйте, 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) практически идеален.





SD>wbr
Re: Scripting engine for С++
От: korzhik Россия  
Дата: 28.12.05 12:14
Оценка:
Здравствуйте, korzhik, Вы писали:

K>Здравствуйте,


K>мне нужно принять решение какой scripting engine использовать в проекте.

K>Прошу у вас совета.

Всем спасибо за ответы.
Теперь надо найти время чтобы всё это просмотреть и сделать выбор. На днях займусь.

Мы уже хотели использовать tiscript, но нам нужны исходники.
Начальство недавно связывалось с c-smile, но видно как раз из-за лицензии не получилось.
Re[2]: Scripting engine for С++
От: 0x656b694d Россия  
Дата: 28.12.05 15:50
Оценка:
Здравствуйте.

Есть движок от Mozilla: SpiderMonkey JavaScript.
Не знаю, почему его забыли. Вполне себе вещь.

Из минусов:
Не уверен на счёт С#-подобного синтаксиса.

здесь.
Re[2]: Scripting engine for С++
От: c-smile Канада http://terrainformatica.com
Дата: 29.12.05 01:42
Оценка:
Здравствуйте, korzhik, Вы писали:

K>Здравствуйте, korzhik, Вы писали:


K>>Здравствуйте,


K>>мне нужно принять решение какой scripting engine использовать в проекте.

K>>Прошу у вас совета.

K>Всем спасибо за ответы.

K>Теперь надо найти время чтобы всё это просмотреть и сделать выбор. На днях займусь.

K>Мы уже хотели использовать tiscript, но нам нужны исходники.

K>Начальство недавно связывалось с c-smile, но видно как раз из-за лицензии не получилось.

Как инициалы начальника? Не АШ случайно?
Там единственная проблема — сугубо организционная — установка SVN и все такое.
Re: Scripting engine for С++
От: c-smile Канада http://terrainformatica.com
Дата: 29.12.05 03:10
Оценка: 37 (3)
Здравствуйте, korzhik, Вы писали:

Вот еще вспомнил:

В DDJ была опубликована статья о языке BOB от David Betz:
http://terrainformatica.com/org/bob_article.htm

Сгрузить можно здесь:
http://www.mv.com/ipusers/xlisper/bob.zip

В принципе tiscript это во многом bob.

Т.е. если кто-то хочет построить свой язык с C++/Java нотацией то это хороший старт.

В bob есть все что нужно — компилятор,VM и GC.
Re[3]: Scripting engine for С++
От: korzhik Россия  
Дата: 29.12.05 06:12
Оценка:
Здравствуйте, c-smile, Вы писали:

CS>Как инициалы начальника? Не АШ случайно?


Нет. Инициалы — АА.
Re[4]: Scripting engine for С++
От: c-smile Канада http://terrainformatica.com
Дата: 29.12.05 07:58
Оценка:
Здравствуйте, korzhik, Вы писали:

K>Здравствуйте, c-smile, Вы писали:


CS>>Как инициалы начальника? Не АШ случайно?


K>Нет. Инициалы — АА.


Не было такого.
Re[5]: Scripting engine for С++
От: korzhik Россия  
Дата: 29.12.05 08:02
Оценка:
Здравствуйте, c-smile, Вы писали:

CS>Здравствуйте, korzhik, Вы писали:


K>>Здравствуйте, c-smile, Вы писали:


CS>>>Как инициалы начальника? Не АШ случайно?


K>>Нет. Инициалы — АА.


CS>Не было такого.


Мне сказали что с тобой связывались. Объяснили причину почему не договорились.
Человек с инициалами AA мой superviser. Возможно на самом деле с тобой общался кто и повыше, не знаю.
Re[6]: Scripting engine for С++
От: c-smile Канада http://terrainformatica.com
Дата: 29.12.05 08:57
Оценка: :))) :)
Здравствуйте, korzhik, Вы писали:

CS>>Не было такого.


K>Мне сказали что с тобой связывались. Объяснили причину почему не договорились.

K>Человек с инициалами AA мой superviser. Возможно на самом деле с тобой общался кто и повыше, не знаю.

Для тех кто следит за интригой: все, разобрались
Re[7]: Scripting engine for С++
От: SleepyDrago Украина  
Дата: 29.12.05 19:26
Оценка:
Здравствуйте, c-smile, Вы писали:

CS>Здравствуйте, korzhik, Вы писали:


CS>>>Не было такого.


K>>Мне сказали что с тобой связывались. Объяснили причину почему не договорились.

K>>Человек с инициалами AA мой superviser. Возможно на самом деле с тобой общался кто и повыше, не знаю.

CS>Для тех кто следит за интригой: все, разобрались


я так и не понял : так есть от tiscript исходники или нет ?
или на каких доп условиях?

wbr
Re[8]: Scripting engine for С++
От: c-smile Канада http://terrainformatica.com
Дата: 29.12.05 22:45
Оценка:
Здравствуйте, SleepyDrago, Вы писали:

SD>Здравствуйте, c-smile, Вы писали:


CS>>Здравствуйте, korzhik, Вы писали:


CS>>>>Не было такого.


K>>>Мне сказали что с тобой связывались. Объяснили причину почему не договорились.

K>>>Человек с инициалами AA мой superviser. Возможно на самом деле с тобой общался кто и повыше, не знаю.

CS>>Для тех кто следит за интригой: все, разобрались


SD>я так и не понял : так есть от tiscript исходники или нет ?

SD>или на каких доп условиях?

Доп. условий два:

1) написать мне письмо.
2) не публиковать в открытом доступе. Мотивы я изложил — не хочу потом с лицензиями разбираться — муторно очень.


SD>wbr
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.