当学习像C或C++这样的编译语言时,您需要了解编译器。为了运行代码,您必须首先将其编译。编译代码将其从文本表示转换为可执行的内容。生成的代码非常快,并且可以使用预处理器等工具。
当学习像Python、Matlab或Ruby这样的动态语言时,您需要了解解释器。为了运行代码,您只需将其键入解释器中。因此,您可以在运行时玩弄代码并更改程序的行为。这种方法的缺点似乎是解释性语言的速度相对较慢,而且没有明显的编译时间,这使得预处理器不可能实现。
然后有即时编译器,类似于解释性语言,但与编译语言相比,性能损失较小。但它们通常不支持预处理器,并且不输出可运行二进制文件。
然后我学习了Lisp,它可以被编译、解释和其他形式使用,同时又快又具有强大的预处理系统(宏)。这在Lisp世界中似乎很普遍,但在其他地方却不是这样。
为什么没有流行的C解释器或Python编译器?为什么解释性语言和编译语言之间存在如此强烈的分界线?(我知道一些项目可以编译Python或解释C,但总体上它们似乎不是很流行。)
当学习像Python、Matlab或Ruby这样的动态语言时,您需要了解解释器。为了运行代码,您只需将其键入解释器中。因此,您可以在运行时玩弄代码并更改程序的行为。这种方法的缺点似乎是解释性语言的速度相对较慢,而且没有明显的编译时间,这使得预处理器不可能实现。
然后有即时编译器,类似于解释性语言,但与编译语言相比,性能损失较小。但它们通常不支持预处理器,并且不输出可运行二进制文件。
然后我学习了Lisp,它可以被编译、解释和其他形式使用,同时又快又具有强大的预处理系统(宏)。这在Lisp世界中似乎很普遍,但在其他地方却不是这样。
为什么没有流行的C解释器或Python编译器?为什么解释性语言和编译语言之间存在如此强烈的分界线?(我知道一些项目可以编译Python或解释C,但总体上它们似乎不是很流行。)