当前位置: 首页 > news >正文

别等了,JavaScript 迟早要完——2014 年那场预言至今仍在应验

2014 年就有人公开宣判 JavaScript 死刑,不是因为它不够好,而是因为 Web 平台终将进化到不再需要它。十年过去,这场演讲的每一个论点都在被验证。

这是什么

2014 年,软件工程师 Gary Bernhardt 在 PyCon 上发表了一场名为“The Birth and Death of JavaScript”的经典技术演讲。这场演讲后来被整理成文字稿,在 Hacker News 上引发持续讨论,至今仍被反复引用。

演讲的核心论点非常直接:JavaScript 是一个诞生于 10 天之内的“意外产物”,它的设计缺陷是结构性的,无法通过打补丁修复。随着 Web 平台性能提升、浏览器能力增强,以及更优系统语言(如 Rust、Go、Wasm 目标语言)的成熟,JavaScript 最终会被“编译目标”和“原生 Web 语言”双重夹击而消亡。

这不是一篇技术预言小说,而是一份基于 Web 技术演进逻辑的推演。演讲者不是要黑 JS,而是想提醒所有人:别把职业生涯押在一个注定被替代的中间层上。

为什么重磅

在 2014 年,JavaScript 正处于如日中天的阶段:Node.js 刚火,React 还没发布,ES6 还在草案阶段。敢在这个时间点说“JS 会死”,无异于在 2015 年说“比特币会崩”。

但 Bernhardt 的逻辑不是情绪宣泄,而是基于一个核心对比:

维度JavaScript 时代未来(演讲预测)
运行方式解释执行,JIT 优化编译到 Wasm / 原生字节码
类型系统动态弱类型,隐式转换灾难静态强类型,编译期检查
工具链需要 Babel、Webpack 等转译直接编译到 Web 目标
性能受限于 JS 引擎优化上限接近原生性能
生态依赖必须学 JS 才能写 Web任何语言都能编译到 Web

这个对比在今天看来已经部分成真:WebAssembly 于 2017 年正式发布,Rust 和 Go 都可以编译到 Wasm 运行在浏览器中。TypeScript 虽然没杀死 JS,但本质上是对 JS 的“投降式改良”——承认原生 JS 不够用。

技术亮点

1. “10 天设计”的诅咒

Brendan Eich 在 1995 年用 10 天创造了 JavaScript 的第一个版本。这不是黑历史,是事实。Bernhardt 指出,这个时间窗口决定了 JS 的底层缺陷:

  • 没有模块系统:直到 ES6 才原生支持import/export,之前全靠社区方案
  • 全局作用域污染var声明的变量默认挂到window
  • 隐式类型转换[] + []等于空字符串,[] + {}等于"[object Object]"

这些不是“特性”,是设计妥协。后续所有“最佳实践”本质上都是在绕开这些坑。

// 经典面试题:猜猜输出什么?console.log(0.1+0.2===0.3);// falseconsole.log(typeofNaN);// "number"console.log([]==![]);// true

2. “JavaScript 是汇编语言”的悖论

演讲中最反直觉的观点是:JavaScript 实际上已经变成了 Web 的“汇编语言”。开发者不再直接写汇编,而是写 C/Rust/TypeScript 然后编译成汇编。同理,未来开发者也不会直接写 JS,而是写更高级的语言,然后编译成 JS 或 Wasm。

这个类比在今天已经成立:TypeScript 编译到 JavaScript,Rust 编译到 Wasm,Dart 编译到 JavaScript。JS 正在从“开发语言”退化为“编译目标”。

3. 性能墙与 Wasm 的降维打击

Bernhardt 预测,当 Web 应用需要接近原生性能时(如游戏、视频编辑、3D 渲染),JS 的 JIT 优化天花板会成为瓶颈。而 Wasm 的出现直接绕过了这个限制:

  • Wasm 是二进制格式,解析速度比 JS 快一个数量级
  • Wasm 的指令集接近硬件,编译器可以做更激进的优化
  • Wasm 的内存模型是线性的,没有 GC 暂停问题
// Rust 编译到 Wasm 的示例#[wasm_bindgen]pubfnfibonacci(n:u32)->u32{matchn{0=>0,1=>1,_=>fibonacci(n-1)+fibonacci(n-2),}}

这段 Rust 代码编译成 Wasm 后,在浏览器中的执行速度比等效 JS 快 2-5 倍,且没有 GC 抖动。

4. 工具链的“自噬”现象

演讲还预言了一个讽刺现象:JS 的工具链会越来越复杂,最终反噬 JS 本身。为了弥补 JS 的缺陷,社区发明了 Babel、Webpack、ESLint、Prettier、Jest……这些工具本身是用 JS 写的,但它们的复杂度已经超过了大多数业务代码。

“你花在配置 Webpack 上的时间,比写业务逻辑的时间还多”——这句话在 2018 年之前是段子,之后是现实。

5. 消亡不是“消失”,而是“降级”

