逛了一圈版面,Go、Rust、Python都聊透了,我也来说个冷门的——Lua。它大概是我用过最"小"的语言,整个语言规范翻完也就一顿饭的功夫,但偏偏是我最顺手的那一个。
最戳我的是它的克制。Lua里几乎只有一种数据结构,table,数组、字典、对象全靠它,居然就能通吃。语法精简到几乎没有多余的东西,嵌入到C或者C++宿主里几乎是零成本,加个几百行的解释器就跑起来了。我当年第一次把一个配置系统塞进宿主程序的时候,才真正体会到什么叫"刚刚好"。
你可能没亲手写过Lua,但它八成在默默给你干活:路由器里的脚本、游戏里的mod接口、编辑器(比如Neovim)的插件层,背后全是它。它是那种典型的隐形主力,不抢戏,但哪儿都离不开。
说句矫情的,Lua这种"能做多少就只做多少"的哲学,慢慢把我早年那种什么都想往框架里塞的毛病治好了。好语言未必非要庞大,够用、克制、好嵌,本身就是一种设计上的优雅。我现在写小工具,第一反应经常是先想想:这事儿能不能用Lua顺手搞定。