Mic*_*ael 9 c++ lambda linker interpreter artificial-intelligence
有解释语言,如Lisp,Tcl,Perl等,可以很容易地在运行时在代码中定义lambda/proc/sub,并在同一个会话中对其进行评估.
存在编译语言,例如C++,其执行速度比解释的语言快得多,但是在运行时期间在编译程序中定义函数并执行它并不容易,如果可能的话.
这里的问题是执行以下操作:
在运行时定义函数:例如,基于初始输入数据导出数据的分析模型.
在循环中快速执行上述功能:例如,应用派生的分析模型来分析传入的数据.
我看到的一个解决方案不是很漂亮:
基于初始输入数据,在嵌入式Tcl中导出表示分析模型的过程.
通过评估Tcl中的一个样本点阵列的过程创建了一个查找表,从乐观的角度来说,这将覆盖适用范围.
查找表从Tcl解释器传递回二进制文件(用C++开发).
然后通过在查找表中"足够接近"值之间进行插值来分析输入数据.
上述解决方案有效,但在概念和计算方面都存在很多问题.因此,问题是:是否可以在C++中定义一个函数并使其可以在同一个运行时会话中执行?
从概念上讲,是否有可能做一些事情,比如将函数创建为字符串,在内存中编译它,并以某种方式将其链接回正在执行的二进制文件中?
Ton*_*Big 12
如果你想要开箱即用的东西,请看看ExprTK.如果你想自己写一个表达式解析器,请查看Boost Spirit.
另一种方法是动态创建C++代码,将其编译为共享库(插件)并在运行时加载它.这可能是最快的解决方案.