当前位置: 首页 > 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.zskr.cn/news/1532154.html

相关文章:

  • 深入解析HDI16主机接口:非DMA与DMA数据传输模式详解
  • 2026运营岗位学数据分析的重要性
  • 2026年6月更新:家电清洗与防水补漏服务口碑参考——四川及长三角地区企业综合对比 - 优质品牌商家
  • RIP路由协议
  • 金融行业学数据分析的价值
  • 2026市场营销岗位学数据分析的技术价值
  • 嵌入式MCU芯片选择机制:从地址解码到中断响应的实战解析
  • 北京配眼镜多少钱?瞳壤五款功能性镜片一目了然 - 配眼镜新资讯
  • MSC8251多核DSP调试实战:JTAG与OCE模块深度解析
  • 微信海量聊天记录怎么存?聊聊后端流水的数据库分库分表与归档设计
  • 从固定周期到动态触发:超自动化巡检的智能调度
  • 北京配眼镜去哪好?五种日常场景匹配五种镜片方案 - 配眼镜新资讯
  • 二次供水泵房多中心数据上报到企业、部门等平台的方案
  • LSTM为何比RNN更适用于工业级时序建模
  • ESP-CSI实战指南:无线信道感知技术的完整应用方案
  • MSC711x定时器PWM与级联配置实战:从寄存器到波形生成
  • 多分类评估指标手算指南:TP/FP/FN/TN与TPR/FPR逐类解析
  • MyTV-Android 架构解析:面向老旧安卓设备的直播系统性能优化方案
  • 社交行为与语言变化如何量化抑郁康复进程
  • 【TEE从入门到精通及实战】12 IAS验证的暗礁:从HTTP响应解析到信任链的构建
  • 如何构建抖音直播数据采集系统:开源工具深度解析与应用实践
  • 小白从零入门 Web 安全!四大进阶阶段完整路线,学完直接拿下 offer
  • ASTM D4169-23E1 DC4与 DC6分配周期区别
  • 镇江报名 CPPM 注册采购经理哪家靠谱?机构选择避坑指南 - 众智商学院课程中心
  • PXD10微控制器ADC模块实战:从配置到调试的嵌入式数据采集指南
  • 长沙配眼镜去哪好?按五个日常场景匹配对应的镜片方案 - 配眼镜新资讯
  • CTF PHP反序列化 __wakeup 绕过 完整实战(Windows+PHPStudy)
  • 杭州配眼镜适合什么人:按预算分三档找到你的方案 - 配眼镜新资讯
  • 2026绍兴管道疏通真实测评!马桶/下水道疏通/疏通管道避坑更新版 - 极速版本
  • Python asyncio 性能优化:从事件循环到高并发服务的工程实践