题: “某种编程语言的某些属性可能要求将代码写入其中的唯一方法是通过解释来执行。换句话说,不可能编译成传统CPU的本机代码。这些属性是什么?” 编译器:Parag H. Dave和Himanshu B. Dave的原则和实践(2012年5月2日) 这本书没有给出答案的任何线索。我试图找到有关编程语言概念(SEBESTA)的答案,但无济于事。网络搜索也无济于事。你有什么线索吗?
我想知道是否可以为像Ruby这样的动态语言构建编译器,使其具有与C / C ++类似和可比的性能?根据我对编译器的了解,以Ruby为例,由于Ruby处理反射的方式,诸如从整数到大整数的自动类型转换以及缺少静态类型等特性,使得编译Ruby代码永远不可能高效地进行编译。对于Ruby来说非常困难。 是否有可能构建一个可以将Ruby或任何其他动态语言编译为与C / C ++非常接近的二进制文件的编译器?是否有根本的原因导致JIT编译器(例如PyPy / Rubinius)最终或永远无法在性能上与C / C ++相匹配? 注意:我确实知道“性能”可能是模糊的,所以要澄清一下,我的意思是,如果您可以在C / C ++中以X的性能执行X,那么您可以在Ruby / Python中以接近Y的性能执行X吗?X是从设备驱动程序和OS代码到Web应用程序的所有内容。
我打算讲授有关各种主题的冬季课程,其中之一将是编译器。现在,我在考虑整个季度要分配的作业时遇到了这个问题,但是这让我很困惑,因此我可以用它作为示例。 public class DeadCode { public static void main(String[] args) { return; System.out.println("This line won't print."); } } 在上面的程序中,很明显,由于,print语句将永远不会执行return。编译器有时会给出有关死代码的警告或错误。例如,以上代码将无法在Java中编译。但是,javac编译器不会在每个程序中检测到所有死代码实例。我如何证明没有编译器可以这样做?