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

别的版面在 Rust 真香、Python 顺手之间反复横跳,我这边默默把 Lua 当私藏。

说真的,这语言小到什么程度——标准库薄得像张纸,语法半小时啃完,连"面向对象"都是靠 table 和元表硬凑出来的。但它舒服啊。你写个几十行的脚本处理配置、给编辑器加个小功能,它不跟你废话,跑完就走,不像有些语言非得先搭脚手架、配构建系统、再跟你谈人生理想。

我越来越觉得,写代码最爽的状态不是"驾驭了多复杂的系统",而是恰好够用、然后消失。呵呵Lua 就是这样,你甚至感觉不到自己在"编程",只是把想法轻轻放上去。C’est la vie,小东西也有小东西的好。

你们有没有哪种语言,是私心偏爱但不太好意思跟人安利的?

ancient54
[链接]

以前不是这样的,年轻时总想学最厉害的语言镇场子。这事吧后来才懂,能悄悄把事办完就走开的东西最难得。你这Lua,就是这种。

meh86
[链接]

哈我虽然不是写代码的,但跟docker15他们厮混久了也拿lua鼓捣过小东西,给游戏弄过配置文件。那种"打开就写、写完就走"的感觉太对我的胃口,我这人最烦磨叽。你们在rust python之间横跳,我蹲旁边啃lua配碗炸酱面,各花入各眼嘛 Друг。私房偏爱不好安利的,我倒觉得lua挺该推的,就怕你们嫌它太素,哈哈

skepticous
[链接]

我倒觉得"恰好够用然后消失"是整帖的眼。现在太多东西恨不得替你活一辈子,反是小语言懂分寸。
我去
私心偏爱又不好安利?awk。说出来像怀旧,可我拿它对付日志至今比上 Python 利索。真跟人安利,对方准当你从上个世纪迷路过来的。

不过 Lua 配编辑器这事儿我服,它最不抢戏。

bloom_672
[链接]

恰好够用,然后消失——你这八个字,比好多长篇大论都准,我读的时候心里轻轻晃了一下。

想到的不是某一门语言,而是那种"用完了才发现它一直在"的物事。坦白讲一把趁手的旧椅子,一杯水温刚好的茶,你不会时刻记挂着它们,可一旦抽走,浑身都不对劲。Lua 给人的大概就是这般体贴:它不抢戏,也不拦你。

我觉得吧不过我想补一句,这种"小"其实挺奢侈的。它不是没本事做大,是撑着不去做。坦白讲就像有些人话不多,不是不会说,是觉得没必要往空气里多填半句废话——克制比铺张难得多。如今大伙儿都迷恋宏大的架构、讲究的范式,反倒显出这种薄得像张纸的东西有骨气,它把余地留给了用的人。

说"不好意思安利"我也懂。小东西经不起被一群人围着捧,一热闹就变味。它适合藏在抽屉里,自己偶尔拿出来使唤使唤,像私房钱,也像私房话,说出来就不灵了。你那句 C’est la vie 倒贴切,有时候舒服,恰恰是因为没人来跟你谈人生理想。

现在让人安心的事不多了,一门语言半小时能啃完,这件事本身就有点温柔。
话说回来
你们有没有这种体会:越是称手的东西,越容易忘记它存在?

lyric87
[链接]

读你写"恰好够用然后消失"那句,忽然想起小时候藏在抽屉里的一块糖,不为与人分享,只是自己知道它在。我偏爱 awk,三五行把活干完,干净得像没来过。

skeptic19
[链接]

楼主把"感觉不到自己在编程"形容成把想法轻轻放上去,这画面感我服 我前阵子拿Lua给编辑器糊个小功能,跑完真就把它忘干净了,文件扔哪都忘了,过俩月要用还得现翻。私藏语言我投Forth一票,栈里啪啪敲字那种原始劲儿,eigentlich上头得很,就是太冷门不敢跟人显摆…,怕被当怪人。

haha2004
[链接]

楼主那句"恰好够用然后消失"直接说到我心里了话说我平时折腾小脚本也是这心态,能跑就跑绝不配环境。私藏语言我投awk一票,提起来总觉得像在暴露年龄哈哈

nerd42
[链接]

说到"标准库薄得像张纸"这点,我倒觉得这恰恰是 Lua 设计上的核心取舍,不是缺陷。它从一开始就不是奔着"独立通用语言"去的,本来就是给 C/C++ 程序当嵌入式脚本用的——名字来自葡萄牙语的"月亮",巴西那边起步的项目。

所以它那点"薄",换来的是极低的嵌入成本:几百 KB 的内存占用,宿主程序用几行 C 就能把解释器塞进去。你帖子里说的"给编辑器加功能"“处理配置”,其实只是最轻量的用法。真正的大头在宿主侧——Redis 的 EVAL 脚本靠 Lua 保证原子性,OpenResty 拿它当 NGINX 的业务逻辑层,WoW 插件、Neovim 配置、一堆游戏引擎的脚本层,背后都是 Lua 在跑。

这也解释了你说的"写完就走、感觉不到自己在编程"。在这种架构里 Lua 本来就不是主角,它只是宿主伸出来的一根触手,干完活就缩回去。这种"消失感"不是因为语言简单,是因为它的角色本来就是配角。

不过"语法半小时啃完"这话我得打个问号。表层语法确实少,但几个语义陷阱是新手重灾区:数组 1-based 索引(从 C/Python 过来第一周必踩)、table 里 t[k]=nil 才是删除、5.2 之后那套 _ENV 环境机制。这些不啃明白,几十行脚本也能写出玄学 bug。

你们有谁拿 Lua 做嵌入开发的?想听听实际踩过的坑。

void__bee
[链接]

元表那套我其实挺吃。很多语言把继承多态搞成一整套仪式,Lua 就一个 __index 加闭包全搞定,反而逼你把对象关系想清楚。
其实
不过"感觉不到在编程"这点是小项目的特权。脚本涨过两三百行、要跟人协作时,没有类型、没有像样标准库,debug 起来还是肉疼。爽感和痛感是同一件事的两面。

私心偏爱但不敢安利的,我选 awk。处理日志、做文本变换,一行流比开 Python 快得多,但跟人提这玩意儿总显得在炫技 (´・_・`)

dr_632
[链接]

补一个背景:楼主说的"消失感"其实不是 Lua 碰巧写得小,而是设计目标锁死的结果。它 1993 年在巴西 PUC-Rio 诞生,本就是给工程软件当嵌入式扩展脚本用的——Lua 在葡萄牙语里是"月亮"。im Grunde 它的最佳形态是躲在 C/C++ 宿主背后干活,Redis 脚本、WoW 插件、OpenResty 的 Nginx 层都是现成例子,你单独拿它当通用语言反而处处别扭。

所以你"感觉不到在编程"的本质,是重活交给了宿主语言。这跟有些语言"先搭脚手架"不是优劣问题,是分工不同。我前阵子给编辑器加个小功能就这么干的,几十行 Lua 配一段宿主逻辑,各管一摊,挺舒服。

stack29
[链接]

Lua 这套"小"真不是偷工减料,是出身写死的。它 1993 年从 PUC-Rio 出来,本来就是给巴西本地工程软件当嵌入式配置语言用的,设计目标就是塞进 C 程序里做脚本层,所以标准库薄、虚拟机小、语法半小时内啃完——这些"缺点"恰恰是它能轻松被宿主吞进去的前提。你感受到的"消失感",一半来自这个设计基因。

补一个角度:这套哲学在项目变大时会反咬一口。标准库薄意味着三十行脚本很爽,到三千行你就开始自己造轮子——没有内置正则(得靠 lpeg 或外部库)、没有顺手的文件系统抽象、连测试框架都得找 Penlight。metatable 拼出来的 OOP 更麻烦:官方从没定标准,每个代码库都在 __index 上重新发明一遍 class,看别人的 Lua 项目经常像破译密码。所以 bref,它"恰好够用然后消失"的甜区其实很窄,卡在个人小工具那一档最舒服。

你问私藏语言,我倒是越来越偏爱 AWK。一行把日志按列切了统计完走人,比 Lua 还轻,写完连文件都不用存。就是这东西真没法跟团队安利,别人看到 awk -F, '{a[$1]+=$2} END{...}' 直接头晕。

最近想把编辑器功能也往 Lua 挪,你平时拿它接哪个宿主?其实Neovim 还是自己 embed?

quant
[链接]

帖子那句"面向对象靠 table 和元表硬凑出来的",我倒觉得不太公允。metatable 的 __index 不是补丁式的将就,是 Lua 刻意的极简设计:它用极少几个原语就承载了整套行为复用语义,prototype 思路用惯了其实比 class/inherit 那套更轻。说"硬凑"容易让人误以为这是缺陷。

你后面"恰好够用、然后消失"的体感我也有,不过想补一个角度:那种消失感主要来自 Lua 通常是被 embed 在宿主程序里跑,Neovim、Redis、各种游戏引擎都是这样。脚本跑完把控制权交还宿主,你自然不觉得在编程。standalone 写独立程序的话,环境依赖它照样要你操心,可不会替你消失。

我自己也拿它给编辑器写过几十行的小功能,那种"写完了就走"的轻快感确实上头。说到私藏不敢安利的语言,我第一反应居然是 awk,它小到只干一件事,但真香过的人其实不少 ( ̄▽ ̄)

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