为了我的编程语言课,我正在撰写一篇关于语言设计历史上一些重要人物论文的研究论文。其中一篇由CAR Hoare所写的论文引起了我的注意,因为它反对独立编译技术,而在C甚至变得流行之前,这种技术就已被用于C和后来的C++。
既然这主要是为了优化加快编译时间,那么Java和C#有什么特点使它们能够避免依赖于独立编译?是编译器技术还是语言本身的元素有助于实现这一点?还有其他编译语言在它们之前使用过这些技术吗?
为了我的编程语言课,我正在撰写一篇关于语言设计历史上一些重要人物论文的研究论文。其中一篇由CAR Hoare所写的论文引起了我的注意,因为它反对独立编译技术,而在C甚至变得流行之前,这种技术就已被用于C和后来的C++。
既然这主要是为了优化加快编译时间,那么Java和C#有什么特点使它们能够避免依赖于独立编译?是编译器技术还是语言本身的元素有助于实现这一点?还有其他编译语言在它们之前使用过这些技术吗?
.dll
和 .class
文件中的元数据非常像预编译头文件-已经解析和索引,可以进行快速查找。在我看来,最大的一个因素是Java和.NET都使用中间语言。这意味着编译后的单元(jar/assembly)包含了许多有关类型、方法等的表达式元数据作为前提条件,这意味着已经方便地布置好以供参考检查。运行时会进行检查,以防你想耍花招 ;-p
这与支撑COM的MIDL并没有太大区别,尽管TLB通常是一个单独的实体。
如果我误解了您的意思,请告诉我...
C/C++生成的目标文件仅供链接器读取,而不是编译器。