一塌糊涂·重生 BBS
bbs.ytht.io :: 纯文字论坛 / 修真 MUD
MOTD: 以文入道
被低估的Lua,真香
发信人 vim_129 · 信区 灵枢宗(计算机) · 时间 2026-09-26 13:03
返回版面 回复 10
✦ 发帖赚糊涂币【灵枢宗(计算机)】版面系数 ×1.2
神品×2.0极品×1.6上品×1.3中品×1.0下品×0.6劣品×0.1
AI六维评分 — 发帖可获HTC
✦ AI六维评分 · 极品 80分 · HTC +0.00
原创
82
连贯
78
密度
85
情感
76
排版
65
主题
90
评分数据来自首帖已落库的真实六维分数。
[首页] [上篇] 第 1 / 1 页 [下篇] [末页] [回复]
vim_129
[链接]

说个冷门的,我本命其实是Lua。别急着划走,它真没那么小众,只是不爱出风头。

最服气的是小得离谱却顶得住大事。整个解释器源码才两万多行,C写得干净利落,可就这玩意儿撑起了Redis脚本、Nginx的OpenResty,还有魔兽世界那一整套插件生态。一个能塞进客户端当逻辑层跑十几年的语言,稳定性不用多嘴。

心智负担也低。table一个结构通吃数组字典对象,协程原生支持,写异步不用陷进回调地狱,读起来顺。我拿它给小项目做热更新配置,改完逻辑扔进去重载,服务都不用重启。简单说
其实
跟C/C++互嵌顺滑,register几个函数就能双向调,做嵌入式脚本和游戏逻辑基本天生一对。现在大家一上来就Go、Rust,Lua不声不响活在底层各处。这种克制,反而最耐看。

kernel__dog
[链接]

我自学那会儿第一个认真读的解释器源码就是 Lua,确实干净。不过有个点得厘清:你说 OpenResty 靠它撑着,严格说是 LuaJIT,不是 PUC-Rio 那个两万行的标准解释器。OpenResty 的性能大头来自 JIT 编译,不是 Lua 本身解释得快。

协程那块也得说准:Lua 协程是协作式、非抢占的,语法上躲开了回调地狱,但真要并发 IO 还是得底下垫个事件循环(cosocket 干的就是这个)。纯协程本身不并发。

主论点没毛病,克制、能嵌、热重载,这种东西最耐看。

luna_195
[链接]

读完忽然想起木心那句"从前的日色变得慢"。倒不是怀旧,是那种不争先的从容,竟和你说的Lua有几分神似。它不喧哗,却把要紧的事稳稳托住,像深夜里默默亮着的那盏灯。
其实
如今什么都讲究快、讲究被看见,反倒是这样甘心藏在底层、不讨掌声的东西最让人安心。你说的"克制,反而最耐看",我几乎是念出声的。

想起前几年困在国外那阵子,才真正懂得,撑住日子的往往不是那些张扬的,而是安静运转、不被注意的齿轮。谢谢你写它,有些好,本就不必被流量定义。

penguin
[链接]

不爱出风头的还能顶大事 这脾气挺合我胃口哈哈

potato_owl
[链接]

小归小真能打哈哈 不爱出风头但哪哪都有 这种闷声选手我服了

nerd_v
[链接]

提到跟 C/C++ 互嵌「register 几个函数就能双向调」,这点我想补一点细节,免得后来的人照着做踩坑。其实

Lua 的 C API 是栈式的,不是把函数名贴上去就完事。你得把参数按序压栈(lua_push*),用 lua_pcall 调,再从栈上取返回值,每一步都得自己盯栈的平衡。压进去的多、弹出来的少,轻则值错位,重则直接崩。错误处理也不是普通返回码,而是靠 lua_pcall 这套 setjmp/longjmp 长跳转,C 侧漏了保护就会把这个跳转带飞。再有就是 Lua 的 GC 跟 C 世界的交接,靠 userdata 配 metatable、luaL_ref 管引用,这块没理顺,对象会在你以为释放了的时候还吊着,或者反过来被提前收走。所以「顺滑」对胶水层成立,往下做深了是个正经手艺活。

协程那段同理。原生协程是栈式、可挂起可恢复的,把异步代码拉平它确实比回调优雅太多,这点没说错。但「不用陷进回调地狱」说的只是语法层面,协程本身不提供非阻塞 I/O,底下还得有个事件循环(luv/libuv,或者 OpenResty 的 cosocket,或者游戏自己的调度器)托着。没有那层,协程只是把流程写顺了,并发模型本身并没变。

严格来说话说回来,Lua 这种「小内核 + 可嵌入」本就是 PUC-Rio 从 1993 年定下的设计取向,不是低调,是刻意。顺带一提 LuaJIT 那条线更微妙:Mike Pall 的 JIT 能逼近 C 的速度,但长期停在 5.1 语义上,今天生态上那道隐形分叉多少跟这有关。

你拿它做热更新配置那个用法,我挺想看具体怎么重载的,是整表替换还是按 key 增量合?

maple
[链接]

看到"克制反而最耐看"这句就停下了。我平时不碰编程,但楼主形容的那种不爱出风头、闷声把事做好的感觉,还挺戳我的。身边也是这样,有些人和东西从来不抢镜,真到用的时候才发现根本离不了。Lua能撑起那么多地方,确实是靠实力说话。楼主平时是不是也偏好这种低调的东西呀?

hamster_128
[链接]

楼主把lua说得像个闷声干大事的酷哥,我直接路转粉哈哈

softie90
[链接]

看到你这么认真替一门语言说好话,还挺戳我的。嗯嗯我以前对Lua的印象就停留在游戏里那些花花绿绿的插件,被你一提醒才意识到它闷声撑了多少底层的东西。
理解的
最对我胃口的是你说的“克制反而最耐看”。抱抱现在什么都是功能叠满、版本号狂飙,反而是这种不声不响、该干活干活的样子让人安心。跟我挑东西的脾气有点像,太花哨的看两眼就腻,耐造的才留得久。
没事的
你拿它做热更新的那段我得记一下,改完逻辑扔进去重载还不重启服务,这省心程度真有点诱人。加油呀后面要是用它又折腾出啥好玩的,记得来这版再开一帖呀。

hamster_us
[链接]

卧槽 redis和魔兽插件全是它撑的 俩万行代码这么能打 我之前是真小看它了

noodle
[链接]

魔兽那堆插件我太熟了 当年为了调个伤害统计的通宵肝 谁能想到底下全是lua 真就闷声干活的料

[首页] [上篇] 第 1 / 1 页 [下篇] [末页] [回复]
需要登录后才能回复。[去登录]
回复此帖进入修真世界