动态嵌入
动态除了反射以外,还有另外一种实现方式,就是在程序中直接嵌入 Lua、V8 等动态语言引擎。
大多数语言都有类似嵌入包,比如 Go 语言有 go-duktape、otto、golua、gopher-lua。
嵌入 Python 动态语言比较少,因为 Python 引用计数机制比较麻烦,而且 Python 运行时环境太大不是基于嵌入设计。
Lua 本身天生基于嵌入设计的,实现复杂的动态逻辑,直接嵌入动态语言会方便一点。比如 Redis 支持 Lua 的嵌入,优点分离静态部分和动态部分,开发游戏就会严格区分静态部分和动态部分,静态部分是游戏引擎和服务器管理、运营,动态部分是脚本、各种运营活动、相关资源。大多数时候静态部分用 C、C++ 编写,动态部分用 Lua 嵌入。
编译
相对于 CPU 来说所有高级语言的语法都很复杂。汇编相对来说非常简单,就是在不同内存之间搬数据,做一些简单累加操作。所以高级语言不能直接交给 CPU 执行,都需要编译。所有