Bernhardt 特别强调:JS 的消亡不是像恐龙一样突然灭绝,而是像 COBOL 一样慢慢退居二线。JS 不会消失,但会从“Web 唯一语言”降级为“Web 兼容层语言”。

今天看,这个判断非常精准:

  • 新项目首选 TypeScript 而非原生 JS
  • 性能敏感模块用 Rust/Wasm 替代
  • 框架层(React/Vue)正在抽象掉 JS 的 DOM 操作细节
  • 边缘计算(Cloudflare Workers)支持多种语言编译到 JS

对 AI 工程师的启示

1. 别把技术栈当信仰,要当工具

AI 领域的技术更迭比 Web 更快。2018 年的 TensorFlow 1.x 和 2023 年的 PyTorch 2.0 几乎是两个世界。如果你把职业生涯押在某个框架或语言上,5 年后可能面临“技能贬值”。

可执行建议:每季度花 1 天时间,调研一个你当前技术栈的“替代方案”。不是要你立刻切换,而是保持对生态变化的敏感度。比如现在用 PyTorch,可以看看 JAX 或 MLX 在做什么。

2. 关注“编译目标”而非“开发语言”

AI 工程师经常纠结“用 Python 还是 C++ 写模型推理”。但更本质的问题是:你的模型最终运行在什么平台上?

  • 如果目标是浏览器,考虑 ONNX Runtime Web 或 TensorFlow.js
  • 如果目标是移动端,考虑 Core ML 或 TFLite
  • 如果目标是边缘设备,考虑 Wasm 或 C 编译

可执行建议:在选型时,先确定“最终运行环境”,再反推“用什么语言开发”。不要因为“Python 好写”就强行把模型部署到浏览器。

3. 警惕“工具链膨胀”陷阱

AI 项目的工具链膨胀速度不亚于 Web 项目:Docker、Kubernetes、MLflow、Weights & Biases、DVC、Ray……每个工具解决一个问题,但组合起来就是运维噩梦。

可执行建议:每引入一个新工具,问自己三个问题:

  1. 这个工具解决的核心问题是什么?
  2. 不用它,有没有更简单的替代方案?
  3. 如果它 2 年后停止维护,我的迁移成本是多少?

参考链接

  • 原文演讲(文字稿):https://www.destroyallsoftware.com/talks/the-birth-and-death-of-javascript
  • Hacker News 讨论:https://news.ycombinator.com/item?id=7691071
  • WebAssembly 官方文档:https://webassembly.org/

一深思AI · AI 情报站 · 2026-06-15

http://www.jsqmd.com/news/1020308/

相关文章:

  • 深入解析HDI16主机接口:非DMA与DMA数据传输模式详解
  • RIP路由协议
  • 2026运营岗位学数据分析的重要性
  • 煤矿主通风机双电源无扰动快切改造实战:陕西星火煤业 KT3380 应用案例
  • 2026年6月更新:家电清洗与防水补漏服务口碑参考——四川及长三角地区企业综合对比 - 优质品牌商家
  • Universal Control Remapper:5分钟打造你的专属游戏控制方案
  • C#个人学习笔记之 数组的介绍--006
  • 量子神经网络与生成电路的技术突破与应用
  • LangGraph 基础:Node、Edge、State 是什么?
  • 用ChatGPT重构数据科学学习路径:问题驱动的认知脚手架
  • 教培机构小程序如何制作开发?教你零基础上手
  • 金融行业学数据分析的价值
  • 北京配眼镜多少钱?瞳壤五款功能性镜片一目了然 - 配眼镜新资讯
  • MSC8251多核DSP调试实战:JTAG与OCE模块深度解析
  • SolidWorks第四部分_直接实体建模特征3_分割特征应用
  • 【第七期】漏洞攻防-前端篇:XSS 与 CSRF —— 当浏览器成为攻击者的“肉鸡”
  • 5个步骤掌握低代码数据处理:Awesome-Dify-Workflow的AI辅助数据分析终极指南
  • 2026市场营销岗位学数据分析的技术价值
  • 嵌入式MCU芯片选择机制:从地址解码到中断响应的实战解析
  • 2026年6月《剑与翼》正版下载安装完整指南:三端适配调试与新手稳定开荒手册一、文章概述
  • ​6月16日晚上19:00直播丨Ascend C开源资料及样例分享
  • 微信海量聊天记录怎么存?聊聊后端流水的数据库分库分表与归档设计
  • 从固定周期到动态触发:超自动化巡检的智能调度
  • LSTM为何比RNN更适用于工业级时序建模
  • `pdfplumber` 是一个用于从 PDF 文件中提取文本、表格和元数据的 Python 库
  • 二次供水泵房多中心数据上报到企业、部门等平台的方案
  • 北京配眼镜去哪好?五种日常场景匹配五种镜片方案 - 配眼镜新资讯
  • 蓝牙产品:蓝牙信标 (BLE Beacon) 深度调研
  • 开短路测试(Open/Short Test)原理
  • 5个生产级Jupyter扩展构建可审计Notebook工作流