Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: embed python  (Прочитано 66641 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Mayor
Специалист

ru
Offline Offline

« : 16-06-2009 12:03 » 

embed python

насколько сложно встроить интерпретатор питона в с++ приложение?

сколько может занять временить?

кто-нибудь этим занимался?
Записан

1n c0de we trust
Finch
Спокойный
Администратор

il
Offline Offline
Пол: Мужской
Пролетал мимо


« Ответ #1 : 16-06-2009 14:11 » 

Mayor, Я конечно не в курсе последней моды. Но зачем это нужно? Что, уже кто то отменил запуск внешних программ?
Записан

Не будите спашяго дракона.
             Джаффар (Коша)
Джон
просто
Администратор

de
Offline Offline
Пол: Мужской

« Ответ #2 : 16-06-2009 14:18 » 

Вить, а почему бы не, если хо? Ага
Записан

Я вам что? Дурак? По выходным и праздникам на работе работать. По выходным и праздникам я работаю дома.
"Just because the language allows you to do something does not mean that it’s the correct thing to do." Trey Nash
"Physics is like sex: sure, it may give some practical results, but that's not why we do it." Richard P. Feynman
"All science is either physics or stamp collecting." Ernest Rutherford
"Wer will, findet Wege, wer nicht will, findet Gründe."
Mayor
Специалист

ru
Offline Offline

« Ответ #3 : 16-06-2009 14:39 » 

Mayor, Я конечно не в курсе последней моды. Но зачем это нужно? Что, уже кто то отменил запуск внешних программ?
с внешними программами возни многа и потребуется чем то парсить текст в бинарный код, когда из питона теоретически сразу можно вызвать функции ...

... из соображений быстродействия и скорости написания, просто мне неохота каждый раз перекомпиливать проект, чтобы посмотреть правильно ли я понял мануал или  что дает:
SceneNode *node1 = mSceneMgr->getRootSceneNode()->createChildSceneNode( "RobotNode" );
и тп
Записан

1n c0de we trust
Finch
Спокойный
Администратор

il
Offline Offline
Пол: Мужской
Пролетал мимо


« Ответ #4 : 16-06-2009 14:48 » 

Mayor, Говориш загадками. Прям аж сфинкс. Насколько я знаю, питон это скриптовый язык. Или мы говорим совсем о разных вешах?
Записан

Не будите спашяго дракона.
             Джаффар (Коша)
Dimka
Деятель
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #5 : 16-06-2009 14:52 » 

Цитата: Mayor
парсить текст в бинарный код
Цитата: Mayor
... из соображений быстродействия и скорости написания, просто мне неохота каждый раз перекомпиливать проект, чтобы посмотреть правильно ли я понял мануал или  что дает:
SceneNode *node1 = mSceneMgr->getRootSceneNode()->createChildSceneNode( "RobotNode" );
и тп
Сколько читаю твоих тем, всякий раз поражаюсь несоответствием активности и знаний. Причём со временем положение не улучшается.
Записан

Программировать - значит понимать (К. Нюгард)
Невывернутое лучше, чем вправленное (М. Аврелий)
Многие готовы скорее умереть, чем подумать (Б. Рассел)
Serg79
Команда клуба

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #6 : 16-06-2009 15:47 » 

с внешними программами возни многа и потребуется чем то парсить текст в бинарный код, когда из питона теоретически сразу можно вызвать функции ...
Mayor, Ты думаешь возни будет намного меньше, если Ты попытаешься в свою программу на 'C++' встроить интерпретатор Python-а? Улыбаюсь
Записан
Mayor
Специалист

ru
Offline Offline

« Ответ #7 : 17-06-2009 04:02 » 

возни я думаю будет не меньше, но зато не придется при каждой итерации проэкт перекомпилировать

ааа димка наконец то появился даже стал отвечать, ты думаешь задача не подъемна или для меня не подъемна?
как бы ты оценил расход своего времени, по интеграции интерпретатора питона в проект и написание врапера для вызова из питона 2х десятков сишных библиотечных функций с параметрами и результатом?
или бы просто не стал за такое браться?

питон поддерживает компиляцию в байт код, с ускорителем psyco производительность имхо будет где то на уровне джавы\clr, ну если действительно питоновская функция слишком часто будет вызываться я просто ее в с++ код перенесу, если ваще буду писать на нем какие то часто вызываемые функции

Записан

1n c0de we trust
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #8 : 17-06-2009 04:18 » 

Offtopic:

Майора нужно привязать к ближайшей гидротурбине и зарабатывать на продаже дешёвого электричества Улыбаюсь
Поставлю в угол.
Записан

Антон (LogRus)
Глобальный модератор

ru
Offline Offline
Пол: Мужской
Внимание! Люблю сахар в кубиках!


WWW
« Ответ #9 : 17-06-2009 04:42 » 

Вообще в мануале всё написано есть целый раздел Extending and Embedding the Python Interpreter
если работаешь на винде поставь себе ActivePython там ман хороший
и посмотри в сторону языка lua, на нём скрипты к UT писаны
Записан

Странно всё это....
RXL
Технический
Администратор

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #10 : 17-06-2009 05:21 » 

LogRus, на Питоне, к примеру, Battle Field 2 написан - у него все настроечные скрипты по прежнему в исходниках.
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
Антон (LogRus)
Глобальный модератор

ru
Offline Offline
Пол: Мужской
Внимание! Люблю сахар в кубиках!


WWW
« Ответ #11 : 17-06-2009 05:48 » 

RXL, я ж не спорю, а предлагаю альтернативные решения Улыбаюсь
Записан

Странно всё это....
Dimka
Деятель
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #12 : 17-06-2009 07:00 » 

Цитата: Mayor
ты думаешь задача не подъемна или для меня не подъемна?
Это уже комплекс какой-то. Любую задачу мерять по степени её "крутости", а не по практической потребности. Впрочем, вроде бы я это уже говорил давно - дежавю какое-то.

Цитата: Mayor
питон поддерживает компиляцию в байт код, с ускорителем psyco производительность имхо будет где то на уровне джавы\clr
Тут вообще без комментариев. Про JIT-компиляцию ты, похоже не слышал вовсе, а всё туда же - мерять.

Ну и про стратегии разработки, учитывающие специфику языков (то, что для разработки компилируемых и интерпретируемых программ, разработки с и без отладчика применяют разные приёмы и иначе строят циклы кодирование-отладка), ты вообще не задумывался - некогда думать, кодить надо.
Записан

Программировать - значит понимать (К. Нюгард)
Невывернутое лучше, чем вправленное (М. Аврелий)
Многие готовы скорее умереть, чем подумать (Б. Рассел)
Mayor
Специалист

ru
Offline Offline

« Ответ #13 : 17-06-2009 10:04 » 

Вообще в мануале всё написано есть целый раздел Extending and Embedding the Python Interpreter
если работаешь на винде поставь себе ActivePython там ман хороший
и посмотри в сторону языка lua, на нём скрипты к UT писаны

у нас геймдизайнер на прошлом проэкте с питоном работал, одна из причин по которой от луа отказались,
вторая причина то что луа один из самых тормазнутых интерпретаторов
третья причина у нас нет левел дизайнера-скриптовика который ни на чем кроме луа скриптовать не умеет
четвертая причина, у меня создается впечатление что когда зайдет до реализации серьезной логики то я пролечу с луа, как когда то было с перлом
пятая причина, есть проэкт который вместо встаивания питона, написал на питоне врапер к интересующей библиотеке, правда скорее всего модифицировав бибилиотеку- может быть потом удасться почерпнуть каких нить идей из него

скрипты к ut3 написаны на самопальном языке помеси с++ и джавы, но если есть лимон зеленых на этот движок то проблем с нахождением скриптовиков с опытом работы на нем не бывает

актив питон скачать не успел почему-то хватило просто обычной открытой версии питона 3.0.1 с питон орг

начал читать Extending and Embedding the Python Interpreter, очень непомятно написано, и отожрет очень много времени на освоение, едиственное что сумел дак это слинковать проэкт с интепретатором питона, проинициализировать его, и выполнить пару простых текстовых команд типа:
a="lalala"
и из другой сишной функции
print(a)
в принципе система ввода вывода оказалась замкнута на сишную консоль, и переменные автоматически хранятся между функциями

но ни о каком вызове сишных функций и передаче переменных на данный момент не может быть и речи - все общение с++ с питоном идет через консоль Жаль
Записан

1n c0de we trust
Mayor
Специалист

ru
Offline Offline

« Ответ #14 : 17-06-2009 10:26 » 

Цитата: Mayor
ты думаешь задача не подъемна или для меня не подъемна?
Это уже комплекс какой-то. Любую задачу мерять по степени её "крутости", а не по практической потребности. Впрочем, вроде бы я это уже говорил давно - дежавю какое-то.

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

как следствие требуется либо нанять тим лида с большим опытом работы, который поставит эту задачу в рамки четкого тайм-менеджмента с чуть ли не подневным контролем исполнения, либо потихоньку упрощасть задачу до уровня 1 недельной сложности, а дальше : "50% на 50% - либо встречу либо не встречу" (с)

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

если дать такую задачу любому местному исполнительному программисту работающему не на яндексе, он скажет без проблемм 3 месяца и все готово, естественно ничего через 3 месяца не будет готово иначе он бы уже давно работал в том же яндексе иже с ними


Цитата: Mayor
питон поддерживает компиляцию в байт код, с ускорителем psyco производительность имхо будет где то на уровне джавы\clr
Тут вообще без комментариев. Про JIT-компиляцию ты, похоже не слышал вовсе, а всё туда же - мерять.

тут я про то что питон не интерпретатор, а компилятор, вначале идет байт код есле его уже его до этого не скомпилили, или как ты его называешь jit, а потом уже исполнение
http://en.wikipedia.org/wiki/Psyco это вот это
байт код байт коду рознь, как и виртуальные машины, если пожертвовать масштабируемостью то можно с успехом тягаться с jit языками


Ну и про стратегии разработки, учитывающие специфику языков (то, что для разработки компилируемых и интерпретируемых программ, разработки с и без отладчика применяют разные приёмы и иначе строят циклы кодирование-отладка), ты вообще не задумывался - некогда думать, кодить надо.

из всех стратигей у меня agile и парное пограммирование, просто мозгов не у кого не хватае написать ТЗ и строго его придерживаться до конца проэкта, что до кодинга, то похоже я еще не написал ни строчки кода, который войдет в проэкт, во всяком случае я очень удивлюсь если так окажется
Записан

1n c0de we trust
Mayor
Специалист

ru
Offline Offline

« Ответ #15 : 17-06-2009 10:28 » 

RXL, я ж не спорю, а предлагаю альтернативные решения Улыбаюсь

решение то хорошее, мы паралельно подумываем поискать недорогой платный движок, который скорее всего окажется с интеграцией луа
Записан

1n c0de we trust
Dimka
Деятель
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #16 : 17-06-2009 11:11 » 

Цитата: Mayor
у меня создается впечатление что когда зайдет до реализации серьезной логики то я пролечу с луа, как когда то было с перлом
И на том, и на другом языке можно реализовать логику любого уровня сложности, если руки растут откуда надо.

Цитата: Mayor
как следствие требуется либо нанять тим лида с большим опытом работы, который поставит эту задачу в рамки четкого тайм-менеджмента с чуть ли не подневным контролем исполнения, либо потихоньку упрощасть задачу до уровня 1 недельной сложности
Опытный teamleader тем и отличается, что головой думает ДО того, как его команда начнёт что-то кодить. И вместо того, чтобы делать так, как делают опытные люди, у тебя есть другое предложение - найти и "впендюрить" в проект такое средство, которое разом решит все сложности.

Цитата: Mayor
из всех стратигей у меня agile и парное пограммирование, просто мозгов не у кого не хватае написать ТЗ и строго его придерживаться до конца проэкта, что до кодинга, то похоже я еще не написал ни строчки кода, который войдет в проэкт, во всяком случае я очень удивлюсь если так окажется
Охотно верю. Одно изображение бурной деятельности, манипулирование новомодными аббревиатурами - и за всем этим нулевой результат.
Записан

Программировать - значит понимать (К. Нюгард)
Невывернутое лучше, чем вправленное (М. Аврелий)
Многие готовы скорее умереть, чем подумать (Б. Рассел)
Mayor
Специалист

ru
Offline Offline

« Ответ #17 : 17-06-2009 16:00 » 

И на том, и на другом языке можно реализовать логику любого уровня сложности, если руки растут откуда надо.

для меня будет проще на питоне, чем на луа


Опытный teamleader тем и отличается, что головой думает ДО того, как его команда начнёт что-то кодить. И вместо того, чтобы делать так, как делают опытные люди, у тебя есть другое предложение - найти и "впендюрить" в проект такое средство, которое разом решит все сложности.
ну пока что еще никто из тех кто думает головой не отказывались от встроенной виртуальной машины в таких проэктах

Охотно верю. Одно изображение бурной деятельности, манипулирование новомодными аббревиатурами - и за всем этим нулевой результат.

ну и какой бы ты результат принял за ненулевой?
Записан

1n c0de we trust
Mayor
Специалист

ru
Offline Offline

« Ответ #18 : 17-06-2009 16:09 » 

переговорил с профи:
по молодости будучи лидом ему приходилось встраивать в проэкт интерпретатор луа, управился за 2 дня, но естестно он намного способнее меня и луа знал намного лучше, чем я знаю питон
сейчас при использовании готовых биндингов это может занять 2 часа

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

в общем, как я понял, стоит поскать готовый биндинг какого нить интепретатора к движку или поискать движок сразу со встроенным интепретатором
Записан

1n c0de we trust
Mayor
Специалист

ru
Offline Offline

« Ответ #19 : 20-06-2009 13:33 » 

дали довольно точную характеристику, чем я занимаюсь Улыбаюсь

 Is embedding so difficult that only a newbie is dumb enough to try it?
Записан

1n c0de we trust
Mayor
Специалист

ru
Offline Offline

« Ответ #20 : 20-06-2009 17:27 » 

фух, типа встроил до уровня вызова функций:

Код:
// main.cpp
#include <boost/python.hpp>

extern "C"  void inithello(void); // хз на кой она

int main( int argc, char ** argv ) {
using namespace boost::python;
PyImport_AppendInittab("hello", &inithello);
Py_Initialize();
PyRun_SimpleString(
"import hello \n"
"print hello.greet(1)\n" );
//Py_Finalize();
return 0;
}

// greet.cpp
char const* greet(unsigned x)
{
   static char const* const msgs[] = { "hello", "Boost.Python", "world!" };
   //if (x > 2)
       //throw std::range_error("greet: index out of range");
   return msgs[x];
}

#include <boost/python.hpp>
using namespace boost::python;
BOOST_PYTHON_MODULE(hello)
{
    def("greet", greet, "return one of 3 parts of a greeting");
}

придется еще долго изучать:
 py++ - для автоматизирования процесса экспозирования объектов рендеринга
    dep: gccxml - парсит с++ хидеры в хмл
 libboost - бидит питон с с++

 относительно прямого использования python c\api - сразу отпадает с моим уровнем знаний, требует экспертных знаний в с++ и питоне, без них возникает чехорда со ссылками на питоновские объекты, утечки памяти, ссылки на удаленные сборщиком мусора объекты ... и просто жуткие требования к обработчикам с++ исключений
Записан

1n c0de we trust
Dr2Dk
Новенький

ru
Offline Offline

« Ответ #21 : 24-12-2010 08:36 » 

Цитата: Mayor
у меня создается впечатление что когда зайдет до реализации серьезной логики то я пролечу с луа, как когда то было с перлом
И на том, и на другом языке можно реализовать логику любого уровня сложности, если руки растут откуда надо.
Любого ли?
Никогда еще не сталкивались с ситуацией, как задача, по мере усложнения, начинает буксовать?

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


Добавлено через 2 минуты и 14 секунд:
из всех стратигей у меня agile и парное пограммирование, просто мозгов не у кого не хватае написать ТЗ и строго его придерживаться до конца проэкта, что до кодинга, то похоже я еще не написал ни строчки кода, который войдет в проэкт, во всяком случае я очень удивлюсь если так окажется
А чего? Никого из опытных в вашей ситуации не принято ставить сверху? В виде руководства?
« Последнее редактирование: 24-12-2010 08:39 от Dr2Dk » Записан
Dimka
Деятель
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #22 : 24-12-2010 10:20 » new

Цитата: Dr2Dk
Язык, позволяющей программировать удобным для человека образом сложные сущности - имеет для достаточно сложных задач существенное преимущество.
Дело не в языке, а в подходе. Самым распространённым в настоящее время является объектно-ориентированный подход, позволяющий инкапсулировать "сложности" внутри объектов и выделять в решении уровни абстракции. И Lua, и Perl позволяют писать достаточно структурированный код, чтобы непосредственно в нём программист мог выразить структуру решения.

Цитата: Dr2Dk
Никогда еще не сталкивались с ситуацией, как задача, по мере усложнения, начинает буксовать?
А причём тут язык программирования?
Записан

Программировать - значит понимать (К. Нюгард)
Невывернутое лучше, чем вправленное (М. Аврелий)
Многие готовы скорее умереть, чем подумать (Б. Рассел)
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines