当米其林把 Clojure 带进企业:一门“小众语言”为何能在工厂系统里翻身

开发工具 2026年4月2日
当米其林把 Clojure 带进企业:一门“小众语言”为何能在工厂系统里翻身
米其林一位工程负责人分享了在制造业参考数据系统中引入 Clojure 的经历,这不是一次“技术尝鲜”,而是一场关于企业软件如何更快适应业务变化的现实选择。比起语言本身更重要的是,Clojure 展示了一条被很多大公司忽视的路径:当规则频繁变化、数据结构复杂时,传统 Java 式开发未必总是最优解。

很多企业谈技术选型时,嘴上说“面向未来”,身体却很诚实:能继续用 Java,就不换;能沿着 Spring Boot 往下走,就绝不拐弯。原因也不复杂,稳定、好招人、流程成熟,出了问题还能迅速甩锅给“业界最佳实践”。所以,当一家像米其林这样的工业企业,认真讨论要不要把 Clojure 引入企业开发栈时,这件事本身就已经很有新闻价值。

这篇来自米其林技术博客的文章,讲的是一个看上去不算性感的项目:制造业里的参考数据系统设计。没有自动驾驶,没有大模型,也没有发布会舞台上的炫光特效。但恰恰是这种“朴素”的业务场景,更能说明一个问题——企业技术选型,最终拼的不是谁更酷,而是谁更能扛住复杂规则、频繁变更和长期维护。

一门 Lisp 老兵,为什么突然适合企业了

Clojure 不是什么新语言。它诞生于 2007 年,运行在 JVM 上,属于 Lisp 家族。光是这两个标签,就足以让很多企业开发者条件反射式后退半步:一个是“函数式”,一个是“Lisp”,听起来都不像那种适合写报销系统、供应链平台和工厂后台的东西。

但技术史总是很爱开玩笑。那些曾被认为“学院派”“爱好者向”的语言,往往会在某些特定场景里突然显露锋芒。Clojure 就属于这种类型。它的核心吸引力,不在于“语法优雅”这种程序员圈子里的自我感动,而在于它对“数据”和“变化”特别友好。对于一个制造业系统来说,数据结构多、业务规则多、上下游依赖多,而且今天这么定义、明天又得改,这几乎是常态。传统面向对象开发在处理这类问题时,经常会把简单变化堆成复杂层级,最后变成一座“类的森林”。

Clojure 走的是另一条路。它把代码和数据的边界压得很低,天然适合描述规则、转换结构、做快速验证。文章作者提到,他们的业务逻辑希望尽量从“硬编码”转向“文本描述”——也就是用 DSL(领域特定语言)来表达规则。这个判断很关键。因为一旦业务逻辑需要被频繁修改,甚至希望让非开发人员也能参与理解和配置,那么“把规则写死在 Java 类里”通常就开始显得笨重了。

真正打动企业的,不是情怀,而是 DSL 和 REPL

Clojure 社区里常说一句很有名的话:code as data,代码即数据。对圈外人来说,这听起来很玄;对企业开发来说,这其实非常接地气。意思是,你可以用一种非常接近数据结构的方式去表达程序逻辑。文章中的例子就很典型:一套业务规则可以直接写成嵌套数据,描述“何时触发、执行哪些动作、条件如何组合”。这类表达方式,对规则引擎、数据校验、流程编排尤其友好。

如果把它和传统 Java 做个对比,差异就很明显了。Java 当然也能实现同样的逻辑,但你大概率得先定义接口、对象、枚举、构造器、解析器,再补一堆样板代码,最后才接近真正的业务语义。Clojure 的优势是,它离问题本身更近,离“工程装修”更远。对于项目早期探索,这种差距会被无限放大:一边还在搭脚手架,另一边已经开始验证业务假设了。

另一个让作者下决心的重要原因,是 REPL。简单说,REPL 就是一种可以让开发者对正在运行的程序进行实时交互、逐段执行和快速修改的环境。很多没有接触过 Lisp 家族的人,会低估这件事的生产力价值。习惯了“写代码—编译—启动—点接口—看日志”这一整套流程之后,你很难想象,原来可以像捏黏土一样一点点试验程序行为。

在文章描述的场景里,REPL 不只是开发效率工具,它甚至改变了团队讨论业务的方式。研讨会现场,开发者可以立即试验某段规则、验证某种数据结构,快速得到反馈。这种短反馈回路,在需求还模糊、业务还在探索的阶段特别宝贵。今天很多团队把“敏捷”挂在嘴边,但如果底层工具链本身反馈很慢,那种敏捷常常只是流程上的敏捷,开发体验并不敏捷。Clojure 在这里提供的是一种真正意义上的“交互式开发”。

