我为什么要嵌入脚本语言?

Mai*_*ein 8 c++ python lua

我现在正在学习C++,我听过很多关于嵌入式脚本语言的知识.我想象它完全不同.

我以为我会用C++编写所有性能繁重的函数,并用Lua或Python等脚本语言调用它们.

但它似乎是另一种方式. - >在Lua/Python中编写函数并用C代码调用它们.

在C++中嵌入语言而不是用C++编写API并用另一种语言调用这些函数有什么好处?

例:

// function in c++
int expensiveFunction(){
  return 1;
}
Run Code Online (Sandbox Code Playgroud)

然后在Python中我将调用此函数,我将从C++获得性能,但由于Python的运行时解释器,可以在运行时进行更改.

Mic*_*ire 5

实际上,很多游戏引擎都喜欢通过嵌入Lua或Python来构建引擎接口.这有以下优点:

  • 非程序员可以与引擎连接.
  • 您无需重新编译以进行较小的脚本更改.
  • 脚本中的错误可能不会导致整个系统崩溃.

对于需要脚本语言灵活性但希望获得C++性能的项目,C++非常有用.我没有听说过使用C++作为前端的项目,使用脚本语言作为后端.

API风格

我们在公司的软件中使用这种风格.我们通过Windows DLL公开API,可以很容易地被大多数语言调用.我们特别支持VB和VBA.当后端来自脚本制作者的控制之外时,这很好.但是,很难调整脚本制作者的观点所引起的问题.

好处

  • 强烈的脱钩
  • 可从不同语言访问

缺点

  • 很难调试2个进程

嵌入式

该软件实际上将脚本解释器嵌入到软件中.这样,您可以将功能公开,就像它们是本机功能一样.在这种风格中,脚本制作者和后端程序员通常都在同一家公司.传统软件也可以使用它来允许其他人扩展应用程序的功能.如果他们共享源代码,您可以更容易地调试脚本引起的问题.该应用程序还负责何时以及如何启动脚本.但是,为了支持其他语言,应用程序开发人员必须嵌入其他解释器.

好处

  • 更强的耦合
  • 更容易调试一个进程

缺点

  • 只能通过批准的语言访问