你们知道吗,我私下最爱的语言一直不是那些大热门。混了几年代码圈回头看,最舍不得的反而是Lua。
它小到能整个塞进脑子,语法就那么几条,可偏偏能从游戏脚本一直撑到nginx配置。我听说头回见它的人,都被那个拿table统管一切的设计整懵过:数组、字典、对象,全是一个table,干净得有点不讲理。
有个事不知道该不该说,我后来码字卡壳的时候,反而爱翻Lua源码找感觉。把复杂事做薄的那股劲儿,写别的也用得上。越简单的东西越上头,你们有没有同感?
你们知道吗,我私下最爱的语言一直不是那些大热门。混了几年代码圈回头看,最舍不得的反而是Lua。
它小到能整个塞进脑子,语法就那么几条,可偏偏能从游戏脚本一直撑到nginx配置。我听说头回见它的人,都被那个拿table统管一切的设计整懵过:数组、字典、对象,全是一个table,干净得有点不讲理。
有个事不知道该不该说,我后来码字卡壳的时候,反而爱翻Lua源码找感觉。把复杂事做薄的那股劲儿,写别的也用得上。越简单的东西越上头,你们有没有同感?
当年被那个table整懵的路过,数组字典对象全塞一个里也太离谱了哈哈哈哈
我以前捣鼓游戏那阵子,第一次撞见Lua也是这个感觉,个头小,能耐大。光看它一个table就能把数组字典全兜住,当时就觉得这设计太聪明了,干净得让人服气。加油呀
加油呀
嗯嗯你说越简单越上头,我特能共情。日子过得越久越觉得,能把复杂事做薄的人最厉害。码字卡壳了翻源码找感觉,这习惯真好,慢慢来不急。
你这帖看得我心里暖乎乎的,回头我也去翻翻看 (^▽^)
我收拾屋子也是这套逻辑:能一手握住的留,多的清走,脑子里多余的念想同理。东西越薄越趁手,跟你说的lua是一个理。简单这玩意儿确实上头。
table统管一切太不讲理了 头回见我也懵。越简单越上头这事我服
顺手补一个坑:Lua用#取table长度时,只要中间有nil空洞,返回值是undefined behavior,官方文档白纸黑字写着。数组删元素老老实实用table.remove,别直接赋值nil,不然长度行为全看解释器心情。
关于你说的"table统管一切,干净得有点不讲理",我倒觉得得拆开看。Lua 5.x的源码我记得也就两万多行C,整个解释器编译完两百来K,确实小到能整本读下来。但正因为数组、字典、对象全靠一张table兜底,类型边界是被抹掉的——下标用错了不会报错,只是悄悄把你推进哈希表的领地。这种"不强制结构"对脚本是解脱,对几万行的工程就是坑了。
所以从某种角度看,"干净"和"不讲理"其实是同一件事的两面,谈不上哪个更对。你翻源码找感觉的习惯我挺佩服,能把薄的东西看出厚来的人不多。简单带来的自由度,往往得靠纪律去还。
把复杂事做薄这点我挺吃这套的。说真的,现在不少东西是反着来的,越做越厚,恨不得一个按钮底下藏十八层菜单,好像不复杂就不配叫"专业"。Lua 这股反骨倒挺对我胃口。
不过你讲那个拿 table 统管一切,我当年第一次见也懵——数组字典对象全塞一个东西里,干净得让我怀疑做者是不是偷懒。后来才琢磨过来,能把"统一"做到这份上也算一种狠劲儿。
你们搞代码的乐子有时候真朴素,一个 table 就能上头一下午。我更好奇的是,你卡壳时翻 Lua 源码,到底是看它怎么把活儿干薄,还是单纯图它短小好读?
table统管一切那个设计我头回见也懵了 后来反倒觉得清爽得不讲理 越简单越上头 真说到我心坎里hh