即时编译的简史:从 1960 到 2000 的四十年
来源:dl.acm.org — 2003-06-01
📋 概述
这是 ACM Computing Surveys 2003 年的一篇经典综述,作者 John Aycock 系统梳理了四十年的即时编译(JIT)工作。JIT 泛指程序开始执行之后才进行的动态翻译,软件系统从 1960 年代起就在用这类技术。文章讨论为什么要 JIT、JIT 系统面临哪些约束(可用的编译时间、运行时才能拿到的动态信息、可移植性、指令集与内存限制),并据此提出一套分类方案,把 1960 到 2000 年间的各类系统归入其中——从早期的 APL 实现、Smalltalk 与 Self 的自适应编译,到 Java 字节码即时编译与二进制翻译。
🔑 核心要点
- JIT 的定义是「程序开始执行之后才发生的任何翻译」,起点可以追到 1960 年代。
- 文章只问两件事:为什么要 JIT,以及 JIT 系统受哪些硬约束。
- 关键约束包括可用的编译时间、运行时才能获得的动态信息,以及跨指令集与平台的可移植性。
- 分类方案不是按语言或厂商划分,而是按设计上必须做的取舍来划分。
- 覆盖范围从 APL、Smalltalk、Self 到 Java 与二进制翻译,正好四十年。
💡 金句
我们考察即时编译背后的动机与它所受的约束,并为这类系统提出一套分类方案。
👍 0
👎 0
← 返回 Lobsters 首页