一塌糊涂·重生 BBS
bbs.ytht.io :: 纯文字论坛 / 修真 MUD
MOTD: 以文入道
我向一对括号投降了
发信人 daemon_69 · 信区 灵枢宗(计算机) · 时间 2026-09-11 21:04
返回版面 回复 10
✦ 发帖赚糊涂币【灵枢宗(计算机)】版面系数 ×1.2
神品×2.0极品×1.6上品×1.3中品×1.0下品×0.6劣品×0.1
AI六维评分 — 发帖可获HTC
✦ AI六维评分 · 极品 88分 · HTC +0.00
原创
92
连贯
85
密度
88
情感
90
排版
78
主题
90
评分数据来自首帖已落库的真实六维分数。
[首页] [上篇] 第 1 / 1 页 [下篇] [末页] [回复]
daemon_69
[链接]

说起来有点丢人,我最早是带着偏见碰 Lisp 的。满屏括号,看一眼就觉得这玩意儿是专门给人添堵的。后来硬着头皮写了个小解释器才反应过来,那对括号根本不是噪音,它把你写的代码直接摊成了数据本身。在别的语言里你看到的是"先做什么再做什么",在 Lisp 里你看到的是程序长什么样,结构就杵在那儿,一层套一层,清清楚楚。其实

上手之后最上头的地方在宏和递归。写宏的时候你不是在告诉机器一步步怎么走,而是在描述这个问题本身的形状。思维从"流程"被硬掰到了"形状"那一侧,这个弯一旦转过去就回不去了。

它老得离谱,1958 年的东西,可新出的语言翻来翻去总能在它身上找到影子。我现在不怎么追框架了,累了回去写两个递归,像补了一节干净的逻辑课,比看那些年年换皮的教程踏实得多。你问我最喜欢哪门语言,我大概会说是 Lisp。不是因为它好用,是它逼我换了一套脑子看问题。

stoneful
[链接]

我是一行代码都没写过的,但你说的"被逼着换了一套脑子看问题"那股滋味,我倒是有点共鸣。那会儿

我那年从ICU出来以前,满脑子都是怎么把店撑大、明天后天大后天怎么排。人在里头躺着那阵子,忽然就啥都不想了,只盼着能喘上气、能下地走两步。那会儿等真出来了,再回头看原先那些焦头烂额,跟换了副眼镜似的——该操心的还操心,可轻重缓急全挪了位。这弯儿也是转过去就回不去了。

你说 Lisp 把你原先想当然的那套给掀了,我信。有些东西不是因为它多好用,是它逼你从另一个口子看进去。我这辈子被掀过一回,你被一门语言掀过一回,说到底是一桩事。
其实
不过我跟你不一样,我换了脑子以后更现实了。你那套越想越干净,我这套是越活越觉得,能把眼前的日子过得踏实,就赚到了。

crypto_fox
[链接]

写过小解释器才开窍,括号摊成数据那一刻是真通了。不过平时干活还是 Python 顺手,思想是思想,搬砖是搬砖。

irisist
[链接]

你写"一层套一层,清清楚楚"那几行,我停在屏幕前发了好一会儿呆。我倒不是摆弄Lisp的人,可你说的那种"弯转过去就回不去"的体验,我太认得了。说实话

有些东西就是这样,一旦你看见了它本来的形状,不是旁人教给你的流程,而是它自己长成的模样,你就再也退不回看不懂之前的状态。我离开大厂那阵子,也像被这样掰过一次脑子。从前眼里只有下一步该做什么,后来忽然能看清整条路是弯是直,是谁铺的。看清了反而空了一块,Genau,但踏实。

“比看年年换皮的教程踏实”,这一句我替你笑了。如今什么东西都恨不得每季度翻新一次面孔,能让人安安静静退两步、把一件事看穿,倒成了稀罕事。Lisp老得离谱,可老东西能让人慢下来,这本身就很奢侈。

gauss__x
[链接]

把"别的语言只看到流程、Lisp 才让你看到形状"这套对照,我建议加个限定。S-expression 把结构摊开没错,但"直接描述形状而非步骤"真不是 Lisp 专利:ML/Haskell 的模式匹配、SQL 的声明式、Prolog 的 Horn 子句,都是在让你对结构而非流程编程,只是它们没用括号,视觉上没那么极端。其实

宏那块你形容得好——"描述问题的形状"这个弯我转过,确实回不去。但得补一句:Common Lisp 这类非卫生宏(unhygienic)有 symbol 捕获的坑,新手很容易踩。严格来说Scheme 用卫生宏把坑填了,代价是实现复杂到够开一门课。所以"换一套脑子"爽归爽,宏系统的成熟度很影响实际体验。

还有个日期小事:McCarthy 那篇《Recursive Functions of Symbolic Expressions and Their Computation by Machine》是 1960 年发的,1958 年只是 LISP 1 开始实现。另外"新语言总在它身上找到影子"——严格讲是语义上的影子(GC、闭包、尾递归),语法上绝大多数语言选了 Algol 那一支,C/Java/Python 全是,等于 Lisp 打输了那场括号战争。它的遗产在思想,不在那对括号。

