Помогите выбрать скриптовый движок

Тема в разделе "WASM.HEAP", создана пользователем _DEN_, 2 окт 2011.

  1. _DEN_

    _DEN_ DEN

    Публикаций:
    0
    Регистрация:
    8 окт 2003
    Сообщения:
    5.383
    Адрес:
    Йобастан
    Привет.

    Раздумываю над тем, какой выбрать скриптовый движок. Суть задачи и его место использования оставим за кадром. Вот требования, которые должны выполняться (все сразу):

    1. Удобный байндинг скрипта к C++ в обе стороны - то есть возможность вызвать C++-код из скрипта, и скрипт из C++, с выниманием результатов его работы.
    2. Возможность выполнять скрипт, когда его сурс в юникоде. Вообще анси не нужен - нужен только юникод.
    3. Из тех скриптов, которые удовлетворяют первым двум пунктам, предпочтительнее тот, у кого выше перфоманс.

    Пока что я отсек следующее:

    1. Lua всем хороша, в том числе и перфомансом, но она не умеет выполняться в юникоде. Это все портит.
    2. Python имеет бустовый байндинг, что само по себе идеально, но все портит его идиотское правило вложенностей - через отступ. Некоторые скрипты будут храниться в XML с отступами, свойственными XML, что заставит выдумывать какие-то искусственные правила по "подгонке" питона в XML в нормальный вид. Короче - ну его нафиг этот питон.

    Кто что может посоветовать?
     
  2. Cr4sh

    Cr4sh New Member

    Публикаций:
    0
    Регистрация:
    17 апр 2006
    Сообщения:
    668
    Советую взять питон и сделать соответствующие костыли для нормализации отступов.
    Всё равно ничего лучшего не найдешь же.

    UPD: Да, а перл смотрел? Чем не подошел, если смотрел?
     
  3. neutronion

    neutronion New Member

    Публикаций:
    0
    Регистрация:
    31 мар 2010
    Сообщения:
    1.100
    на перле программируют те, кого реально прет. Через месяц свой код кажется инопланетной технологией.
     
  4. shchetinin

    shchetinin Member

    Публикаций:
    0
    Регистрация:
    27 май 2011
    Сообщения:
    715
    TCC : Tiny C Compiler меня вполне устраивал.
     
  5. FatMoon

    FatMoon New Member

    Публикаций:
    0
    Регистрация:
    28 ноя 2002
    Сообщения:
    954
    Адрес:
    Russia
    neutronion
    Не надо так на перл )

    на Си можно такую же чумату сотворить, тоже инопланетное чужеродное нечто из крякозябр. Как пишешь, то и получаешь.
     
  6. _DEN_

    _DEN_ DEN

    Публикаций:
    0
    Регистрация:
    8 окт 2003
    Сообщения:
    5.383
    Адрес:
    Йобастан
    shchetinin
    Мне нужно чтобы сервак из XML-я брал сурс скрипта и исполнял его. Это что, серваку придется компилятор вызывать?
     
  7. shchetinin

    shchetinin Member

    Публикаций:
    0
    Регистрация:
    27 май 2011
    Сообщения:
    715
    Естественно tcc_compile_string
     
  8. _DEN_

    _DEN_ DEN

    Публикаций:
    0
    Регистрация:
    8 окт 2003
    Сообщения:
    5.383
    Адрес:
    Йобастан
    shchetinin

    Чото я так подумал... возьмем склейку строк на php:

    $str .= 'abc';

    А теперь представь, в какой адъ превратится тоже самое на пуре си. Объявить временный указатель, взять длину строки, выделить память, скопировать строку - все ж придется делать явно руками. Да потом еще и непонятно, кто эту память будет освобождать. А если выражение будет посложнее?
     
  9. SmanxX1

    SmanxX1 Member

    Публикаций:
    0
    Регистрация:
    18 июн 2008
    Сообщения:
    139
    Можно посмотреть AngelScript, но я не уверен насчет второго пункта.
     
  10. shchetinin

    shchetinin Member

    Публикаций:
    0
    Регистрация:
    27 май 2011
    Сообщения:
    715
    _DEN_
    Ну так же как и обычно писать на СИ.
     
  11. Dmitry_Milk

    Dmitry_Milk Member

    Публикаций:
    0
    Регистрация:
    20 ноя 2007
    Сообщения:
    540
    А в чем проблема хранить питоновский сорс в XML? в любом случае этот сорс из-за спецсимволов придется в заэскейпленном виде хранить, ну и пробелы в отсупах заэскейпятся. Вы ж этот сорс не в XML-файле будете править, а в отдельном редакторе.
     
  12. Dmitry_Milk

    Dmitry_Milk Member

    Публикаций:
    0
    Регистрация:
    20 ноя 2007
    Сообщения:
    540
    И раз уж не править в нем, можно вообще наверное хранить сразу байтовый стринг выполняемого объекта - меньше времени на компиляцию будет, плюс гарантия того, что в конфиге лежит выполнябельный скрипт.
     
  13. neutronion

    neutronion New Member

    Публикаций:
    0
    Регистрация:
    31 мар 2010
    Сообщения:
    1.100
    все любят гадить, но никто не любит чистить память.
     
  14. SadKo

    SadKo Владимир Садовников

    Публикаций:
    8
    Регистрация:
    4 июн 2007
    Сообщения:
    1.610
    Адрес:
    г. Санкт-Петербург
    Бери Perl и не парься. Под него ещё куча либ полезных на CPAN есть, которые облегчат тебе жизнь.
     
  15. pivikov

    pivikov New Member

    Публикаций:
    0
    Регистрация:
    19 сен 2010
    Сообщения:
    19
    Это пять! :lol:
     
  16. qqwe

    qqwe New Member

    Публикаций:
    0
    Регистрация:
    2 янв 2009
    Сообщения:
    2.914
    _DEN_
    http://lua-users.org/wiki/UnicodeIdentifers
    http://lua-users.org/wiki/LuaUnicode
    http://www.lua.ru/forum/posts/list/109.page

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

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

    (питон и перл не самые быстрые и не самые экономные к ресурсам. хотя, это важно только если важно)
     
  17. _DEN_

    _DEN_ DEN

    Публикаций:
    0
    Регистрация:
    8 окт 2003
    Сообщения:
    5.383
    Адрес:
    Йобастан
    Перл да, стремный язык :)

    Dmitry_Milk
    Таки в XML - нужно чтобы была возможность отредактировать скрипт в XML-е обычным фаром / нотпадом.

    neutronion
    Больной, примите лекарство.

    qqwe
    Я вот сейчас снова думаю про Lua - идентифаеры в юникоде не нужны. Может быть Lua и устроит, попробую еще раз все обдумать...
     
  18. Pavia

    Pavia Well-Known Member

    Публикаций:
    0
    Регистрация:
    17 июн 2003
    Сообщения:
    2.409
    Адрес:
    Fryazino
    _DEN_
    Давно бы выбрали любой движок и добавили туда бы unicode. Это не так сложно.
     
  19. _DEN_

    _DEN_ DEN

    Публикаций:
    0
    Регистрация:
    8 окт 2003
    Сообщения:
    5.383
    Адрес:
    Йобастан
    Pavia

    У меня нет на это времени. Точнее - тратить его на допиливание движка - это для меня слишком не рациональная его трата. Хотя, судя по твоей подписи, ты вряд ли меня поймешь :)
     
  20. qqwe

    qqwe New Member

    Публикаций:
    0
    Регистрация:
    2 янв 2009
    Сообщения:
    2.914
    вы б написали требования ато так говорить не то чтобы непросто.
    например, если упор в скорость, то движка лучше лимбо я не встречал (жит уже есть для х86 точно. армовый жит слетает периодически приходится без жита на арме). тоже к аппетиту к ресурсам. многопоточность/модульность/сеть. уникод поддерживает. строгая типизация. классы, любимые шаблоны. наследования нет, зато есть модуля. встраивается легко, для расширения встроены спец инструменты.
    но. С, несколько отличающийся от С синтаксис (ближе к го), необходимость этот синтаксис выучить (совсем несложно, но всетаки), строгая типизация, непривычная для С-образных модульность и юних-образный подход к работе. например, чтоб вывести звук надо сделать что нибудь такое

    f := sys->open("/dev/audio", sys->OWRITE);
    sys->write(f, buffer_so_zvukom, len buffer_so_zvukom);

    а чтоб прочитать

    f := sys->open("/dev/audio", sys->OREAD);
    count := sys->read(f, buffer_so_zvukom, len buffer_so_zvukom);