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