为什么要使用lua

2020年09月20日 750点热度 0人点赞 0条评论

问题

最近给项目做一个拓展的功能,用软件的仿真输出数据对仿真的输入进行优化。通过某种优化算法去修改仿真的输入数据使得输出数据接近预期值。整个功能的业务流程差不多是这样的。

 

最开始在思考程序结构的时候觉得有两个比较难的地方。

  1. 如何能让用户足够自由的去定义从输出到输入的这么一个过程。
  2. 如何解析用户输入的数学表达式。

关于第一点如果只是在输入界面上增加一些输入选项,那将很难达到 “足够自由的去定义输入” 的这么一个目标。要达到这个目标,需要输入的数据太多了,例如指定优化哪些参数、指定仿真结果数据的筛选方式、结果数据跟优化参数之间的关系,就光是结果数据的筛选方式我都能想到十几种。 然而要是把这些东西都定义到界面上去让用户输入,那这个界面就太复杂了,这样不是我们想看到的。

关于第二点,主要是我没有找到比较好用的C++数学表达式解析库,而且就算找到了也得考虑有一些复杂的数学表达式的输入方式,也是一个麻烦的事情。

就以上两个问题,我不禁陷入了沉思,是否要在复杂的界面和足够自由的功能上去做取舍。

解决方案

最后我想到了一个两全其美的办法。

用C++实现整个功能的业务流程,但是C++只负责流程的控制,不负责流程中功能的实现,功能的实现由lua脚本来完成。这样就相当于C++只是固定了整个程序运行的时候要做哪些事情,而具体的事情要怎么做,全部由lua脚本来实现。这样用户可以直接通过编写lua脚本就可以实现高度自定义的优化算法。

然后再由C++向lua提供一些基础的函数接口,这样用户如果不是需要非常硬核的自定义功能,那么也可以在lua脚本中简单的调调函数以实现简单的优化算法功能。

大脸猫

半个C++程序员。

文章评论