JavaScript 的诞生与死亡(2014)

JavaScript 的“死亡”与长寿

  • 许多人认为 JavaScript 永远不会“死”,把它的寿命类比为 PHP,甚至是 C。
  • 也有人区分“生物学意义上的死亡”和实际上的过时:像 COBOL/Fortran 一样,JS 可能会持续几十年,但变得小众。
  • 还有人指出,大型语言模型大量接触 JS 代码,进一步巩固了它的地位。
  • “以后再也不会有人写 JS”的预测被认为并未实现;尽管有 TypeScript,人们仍然在写大量纯 JS。

JavaScript、asm.js 与 WebAssembly

  • 讲座里“JS 会成为编译目标”的想法在很大程度上成真了:许多语言都会编译到 JS 或 TS。
  • asm.js 基本被视为已弃用,取而代之的是 WebAssembly(Wasm);有些人认为这实现了那一预测。
  • 但也有人认为 Wasm 反而与该论点相矛盾,因为它明确不是 JS,而是被设计为真正的底层基座。
  • 许多人觉得 Wasm 的进展比预期慢;由于无法直接访问 DOM,JS 仍然是必需的胶水代码。

语言语义与怪癖

  • 关于使用 null 还是 undefined 的争论:有人会避免把 undefined 作为有意值;另一些人则认为两者都是语言的基础,并被核心 API 使用。
  • 讨论还涉及 IEEE 754 NaN 语义,以及经典 JS 怪现象(+0/-0、类型强制转换)到底是缺陷,还是符合标准的行为。
  • 有些人不喜欢 JS 这种“变异版 C”式的不一致;也有人说问题不在语法本身。

转译与“JS 即汇编”

  • 一种反复出现的模式是:“我们发明一个更好的 JS,然后把它转译成 JS。”
  • TypeScript 被广泛视为实际上的 JS 编写方式,尤其是在大型项目中。
  • JS 常被描述为 Web 的新汇编层,即便上层使用的是更高级的语言。

Electron、跨平台应用与替代方案

  • Electron 因为能用熟悉的网页 UI 最快覆盖 Mac/Windows/Linux 而受到称赞,尽管它很重。
  • 批评者提到它占用大量内存以及客户端不稳定;有人甚至把“Electron 应用”视为原生支持差的代名词。
  • 提到的替代方案包括:Flutter(对 Web/桌面质量评价不一)、Qt、基于 Rust 的 GUI、基于 Tk 的技术栈,以及纯网页应用。

Web OS 与更宏大的预测

  • 有些人认为 WebAssembly 和基于浏览器的技术栈,是走向浏览器/Wasm OS 的一步;也有人指出 ChromeOS 和当前系统并不完全符合这一愿景。
  • 演讲中提到的内核级 JS/asm.js 被澄清为虚构;这场演讲被视为推想型虚构。

讲座反响与相关材料

  • 这场讲座因其呈现和前瞻性而广受好评,也常被用作演示灵感。
  • 相关讲座“wat”和“Boundaries”也经常被推荐和称赞,尽管有人指出其中有少量技术性不准确之处。