gpt4 book ai didi

perl - 为什么 Perl 有单独的 "perl"编译器和 "perlcc"前端?

转载 作者:行者123 更新时间:2023-12-01 05:15:55 33 4
gpt4 key购买 nike

我试图用我的 Perl 代码制作一个可执行文件,然后我意识到 perl 编译器没有这样的选项。经过一番搜索,我找到了perlcc ,它是 Perl 编译器的前端并完成工作(生成二进制文件)。

为什么 Perl 有单独的编译器和前端? 例如,用于 C/C++ 的 gcc 本身就是一个完整的工具。 是这样吗,还是有一些好的原因?

最佳答案

这个答案是很久以前写的,不反射(reflect)当前状态。我宁愿删除这个答案,但我不能,因为它被接受了。见 Reini's answer而是。


人们将 Perl 程序编译为二进制文件并不常见。很多人都想这样做,但这不是它的工作方式。你想达到什么目的?可能还有另一种方法可以做您想做的事情。

Perl 程序实际上分两个阶段执行:编译时和运行时。它也是一种动态语言,因此您无法在编译阶段结束时告诉您需要编译的所有内容,并且在编译阶段您可能需要运行一些代码。

Perl 在这方面更像 Java 或 Ruby 而不是 C。当您运行 Perl 程序时,perl 解释器会加载所有源代码并将其编译成 抽象语法树perl 在运行时执行(或解释)的字节码。这与 Java、Ruby 和 Python 所做的事情相同。

Perl 的一个缺点是它没有像其他语言那样保存编译结果的好方法。这意味着您最终每次都编译源代码。 pperl 和特定领域的工具(例如 mod_perl 或 fastcgi)有一些解决方法。

BEGIN block 、eval 等有一些模糊位,但这主要是它的工作方式。 perlmod中有更多详情.

如果我们从现在所知道的一切重新开始,这个设计缺陷就不会存在,事实上,在 Perl 6 中它不存在。 :)

关于perl - 为什么 Perl 有单独的 "perl"编译器和 "perlcc"前端?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3621670/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com