我知道许多大型应用程序(例如视频游戏)是使用多种语言创建的。例如,游戏/物理引擎很可能是用 C++ 编写的,而游戏任务、GUI 可能是用 Python 或 Lua 之类的东西编写的。
我理解为什么要进行这种角色划分;将低级语言用于需要极端优化、调整、效率和速度的任务,同时使用高级语言来加快生产时间,减少讨厌的错误等。
最近,我决定进行一个更大的个人项目,并希望将项目的部分内容与上述类似。在这个时间点,我真的很困惑语言之间的这种互操作性(尤其是编译与解释)是如何工作的。
当用 C/C++ 之类的东西编写时,我非常熟悉从 ANSCII 代码测试到加载可执行文件的细节。我很好奇像电子游戏这样由多种不同语言构建的东西是如何工作的。这是一个大/广泛的问题,但我特别感兴趣的是:
- 代码级逻辑如何工作?即如何从 C++ 程序中调用 Python 代码?特别是因为它们不支持相同的内置类型?
- 程序图像是什么样的?据我所知,视频游戏在单个进程中运行,那么运行调用 Python 函数的 C/C++ 程序时运行时映像是什么样的?
- 如果从编译程序调用解释语言的代码,发生的事件顺序是什么?即如果我在我编译的可执行文件中,并且由于某种原因在循环中调用了解释语言,我是否必须在每次迭代时等待解释器?
实际上,我很难找到有关机器级别发生的事情的信息,因此我们将不胜感激。虽然我一般对软件的互操作性很好奇,但我对 C++ 和 Python 交互特别感兴趣。
非常感谢您的任何见解,即使它只是指向我可以找到更多信息的地方。