LINUX.ORG.RU

Посоветуйте скриптовый язык для связки с С++

 


0

3

Добрый день!

Посоветуйте скриптовые языки, которые можно использовать в связке с С++.

Просто напишите язык который можно использовать в связке с С++, в идеале ещё и ссылку прикрепите на русскоязычный (ну или англ.) сайт по вашему языку.

Заранее спасибо.

Lua. Чего тут советовать?

anonymous
()

Boost.Python, JNI (Java) (на хабре об этом даже статья есть).
Об этом всём советую тс-у самому найти.

kachsheev ★★★
()

Луа если важна скорость, пистон если предполагается что эти скрипты кто-то еще помимо разработчиков будет писать.

vazgen05 ★★★
()

lua, squirrel, lisp(ecl), forth(ficl), scheme (guile), haxe (через nekovm)

anonymous
()
Ответ на: комментарий от tailgunner

Python

Приглянулся питон... Начну с него. Спасибо!

-ещё бы ссылочку на тему «Как прикурочить питон к плюсам».

temakonkin
() автор топика
Ответ на: комментарий от anonymous

А что не так, кстати? Я не большой знаток по плюсам, но Lua это чуть ли не стандарт для встраиваемых языков, простой и компактный, в отличие от Питона. Что за специальные проблемы с крестами?

tired_eyes
()
Ответ на: комментарий от MKuznetsov

Насколько я знаю, DMDscript заброшен, и вестей от него нет уже года 3.

tired_eyes
()
Ответ на: комментарий от tired_eyes

Я не большой знаток по плюсам, но Lua это чуть ли не стандарт для встраиваемых языков, простой и компактный

Сам язык простой, но встраивать стек-машину куда бы то ни было это то еще веселье. А интероп с плюсовыми объектами ваще пестня.

anonymous
()
Ответ на: комментарий от anonymous

м?

<code> int call_test( lua_State *L ) { lua::state ls(L); auto data = ls.get_opt<int>(2, -1); if( data == -1 ) { ls.push( ); ls.push( «Data is invalid.» ); return 2; } auto name = ls.get_opt<std::string>(1); auto res_table = make_table( ); res_table[1] = name; res_table[2] = data; res_table[3] = make_table( ); res_table[3][«some_calcs»] = some_calcs(name, data); res_table[3][«some_calcs2»] = some_calcs2(name, data); ls.push( res_table ); return 1; } </code> Что тут сложного? Луа простая, как топор.

anonymous
()
Ответ на: комментарий от anonymous

фак

int call_test( lua_State *L ) 
{
    lua::state ls(L); 
    auto data = ls.get_opt<int>(2, -1); 
    if( data == -1 ) { 
        ls.push( ); 
        ls.push( «Data is invalid.» ); 
        return 2; 
    } 
    auto name = ls.get_opt<std::string>(1); 
    auto res_table = make_table( ); 
    res_table[1] = name; 
    res_table[2] = data; 
    res_table[3] = make_table( ); 
    res_table[3]["some_calcs"] = some_calcs(name, data); 
    res_table[3]["some_calcs2"] = some_calcs2(name, data); 
    ls.push( res_table ); 
    return 1; 
}
anonymous
()
Ответ на: комментарий от anonymous

А вообще яб еще в сторону схемы посмотрел.

anonymous
()

в зависимости от целей встраивания, бывает резонно в С/C++ встраивать именно C/C++ :-) существуют-же всякие cling, ch

MKuznetsov ★★★★★
()
Ответ на: комментарий от anonymous

Метатаблицы? Не, не слышал. Ну this придется самому резолвить, да.

    local i = lcd_rgb.new( )
    i:set_color( 100, 150, 100 ) 
    i:set_test( "bla-bla-bla\n1234567" )
anonymous
()
Ответ на: комментарий от tired_eyes

Я не большой знаток по плюсам, но Lua это чуть ли не стандарт для встраиваемых языков, простой и компактный, в отличие от Питона.

+1

Kroz ★★★★★
()
Ответ на: комментарий от anonymous

Все я слышал, а по факту до boost.python lua в присядку дрочить и дрочить.

Давай уже сразу Java рекомендуй, чего уж мелочиться. Питон не достаточно жирный.

Ведь ТопикСтартеру явно нужны фичи, которых нет в Луа а есть в Пистоне, ты ж ведь это уже выяснил, так?

Kroz ★★★★★
()
Последнее исправление: Kroz (всего исправлений: 1)

Питон(Boost), жабоскрипт(QJsEngine)

anonymous
()

Посмотри еще chaiscript и angelscript.

sigurd ★★★★★
()

Ну и до кучи, компактная реализация js1.5 — http://duktape.org/, это если lua не нравится.

loyd
()
Ответ на: комментарий от Kroz

Давай уже сразу Java рекомендуй

JNI ваще адок. Ты походу в матчасти вообще плох.

Ведь ТопикСтартеру явно нужны фичи, которых нет в Луа а есть в Пистоне, ты ж ведь это уже выяснил, так?

ТС уже, между прочим, определился. Откуда такая боль? Да, луа компактное говно. Размер сейчас, по сравнению с удобством, мало где важен.

anonymous
()

Если вам нравится JS, то можно посмотреть на Duktape (C API близок к Lua) или v7.

lexazloy
()
Ответ на: комментарий от Kroz

фичи, которых нет в Луа а есть в Пистоне

Встраивай в проект скриптовый язычок для простоты @ разводи в нем модульно-классовую иерархию

ps: в питон апи уже завезли потокобезопасность? Или c++ проект автоматом в подарок получает GIL?

makoven ★★★★★
()

Если встраивать, то Lua. Если расширять, то Python (например, через Boost.Python). Остальное всё маргинальщина.

rupert ★★★★★
()
Последнее исправление: rupert (всего исправлений: 1)

скриптовые языки, которые можно использовать в связке с С++.

js - стильно, модно, молодёжно.

no-such-file ★★★★★
()

А чем С++ не устраивает, что понадобилось встраивать скриптовый язык?

anatoly
()

Вообще cpp-шники любят в пистон и луа. Так что если есть ненулевая вероятность, что проект будет сопровождать другие плюсовики - выбор у тебя не так богат. А вообще - почти все. От маргинальных лиспов и олдскульных перлов, до хипстерких рубей и <четамещенапридумывали>

ioway
()
Ответ на: комментарий от makoven

Или c++ проект автоматом в подарок получает GIL?

Ага. И дедлоки на нем при неаккуратном использовании :)

С луа, на самом деле, все просто только до тех пор, пока разным потокам не понадобится работать с одним экземпляром VM

annulen ★★★★★
()
Ответ на: комментарий от anonymous

Сам язык простой, но встраивать стек-машину куда бы то ни было это то еще веселье. А интероп с плюсовыми объектами ваще пестня.

Для первого и второго есть куча готовых биндингов. Простейший можно написать самому, но не использовать вообще никакой прослойки - ССЗБ

annulen ★★★★★
()

Сейчас в моде жабаскрипт. Я бы еще на встраиваемые лиспы посмотрел. Остальное — ненужно.

Oxdeadbeef ★★★
()

Настоятельно советую луа, так как у него маленький и быстрый рантайм. Питон нужен только если скрипты действительно большие, и потому, важно сделать их предельно понятными.

Aswed ★★★★★
()
Ответ на: комментарий от Aswed

Настоятельно советую луа, так как у него маленький и быстрый рантайм

Пара-тройка метров давно ничего не решают.

tailgunner ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.