compiler-construction - 引导编译器:为什么?

标签 compiler-construction theory bootstrapping

我了解一种语言如何能够自我引导,但是对于为什么您应该考虑使用 bootstrap ,我却找不到很多引用。

直观的答案是,您正在编写的语言提供了在编译器的“基础”语言中找不到的实用程序,并且该语言的功能相对非常适合于编译器。

例如,引导C++编译器会很有意义-如果正确使用OOP,则与使用普通C相比,维护编译器可能会容易得多。

另一方面,MATLAB的确使矩阵数学比普通C容易得多,但是我看不出在MATLAB中编写MATLAB编译器/解释器有任何明显的好处-看来它变得不太容易维护。类似的观点可以应用于R编程语言。或者举个极端的例子,那就是用Haskell编写的引导Whitespace-绝对是Whitespace的巨大超集。

是 bootstrap 利用新语言功能的唯一原因吗?我知道还有“因为我们可以”的原因,但这不是我要寻找的:)

最佳答案

有一个原则叫做“吃自己的狗粮”。通过使用工具,您可以演示该工具的实用性。

经常被问到:“如果语言X的编译器不是用语言X编写的,为什么还要冒险使用它?”

当然,这仅适用于适合编译器编写 Realm 的语言。

关于compiler-construction - 引导编译器:为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1493747/

相关文章:

c# - 为什么 async 关键字在编译时会生成一个枚举器和附加结构?

compiler-construction - 编译器如何管理它们的内存占用?

language-agnostic - 垃圾收集可以与显式内存管理共存吗?

visual-studio - 如何引导 SQL Server 2008 Express SP1?

java - JBoss 启动 java.io.FileInputStream 初始化 AbstractKernelController 时出错

apache - 为什么在我的 Apache 服务器上安装 GCC 时得到 "configure:error: no acceptable C compiler found in $PATH"?

c++ - C++ 编译器如何区分左移位/右移位和 ostream<</ostream>> 运算符?

java - 反汇编 Java JIT 编译的原生字节码

programming-languages - 区分大小写与强类型语言(或松散类型语言)有什么关系吗?

PHP: bootstrap.php