摘要
面向对象语言带来许多的益处,其中的抽象性,可以让程序员隐藏来自对象客户端的对象实现细节。不幸的是,在跨越抽象边界如频繁的过程调用中总是伴随着巨大的运行时开销。因此,尽管频繁的使用抽象是这类语言的设计目的,但这是不切实际的,因为,它会导致程序非常低效。
激进的编译器优化会降低抽象的开销。但是优化编译器带来长的编译时间会延长编程环境反馈程序变化的时间。此外,优化也会与源码级别的调试冲突。因此,程序员面临一个两难的选择,不得不在高效的抽象和高效的编程环境之间进行选择。本论文会展示如何通过延迟编译调和这个看起来是矛盾的目标。