为什么公司停止使用Haskell?
摘要
公司经常停止使用Haskell是因为采用策略不当,以及语言优势与短期商业激励之间的不匹配,而非技术缺陷。
<p><a href="https://lobste.rs/s/pwoxht/why_do_companies_stop_using_haskell">评论</a></p>
查看缓存全文
缓存时间: 2026/09/12 16:41
**简而言之:** 公司停止使用 Haskell 往往并非由于语言的技术缺陷,而是源于不良的采用策略、组织压力,以及 Haskell 的优势与短期商业激励之间的错位。
## 谜题:为何放弃一门强大的语言?
演讲者 Bay Baugh 首先以个人轶事引出核心谜题。十年前,他寻求一份 Haskell 工作,并在新加坡一家因创建流行 HTTP API DSL 而闻名的初创公司获得了一个运维职位。入职第一天,他得知公司上一位 Haskell 开发者在一个月前已经离职。这种“公司采用而后放弃 Haskell”的模式,正是本次演讲试图解释的现象。
演讲强调,这并非针对特定公司的批评。正如 Bay 所说:“我在此不是要点名批评。我在此不是要诋毁任何人……更多的是我观察到的模式。”他引用了托尔斯泰关于不幸家庭的名言,暗示成功的科技公司各有相似之处,而不成功的公司则各有各的失败方式。
## Haskell 的市场定位:一个“奇特的中间地带”
Bay 认为 Haskell 在行业中占据了一个困难的细分领域,这为采用挑战埋下了伏笔。
* **非主流语言:** Haskell 并非主流语言。他引用了一篇 2013 年题为“选择 Java 从未让人丢过工作”的演讲,指出那时 Haskell 就已被视为“老派”。当使用非主流语言的项目失败时,其失败常被错误地归咎于语言本身。
* **不再“时髦”:** TypeScript、Rust 甚至定理证明器 Lean 等更新的语言,吸引了寻求新意的开发者的注意力。Haskell 既不是闪亮的新事物,也不是安全的主流选择。
* **去中心化的生态系统:** 与像 OCaml 这样由单一公司(Jane Street)深度影响发展的语言不同, Haskell 的文化避免任何单一实体拥有过大的控制权。这导致了一个健康但分散的生态系统,存在着相互竞争的工具和理念(例如 `lens` 对 `optics`,各种效果系统)。
## 企业现实 vs. 工程价值
一个核心主题是健全的软件工程与典型企业行为之间的冲突。Bay 断言,受利润动机——特别是*短期*股东价值——驱动的企业系统性低估长期质量和维护的价值。
* **利润最大化高于质量:** “最大化股东价值”的激励往往与“缓慢构建高质量软件”不相容。这可能导致员工发展和代码质量被降级处理。
* **“更坏即更好”现象:** Bay 引用了理查德·加布里埃尔的著名文章,暗示行业在经济上奖励那些更快发布不那么完善软件的公司,从而允许更快的迭代和市场主导。
* **短期聚焦:** 公司常为季度业绩做决策。一个典型例子是在盈利电话会议前裁员,通过削减成本提升股价,即使这在操作上是有害的。
* **轻视维护:** 他引用了 2001 年的论文《从无人因修复从未发生的问题而获得赞誉》。公司忽视预防性维护,直到系统崩溃。然后,“英勇救火”受到奖励,而安静、主动的工作则被忽视。
鉴于这些现实,Bay 提出了疑问:“在这种环境下,你究竟为何要开始使用 Haskell?”随后,他提出了采用的核心、务实论点:“这很简单。你只需要找到一个愿意付钱让你写 Haskell 的人。仅仅一个人。仅此而已。”挑战不在于语言的能力,而在于获得商业上的正当理由。
## Haskell 采用中的常见陷阱
根据他收集的那些“宝可梦般”的故事,Bay 概括了 Haskell 计划失败的几个原因。
### 重大重写的错误
最致命的模式之一是**用 Haskell 完全重写现有代码库**。这种方法往往始于新团队一种有害的态度,他们可能对使现有团队变得多余而感到欣喜。这立即与那些理解业务领域和当前系统的人形成了对立关系。此外,仍在产生收入的旧代码库必须并行维护,消耗资源。Bay 暗示这是灾难的配方。
### 不匹配的用例
许多成功的 Haskell 企业将该语言用于“非常无聊的事情”——电子商务、保险、Web 服务器。其逻辑是,虽然领域可能乏味,但 Haskell 能使其对熟练开发者更有吸引力,从而留住那些原本可能离职的人才。当公司试图将 Haskell 应用于其优势不那么相关或生态系统尚不成熟的领域时,问题就会出现。
### 缺乏机构认可
如果缺乏从上到下对语言哲学的深入理解和承诺,采用可能会失败。这包括:
* **糟糕的人才策略:** 期望轻松招聘到中级 Haskell 专家是不现实的。更可行的策略是招聘聪明的通才并投资于培训,或招聘高级专家来指导初级员工。
* **忽视生态系统成熟度:** 低估构建内部工具和掌握库所需的时间。团队需要时间不仅学习语言本身,还要学习其惯用模式和生态系统。
* **“露营之旅”模式:** 仅靠一位在角落热情的“Haskell 倡导者”起步是不可持续的。成功需要通过结对编程、代码评审和共同学习,在团队内建立知识的临界质量。
## 结论:关键在于策略,而非语言
Bay 重申,公司停止使用 Haskell 的原因很少是语言的技术缺陷。而是源于有缺陷的采用策略、错位的商业期望以及软件行业的巨大压力。语言本身功能强大,但其成功整合需要从一开始就进行审慎的规划、设定现实的目标,并获得真正的组织支持。
演讲并未以确定的答案结尾,而是为讨论提出了一个挑衅,在阐明导致放弃的常见模式后。
来源:https://www.youtube.com/watch?v=2PebXEak24M
相似文章
Scarf已弃用Haskell
Scarf创始人Avi Press解释了公司决定在投入生产七年后弃用Haskell的原因,其驱动力是AI对开发经济学的转变,其中较慢的编译时间成为LLM辅助编码的瓶颈。
因为不够有趣:编程语言为何失败
一篇分析编程语言为何失败的文章,认为语言的采用更多取决于它如何服务于程序员这一职业、艺术和工作,而非技术优势。
为什么评估初创公司会失败(2025)
本文探讨了为何独立的人工智能评估初创公司很少能成功,原因包括人才流向技术栈中更有利可图的部分、客户群体狭窄,以及优化压力削弱了评估的效用。
当你的最爱编程语言面临法西斯主义问题时,你该怎么办?
作者因创建者 DHH 的争议性观点,对使用 Ruby 和 Rails 感到矛盾,探索了 Hanami 和 Gleam 等替代品,但未找到完美替代。
设计模式很烂
本文认为设计模式被高估了,它们常常是对语言局限性不必要的变通,以Java为主要例子,并与Scala等更具表现力的语言进行对比。