Обработка введенного кода C++ во время выполнения приложения
От: hochucho  
Дата: 15.10.10 11:46
Оценка:
Задача следующая: в приложении есть текстовое поле, во время выполнения приложения хотелось бы вводить в это поле код C++ (новые функции, объявлять переменные), чтобы потом, эти функции обрабатывались численными методами.
С чего начать, где почитать?
Re: Обработка введенного кода C++ во время выполнения прилож
От: ShubinEV Россия http://erladvisor.blogspot.de/
Дата: 15.10.10 11:57
Оценка: 2 (1)
Здравствуйте, hochucho, Вы писали:

H>Задача следующая: в приложении есть текстовое поле, во время выполнения приложения хотелось бы вводить в это поле код C++ (новые функции, объявлять переменные), чтобы потом, эти функции обрабатывались численными методами.

H>С чего начать, где почитать?

В программу можно встроить интерпретатор скриптового языка. Можно вызывать shell функцией system.
Если нужны функции и т.д. лучше Python. Есть библиотек Boost.Python, но можно и без нее обойтись.
С C++ сложнее — это компилируемый язык. Возможность в runtime компилировать новый код есть, но как его подлинковать к запущенной программе
человечеству неизвестно. Можно даже перелинковать приложение и перезапуститься, но
1) это врядли то, что вам требуется;
2) это жуткий изврат.

PS. Забыл, можно воспользоваться динамическими библиотеками (подгружать их во время исполнения).
Но компилировать во время исполнения — такого ни разу не видел.
Re[2]: Обработка введенного кода C++ во время выполнения при
От: hochucho  
Дата: 15.10.10 12:39
Оценка:
Здравствуйте, ShubinEV, Вы писали:

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


H>>Задача следующая: в приложении есть текстовое поле, во время выполнения приложения хотелось бы вводить в это поле код C++ (новые функции, объявлять переменные), чтобы потом, эти функции обрабатывались численными методами.

H>>С чего начать, где почитать?

SEV>В программу можно встроить интерпретатор скриптового языка. Можно вызывать shell функцией system.

SEV>Если нужны функции и т.д. лучше Python. Есть библиотек Boost.Python, но можно и без нее обойтись.
SEV>С C++ сложнее — это компилируемый язык. Возможность в runtime компилировать новый код есть, но как его подлинковать к запущенной программе
SEV>человечеству неизвестно. Можно даже перелинковать приложение и перезапуститься, но
SEV>1) это врядли то, что вам требуется;
SEV>2) это жуткий изврат.

SEV>PS. Забыл, можно воспользоваться динамическими библиотеками (подгружать их во время исполнения).

SEV>Но компилировать во время исполнения — такого ни разу не видел.

Спасибо.
С Python до сих пор не сталкивался.
Скажу пару слов, что в идеале должно получиться, чтобы понять, Python — это то, что нужно, или не стоит тратить время на его изучение, а для решения задачи выбрать другой путь.
В приложении создаются объекты, в которых создаются свои переменные (поддержка всех стандартных типов + векторы, матрицы), функции от этих переменных, в терминах этих переменных пишутся системы уравнений (как алгебраические, так и дифференциальные). Далее из этих объектов строим систему и решаем численные методы.
В принципе синтаксис написания функций может быть любой.

До сих пор не имел никакого понятия, как это все реализовать.
Re: Обработка введенного кода C++ во время выполнения прилож
От: Serg27  
Дата: 15.10.10 12:50
Оценка: 7 (3) +1
Здравствуйте, hochucho, Вы писали:

H>Задача следующая: в приложении есть текстовое поле, во время выполнения приложения хотелось бы вводить в это поле код C++ (новые функции, объявлять переменные), чтобы потом, эти функции обрабатывались численными методами.

H>С чего начать, где почитать?
Посмотрите как устроена ЦЕРНовская система обработки данных ROOT (http://root.cern.ch). В ней используется интерпретатор C++.
Может Вам ее и использовать — поимеете неплохие возможности по научной графике?
Re[2]: Обработка введенного кода C++ во время выполнения при
От: std.denis Россия  
Дата: 15.10.10 12:58
Оценка: 4 (1)
SEV>но как его подлинковать к запущенной программе человечеству неизвестно
ну зачем же так категорично "человечество" придумало libtcc

SEV>PS. Забыл, можно воспользоваться динамическими библиотеками (подгружать их во время исполнения).

SEV>Но компилировать во время исполнения — такого ни разу не видел.
http://bellard.org/tcc/tcc-doc.html#SEC22
Re: Обработка введенного кода C++ во время выполнения прилож
От: FR  
Дата: 15.10.10 15:00
Оценка: 6 (2)
Здравствуйте, hochucho, Вы писали:

H>Задача следующая: в приложении есть текстовое поле, во время выполнения приложения хотелось бы вводить в это поле код C++ (новые функции, объявлять переменные), чтобы потом, эти функции обрабатывались численными методами.

H>С чего начать, где почитать?

Кроме питона можно еще взять lua будет проще если только для небольших строчных скриптов, и быстрее работать (http://luajit.org/).
Еще как вариант взять LLVM (http://llvm.org/) и компилировать уже самому под него.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.