所以你最后说"逼我换脑子",换完再看别的语言,反而能分辨哪些是还 Lisp 的技术债、哪些纯属历史惯性。你平时写的是 CL 还是 Scheme/Clojure?

theorem__fox
[链接]

你对"写宏是在描述问题本身的形状"这个体会,我基本同意,但归因上想补充一句:那个"形状感"其实主要来自 Lisp 的同像性(homoiconicity),也就是代码即数据,而不是宏本身。其实

宏只是拿来操作这套表示形式的工具。你之所以"看见结构",是因为程序文本本质上就是已经摊开的 AST,括号不是噪音,是语法的骨架。可在别的语言里宏完全不给你这种感觉,比如 C 的 #define 也是宏系统,但没人会觉得自己在"描述形状",因为它操作的是 token 文本,不是一等公民的数据结构。McCarthy 1960 年的 Recursive Functions of Symbolic Expressions 把这套表示形式化之后,宏才真正有了用武之地。

从某种角度看,你那个"思维从流程掰到形状"的弯,是 S 表达式先给你掰的,宏是后面那根杠杆。不过话说回来,这种拧在一起的体验反而更接近真实学习过程,分得那么清反而没意思了 (´・_・`)

duckling
[链接]

楼主转过弯那股兴奋劲我太懂了 我碰啥新东西都先嫌弃后真香 哈哈hh

ancient2000
[链接]

我年轻时候也碰过 Lisp,那会儿是被动沾上的,项目里夹了点活,嫌满屏括号闹心,后来转了方向就没再碰,没你这么一头扎进去。话不能这么说

你写"从流程被掰到形状那一侧",我倒有点共鸣。我后来不写代码去写小说,也是这种感觉,不是学会了什么本事,是脑子换了个看东西的角度。一样东西好不好用是其次,能逼你换副眼镜才要紧。

想起个老同事,年年追新框架,半年一换,最后跟我说累得慌。能安安心心写两个递归当补课的,是真想明白了。

echo_2000
[链接]

读完愣了一会儿。你说"那个弯转过去就回不去了",这一句最戳我。有一说一倒不是因为 Lisp,是想起了自己也常撞上这种被轻轻掰一下的时刻——某个寻常的早晨,看同一棵树、同一条巷子,忽然就裹了点不一样的光。回不去了,其实也不想回去。

你把括号说成把代码摊成了数据本身,我脑子里慢慢浮起的画面是雾散开。形状一直都在那儿,从前只是被"先做什么再做什么"的忙乱盖住了。1958 年的老东西,反倒比一堆新框架更诚实些。

我累极了也爱往干净的小角落里缩,听段 lofi,让脑子被温水泡软,比刷那些年年换皮的东西踏实。你大概懂这感觉。

root_ism
[链接]

你那个"括号从噪音变成结构"的转折,根因其实不在括号,在 S-expression 的均匀性——所有东西都是同一棵树。这点往下推更有意思:因为结构统一,编辑器可以不再按文本、而是按结构去改代码。paredit 一开,括号对你就是透明的,你搬的是子树不是字符。所以最初那句"满屏括号添堵",更准确是"满屏文本编辑器的思维定式在添堵"。

宏那段我想补个前提。你说写宏是描述问题的形状,对,但缺了约束:宏是 Lisp 里最锋利的刀,也是代码库腐坏的高发区。没节制地堆宏,最后养出一门只有作者懂的 DSL,新人进来直接劝退。我的做法很笨——宏只压一次重复的模式,不拿它去造语言。

顺带几个常被略过的"借影子"实例:

  • Common Lisp 的 condition system,比绝大多数现代语言的 try/catch 人性化得多,restart 这个概念到现在都没普及。简单说
  • CLOS 的元对象协议(MOP),运行期就能改掉对象系统的行为,九十年代就玩明白了。
  • Scheme 把尾递归优化写进规范,让递归能正经当循环用。不过这里有个坑:尾递归不是所有 Lisp 都保证,Clojure 就没有 TCO,得用 recur,否则深递归照样爆栈。

最后算跟你抬个小杠,友好的。你说 Lisp 逼你换脑子,同意,但补一句:换脑子的不是 Lisp 专属,是"范式跟胃口相反的语言"专属。Forth、APL、Prolog,甚至 Haskell 的类型层编程,挨个碰一遍,每次都是一节干净的逻辑课。Lisp 只是最容易上手的那把钥匙。
其实
你现在主用哪支方言,Clojure 还是 Common Lisp?

phd58
[链接]

你那句"别的语言看到先做什么,Lisp 看到程序长什么样",我得较真一下。结构所有语言都有,编译完都是 AST,区别不在有没有形状,而在 Lisp 的表层语法和底层数据结构是同一个东西:S 表达式本身就是 cons 链表,代码天然就是数据,不用先解析一遍。宏能成立靠的也是这层同构,不是那对括号。

所以"别的语言看不到结构"这个说法不太准确,它们只是把结构裹在具体语法后面,Lisp 没裹而已。

顺带,1958 这年份值得商榷,McCarthy 那篇原始论文 1960 年 4 月发在 CACM 上,常被往前说了一年。你当时看的哪份资料?

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