在学习 C 或 C++ 等编译语言时,您会了解编译器。为了运行你的代码,你必须先编译它。编译您的代码会将其从文本表示形式转换为可以执行的内容。生成的代码非常快,可以使用预处理器等。
在学习 Python、Matlab 或 Ruby 等动态语言时,您会了解解释器。为了运行您的代码,您只需将其输入到解释器中。因此,您可以在运行时使用您的代码并动态更改程序的行为。这样做的缺点似乎是解释型语言相当慢,而且缺乏明确的编译时间似乎使得预处理器不可能。
然后是即时编译器,它们像解释语言一样使用,但与编译语言相比性能不足。但它们通常不使用预处理器,也不输出准备运行的二进制文件。
然后我学习了 Lisp,它可以被编译、解释和你有什么,同时它既快速又拥有强大的预处理系统(宏)。这在 Lisp 世界中似乎是常识,但在其他任何地方都不是。
为什么没有流行的 C 解释器或 Python 编译器?为什么解释语言和编译语言之间存在如此大的差异?(我知道存在一些可以编译 Python 或解释 C 的项目,但总的来说它们似乎不是很受欢迎)。