维基百科描述了具有以下属性的引导编译器:
我在网上读到的所有东西都假定初始子集版本会被引导,但难道不可能引导最近的编译器版本(使用最新发布的二进制文件)吗?
这难道不有利于编译器编写者吗?:能够教唆新特性。
虽然我不知道有一种使用最新版本作为引导程序的语言,但我确信它们可能存在;我只是想知道是否有充分的理由不这样做。谢谢!
作为一个具体的例子,Go编程语言文档解释了默认的引导编译器是版本1.4。因此,最新的Go编译器代码不能在1.4之后添加新特性(即:输入别名),但可能只在测试中添加。
更新:对我的问题的附加解释,如果一个bug需要在核心编译器1.4中修复,并且这个bug可能会影响到所有的后续版本,那么它们需要再次编译。根据引导链的发生方式,可能有不同的含义。是否有理由使用这样或那样的方式?
(1.4是核心版本)
发布于 2019-05-09 18:12:41
想一想为什么存在引导编译器。需要创建可执行代码的高级语言需要一些可以使用的东西才能开始。当你从头开始的时候,你有几个选择:
我已经看到了这两种方法的使用,特别是如果我们谈论的是运行在通用运行时平台上的语言,比如Java运行时或公共语言运行时(即dotnet)。然而,许多编程语言作者更喜欢他们创建的语言。
创建引导编译器实际上是一个困难的问题。你需要足够多的创造,这样你就可以有工作了。通常情况下,需要多个级别的引导。使用这种语言的旧版本有几个原因:
https://softwareengineering.stackexchange.com/questions/391675
复制相似问题