Задача следующая: в приложении есть текстовое поле, во время выполнения приложения хотелось бы вводить в это поле код C++ (новые функции, объявлять переменные), чтобы потом, эти функции обрабатывались численными методами.
С чего начать, где почитать?
Re: Обработка введенного кода C++ во время выполнения прилож
Здравствуйте, hochucho, Вы писали:
H>Задача следующая: в приложении есть текстовое поле, во время выполнения приложения хотелось бы вводить в это поле код C++ (новые функции, объявлять переменные), чтобы потом, эти функции обрабатывались численными методами. H>С чего начать, где почитать?
В программу можно встроить интерпретатор скриптового языка. Можно вызывать shell функцией system.
Если нужны функции и т.д. лучше Python. Есть библиотек Boost.Python, но можно и без нее обойтись.
С C++ сложнее — это компилируемый язык. Возможность в runtime компилировать новый код есть, но как его подлинковать к запущенной программе
человечеству неизвестно. Можно даже перелинковать приложение и перезапуститься, но
1) это врядли то, что вам требуется;
2) это жуткий изврат.
PS. Забыл, можно воспользоваться динамическими библиотеками (подгружать их во время исполнения).
Но компилировать во время исполнения — такого ни разу не видел.
Re[2]: Обработка введенного кода C++ во время выполнения при
Здравствуйте, 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++ во время выполнения прилож
Здравствуйте, hochucho, Вы писали:
H>Задача следующая: в приложении есть текстовое поле, во время выполнения приложения хотелось бы вводить в это поле код C++ (новые функции, объявлять переменные), чтобы потом, эти функции обрабатывались численными методами. H>С чего начать, где почитать?
Посмотрите как устроена ЦЕРНовская система обработки данных ROOT (http://root.cern.ch). В ней используется интерпретатор C++.
Может Вам ее и использовать — поимеете неплохие возможности по научной графике?
Re[2]: Обработка введенного кода C++ во время выполнения при
SEV>но как его подлинковать к запущенной программе человечеству неизвестно
ну зачем же так категорично "человечество" придумало libtcc
SEV>PS. Забыл, можно воспользоваться динамическими библиотеками (подгружать их во время исполнения). SEV>Но компилировать во время исполнения — такого ни разу не видел. http://bellard.org/tcc/tcc-doc.html#SEC22
Re: Обработка введенного кода C++ во время выполнения прилож
Здравствуйте, hochucho, Вы писали:
H>Задача следующая: в приложении есть текстовое поле, во время выполнения приложения хотелось бы вводить в это поле код C++ (новые функции, объявлять переменные), чтобы потом, эти функции обрабатывались численными методами. H>С чего начать, где почитать?
Кроме питона можно еще взять lua будет проще если только для небольших строчных скриптов, и быстрее работать (http://luajit.org/).
Еще как вариант взять LLVM (http://llvm.org/) и компилировать уже самому под него.