动态:动态语言

本文探讨了动态语言的动态嵌入,如 Lua 和 V8 在程序中的应用,以及动态语言的编译过程,包括源码到字节码的转换和解释执行或JIT编译。文章还介绍了栈式虚拟机的概念,字节码反汇编,动态语言中的类型和对象实例,名字空间,名字查找机制,并提到了动态执行的几种方式如 eval 和装饰器,以及元类在动态语言中的作用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

动态嵌入

动态除了反射以外,还有另外一种实现方式,就是在程序中直接嵌入 Lua、V8 等动态语言引擎。

大多数语言都有类似嵌入包,比如 Go 语言有 go-duktapeottogoluagopher-lua

嵌入 Python 动态语言比较少,因为 Python 引用计数机制比较麻烦,而且 Python 运行时环境太大不是基于嵌入设计。

Lua 本身天生基于嵌入设计的,实现复杂的动态逻辑,直接嵌入动态语言会方便一点。比如 Redis 支持 Lua 的嵌入,优点分离静态部分和动态部分,开发游戏就会严格区分静态部分和动态部分,静态部分是游戏引擎和服务器管理、运营,动态部分是脚本、各种运营活动、相关资源。大多数时候静态部分用 C、C++ 编写,动态部分用 Lua 嵌入。

编译

相对于 CPU 来说所有高级语言的语法都很复杂。汇编相对来说非常简单,就是在不同内存之间搬数据,做一些简单累加操作。所以高级语言不能直接交给 CPU 执行,都需要编译。所有

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值