8 月 22 日,一篇题为《A Friendly Introduction to Racket》的博文被提交到 Hacker News,拿到 40 点热度与 8 条评论。以 HN 的标准这只能算温和上浮,但放在当下语境里挺有意思:Python 几乎垄断了编程入门,AI 助手连样板代码都替你写好,还有人在认真回答“为什么值得看一眼 Racket”。
这篇文章讲了什么
从标题与讨论走向看,这篇托管在 bearblog 上的入门文走的是“友好”路线:不预设读者有函数式编程背景,把重点放在 Racket 与众不同的设计取向上。评论区里老用户聊的多是同类话题,它与 Scheme、Clojure 的亲缘关系,宏系统的表达力,以及它作为教学语言的长寿。
热度的确平平,但它出现的时机颇为微妙:当代码可以被逐段生成,“把语言当作给定事实”的程序员越来越多,而 Racket 的整个存在意义,恰恰是反对这一点的。
先写程序,再造语言
Racket 的历史可以从 1990 年代中期说起。以 Matthias Felleisen 为首的 PLT 研究组当时想做一套编程教学工具,产物就是 PLT Scheme,2010 年更名为 Racket。三十年来它换了名字、换了实现(Racket 8 起默认以 Chez Scheme 作为编译后端),但两条主线没变。
第一是教学。 配套教材《How to Design Programs》与 IDE DrRacket 构成了一整套入门方法论:初学者从极小的语言子集起步,随课程推进逐步解锁完整语言。今天不少“编程思维”课程的设计,都能在这里找到影子。
第二是“语言导向编程”。 这是 Racket 最独特的立场:当问题足够复杂,最好的解法往往不是写一个更大的程序,而是先造一门贴合问题的小语言,再用它写程序。文件首行的 #lang 声明让“换语言”像换库一样轻,宏系统则允许安全地扩展语法,官方的文档系统 Scribble、渐进类型层 Typed Racket,都是用这套机制“长”出来的,而非另起炉灶的独立项目。
在 2026 年学一门冷门语言,图什么
把 Racket 放进今天的工具箱,它的位置相当清晰:
- 作为学习环境:几乎没有历史包袱带来的妥协,适合把“求值”“递归”“抽象”这些概念一次性想清楚;
- 作为实验平台:它是编程语言研究久经考验的试验田,想在周末给自己造一门 DSL,Racket 大概是阻力最小的路径;
- 作为职业选择:得泼冷水,招聘岗位寥寥,生态规模与主流语言差着量级,指望它吃饭并不现实。
真正值得琢磨的是它与 AI 编程潮流的关系。生成式工具让“写出能跑的代码”变得廉价,但选择抽象、划定边界、必要时设计一门小语言,这些判断力并没有被外包出去。Racket 恰好把这些能力当作课程核心,这也是它作为“入门语言”在今天反而显得新鲜的原因。
简短点评
一篇入门文的价值,从来不是劝人迁移技术栈,而是提供一面镜子。Racket 照出的问题是:我们大多数人熟练地使用着语言,却很少想过语言本身可以被设计。哪怕最终一行 Racket 都不写,花一个下午理解 #lang 和宏能做什么,也会改变你看待主力语言的方式。在这个意义上,“先学写码,再造语言”不是口号,而是一种顺序建议。