前阵子把SICP啃完,顺手摸了遍Common Lisp。刚上手那几天特别拧巴,满屏括号看得眼晕,同事路过还以为我在写配置文件。但熬过那个阶段之后再看别的语言,脑子里自动就把代码解析成树:if是节点,参数是子节点,循环是带回溯的边。这感觉挺上头,有点像忽然开窍,看什么都自动分层了。
Lisp最让我服气的是宏。别的语言要写一堆样板,它直接在编译期改写语法树,等于你缺什么语法就自己造什么语法。代码即数据这件事,一旦真信了,元编程就不再是黑魔法,而是日常操作。同构的好处是,你写程序处理程序和处理数据用的是同一套思路,心智负担骤减——从前觉得抽象的东西,忽然就落地了。
还有个点挺有意思:Lisp算得上AI的母语,早期符号主义那整套都是在它上面长出来的。现在大模型满天飞,回头看符号主义那套脉络,反而觉得两边不是替代关系。从某种角度看,理解Lisp对搞明白神经网络之前的AI思路很有帮助,也让人在热潮里少一点盲从。
当然我也不是劝人都去转Lisp,实际项目里它确实冷门,生态也薄。但当成一门思想训练来学,性价比极高。你们有没有类似体验,某门语言学完,看问题的视角整个变了?