Lisp 为什么难读:从认知科学看括号该放在哪里
来源: paultm.nl — 2026-09-28
概述
Lisp 因括号密集而声名不佳,社区习惯把原因归结为「只是不熟悉」。作者不接受这个解释,借认知科学里的斯特鲁普效应、工作记忆容量与视觉嵌套等观察,论证一个更具体的结论:把括号包在表达式外面的写法,本身就比 operation(arguments...) 需要更多解析力气,并据此推导出对语言语法设计的启示。
核心要点
- 人类感知并不平等对待所有输入,比如文字颜色与词义冲突朗读会变慢的斯特鲁普效应;作者把这类效应看成感知机制内置的「硬件加速」,语法设计应当顺应它。
- 工作记忆只能装下三到五项,读嵌套表达式就像在维护一个心智栈:每个未闭合的括号都要一直记着。
- 反过来,像 f(a)(b)(c) 或 f[a][b] 这类写法把嵌套交给左结合来表达,读者不必记住并配对括号,开闭括号的距离也更近,视觉匹配成本大幅下降。
- 作者认为中缀运算符、关键字、语言原语专用语法对可读性的影响都被高估了;真正被低估的是非 Lisp 语言拥有多种应用写法,这种差异本身就是视觉地标。
- 命令式写法天然让阅读顺序与求值顺序一致,方法链与就地变异都是这个方向的产物;Clojure 用线程宏给出了 Lisp 版的答案,但主流 Lisp 代码仍然要读者倒着读,这种结构在函数式风格里出现得更频繁。
金句
我们大约只能记住四对括号,超过这个层数的嵌套表达式,读起来就必须额外费力。
👍 0
👎 0
← 返回 Lobsters 首页