-1

我读过一篇关于 BrainFuck 的文章,这是一种速度慢、对用户不友好的语言,其目标只是创建世界上最小的编译器。根据wikipedia,他们已将 MS-DOS 的大小降低到98 字节

这看起来非常小,但对我来说很难想象它有多小。当我查看Java等下载页面时,文件(取决于操作系统)小至27MB。与 BrainFuck 相比,这是巨大的,但据我了解,这还包括它附带的所有库。

有没有办法查看编译器占用的实际空间?我很想将 BrainFuck 与其他编译器进行比较,例如 Java、C++、Assembler(也许更多)。

4

1 回答 1

1

有没有办法查看编译器占用的实际空间?

当然,下载上述编译器并检查它们占用了多少磁盘空间;并且不要忘记考虑它们的依赖关系。

但是,对于 Oracle 的 Java 编译器之类的东西可能会很棘手;您下载的内容不仅仅是javac,它是将 Java 编译为 Java 字节码的实际模块。该模块隐藏在tools.jar文件中,通过检查它可以看到编译器大约占用了 3 MB。

但是话又说回来,那个编译器是用 Java 编写的,所以你必须有一些 JVM + 运行时库来运行它;我不知道可以运行它的最小包是什么,但我猜它至少会是几个好的 MB。

即使是编译为本机代码的语言也经常需要一些运行时库(例如C 标准库)——如果你想计算它们的大小,这就是你的选择。

我很想将 BrainFuck 与其他编译器进行比较,例如 Java、C++、Assembler(也许更多)

您列表中的所有项目都不是编译器。Brainfuck、Java 和 C++ 是语言;assembler 是将汇编语言转换为目标代码的工具的通用名称。您要比较的是具体的实现。

无论如何,请记住,编译器通常不会针对小磁盘空间进行优化——即使是这样,这也是一个次要目标。此外,仅基于此来比较编译器是没有意义的——例如,上面的 Brainfuck 编译器没有任何优化可言(而且 Brainfuck 无论如何都是一种极低级的语言)。你真的可以将它与一种表达能力更强且由编译器积极优化的高级语言进行比较吗?我看不出这有什么意义。

于 2013-10-13T16:56:07.263 回答