小众语言进入大公司,最现实的考题还是人才和边界

当然,企业不是编程语言实验室。再好的技术,一旦落地到团队协作,就绕不开一个残酷问题:谁来写,谁来维护,谁来接盘?文章里最有分寸感的地方,不是夸 Clojure 多强,而是作者始终在谈“使用深度”的控制。

这点我很认同。很多企业引入新技术失败,不是技术本身不行,而是上来就用得太深。宏系统、元编程、全栈函数式架构,这些东西确实强大,但如果团队多数人长期在 Java/Spring 世界里工作,骤然切换思维方式,很容易出现一种诡异局面:系统跑得挺好,但只有两个人能看懂。等那两个人离职,技术先进性就会迅速变成组织负债。

米其林这次的策略更像“边走边学”:先把 Clojure 用在原型验证,再逐步嵌入部分功能模块,既利用 code-as-data 和 REPL 的优势,又避免把整个系统一夜之间改造成纯函数式乐园。这种克制,其实比激情更难得。企业技术演进最怕“宗教化”,今天全员微服务,明天全员 Rust,后天全员 AI Agent,口号喊得山响,系统却一地鸡毛。Clojure 真正适合企业的地方,恰恰不是它能颠覆一切,而是它可以作为现有 JVM 体系中的一个高价值补充件。

这也是它和 Erlang、Haskell 这类语言相比更现实的一面。Clojure 运行在 JVM 上,可以直接复用 Java 生态和现有企业框架,和 Spring Boot 栈共存。对大公司来说,这意味着引入成本可控,技术风险也没那么“孤岛化”。你不需要为了尝试一门新语言,把组织能力、运维体系和基础设施一起推倒重来。

这件事为什么值得今天重提

把时间拉回 2021 年,这篇文章发布时,云原生、低代码、数据治理、规则引擎这些话题已经在企业技术圈持续升温。今天再看,它反而更有现实意义。因为现在的软件系统面临的不是“功能不够多”,而是“变化太快”。业务规则越来越碎,数据链路越来越长,跨团队协作越来越频繁。很多公司表面上在做数字化,实际上是在用越来越复杂的代码,硬扛越来越动态的业务。

从这个角度看,Clojure 的启发不只属于 Clojure。它提醒企业重新思考一个老问题:我们到底应该把多少业务逻辑写成程序,多少写成数据,多少交给可配置的规则系统?这背后不是语法偏好,而是软件可演化能力的问题。

这也是为什么我觉得,米其林这次尝试比一篇“某公司用了某语言”的经验帖更有价值。它碰到的是工业软件里最真实的痛点:规则复杂且常变,团队又必须在创新和稳定之间拿捏分寸。这样的场景,在制造业有,在金融有,在物流有,在零售同样有。今天不少公司迷恋“全能平台”和“统一中台”,但真正难的,往往是如何把业务变化的成本降下来。Clojure 提供的,并不是银弹,而是一种很有启发性的思路。

不过争议也同样存在。小众语言是否会带来招聘困难?函数式思维是否会提高团队门槛?DSL 的自由度会不会反过来制造新的复杂度?这些问题都不是杞人忧天。尤其是在企业环境里,任何让少数专家掌握核心语义的技术,都必须警惕知识垄断和维护断层。把业务规则“数据化”当然优雅,但规则一旦膨胀成没人读得懂的嵌套结构,那也会成为另一种形式的技术债。

所以,这件事最值得记住的,也许不是“Clojure 很强”,而是“企业终于开始认真为变化设计软件”。比起盲目追逐新语言,更重要的是承认:很多老办法,确实不适合解决今天的数据密集型、规则驱动型问题了。

Summary: 米其林这次引入 Clojure,真正可贵的不是“敢用小众语言”,而是它没有把技术创新做成一场冒险,而是做成了一次可控试验。我判断,Clojure 不会在企业里成为下一个 Java,但它会在规则引擎、数据处理、原型验证这类场景里继续扩大影响力。更大的趋势是,未来企业软件会越来越重视“代码之外的业务表达能力”,谁能更优雅地处理变化,谁就更有竞争力。
Clojure米其林企业软件开发制造业参考数据系统JavaSpring BootJVM技术选型业务规则频繁变化函数式编程