История изменений
Исправление AntonI, (текущая версия) :
Я такое велосипедил на связке с++ и питон. В питоне был класс с перегруженными операциями, при вызове eval это все конвертилось в байткод (свой) задающий формулу в обратной польской нотации. Плюсы этот байткод жевали и считали для каждого набора аргументов. Хотя генерацию байткода можно было сделать и через модуль ast.
С т.з. соотношения гибкость/производительности это имно оптимум, что бы сделать лучше придется уже дергать компайлер.
Питон тут был затем чтобы парсить формулу малой кровью. Это моно и на плюсах конечно сделать, но гораздо геморнее, а так что бы весь стек собрать уходило умеючи день-два. И питон у меня там все равно использовался.
Исходная версия AntonI, :
Я такое велосипедил на связке с++ и питон. В питоне был класс с перегруженными операциями, при вызове eval это все конвертилось в байткод (свой) задающий формулу в обратной польской нотации. Плюсы этот байткод жевали и считали для каждого набора аргументов.
С т.з. соотношения гибкость/производительности это имно оптимум, что бы сделать лучше придется уже дергать компайлер.
Питон тут был затем чтобы парсить формулу малой кровью. Это моно и на плюсах конечно сделать, но гораздо геморнее, а так что бы весь стек собрать уходило умеючи день-два. И питон у меня там все равно использовался.