什么在代码大小方面胜过:编译器还是解释器?

What outperforms in code size: compilers or interpreters?

哪个代码往往更小?

  1. 真实机器码(Ada、C、C++、Fortran等)

  2. 解释器或伪代码编译器生成的伪代码(Java、Python、Perl 等)

许多年前,MS 提供了 MSVC++ 版本(非 .NET,那是旧时代),带有特定的 p 代码生成,比 x386 代码更小。想法没有直接的延续。后来是 Sun Java、MS Java 演变为 J#,然后是 .NET

目前已知的最紧凑的代码表示是某些 Forth 实现所使用的 indirect threaded code。它介于固定的字节码格式和机器代码之间。

但是很难从外来源语言中生成合理、紧凑的 Forth 代码,因此为了获得最佳结果,您必须立即使用 Forth 或其他具有类似抽象方法的语言进行编码。

从 C 或 Java 之类的东西生成的线程代码更难压缩,尽管有一些有趣的技术。当然,生成的代码仍然比机器代码小。