Compiler construction 编程语言只是一个编译器吗?

Compiler construction 编程语言只是一个编译器吗?,compiler-construction,programming-languages,Compiler Construction,Programming Languages,编程语言除了一些用于编写命令的语法和规则之外什么都不是,编译器可以将它们翻译成机器代码,这是真的吗 如果是,那么编程语言的速度就没有意义了,因为创建优化的机器代码是编译器的工作。这意味着,如果我们为所有编程语言创建最好的编译器,它们的性能都是一样的,这是真的吗? 另一方面,当我们说发布了c++20时,这意味着发布了一个新的编译器,它可以理解添加到c++中的一些新语法规则,是吗 PS:在这篇文章中,我不想提及解释语言 这意味着,如果我们为所有编程语言创建最好的编译器,它们的性能都是一样的,这是真的

编程语言除了一些用于编写命令的语法和规则之外什么都不是,编译器可以将它们翻译成机器代码,这是真的吗

如果是,那么编程语言的速度就没有意义了,因为创建优化的机器代码是编译器的工作。这意味着,如果我们为所有编程语言创建最好的编译器,它们的性能都是一样的,这是真的吗? 另一方面,当我们说发布了
c++20
时,这意味着发布了一个新的编译器,它可以理解添加到
c++
中的一些新语法规则,是吗

PS:在这篇文章中,我不想提及解释语言

这意味着,如果我们为所有编程语言创建最好的编译器,它们的性能都是一样的,这是真的吗

不。一个伟大的优化编译器不能使一个坏的算法比一个未优化的好算法更快

另一方面,当我们说C++ 20被释放时,这意味着一个新的编译器被发布,它可以理解C++中添加的一些新的语法规则,是的? 不一定。虽然几乎每一种新版本的编程语言都可能有一些新的语法,但没有一条通用的规则规定更新必须有新的语法规则

我目前主要用Prolog编程,它基本上有一些基本的语法规则。所有的新版本通常都会添加库、补丁、修复和更改,但Prolog的基本语法从一开始就坚如磐石

虽然许多人不考虑非类型化的编程语言,但它只是抽象和应用;语法没有改变

这意味着,如果我们为所有编程语言创建最好的编译器,它们的性能都是一样的,这是真的吗

不。一个伟大的优化编译器不能使一个坏的算法比一个未优化的好算法更快

另一方面,当我们说C++ 20被释放时,这意味着一个新的编译器被发布,它可以理解C++中添加的一些新的语法规则,是的? 不一定。虽然几乎每一种新版本的编程语言都可能有一些新的语法,但没有一条通用的规则规定更新必须有新的语法规则

我目前主要用Prolog编程,它基本上有一些基本的语法规则。所有的新版本通常都会添加库、补丁、修复和更改,但Prolog的基本语法从一开始就坚如磐石


虽然许多人不考虑非类型化的编程语言,但它只是抽象和应用;语法没有改变。

当人们说C++20已经发布时,这意味着新版本的语言标准已经发布。它没有提到编译器。@sepp2k这意味着没有发布任何软件(编译器或其他任何东西)?只是一份文件?是的,没错。请注意,有许多不同的C++编译器,它们往往在不同的时间添加对新语言版本的支持。它们都没有定义语言。就像我们说的“C++20添加了功能X”一样,这并不是关于编译器实现什么的陈述。据说功能X包含在C++20标准中。这意味着编译器必须支持该特性才能声称(完全)支持C++20,但即使没有编译器实现某个特性,该特性仍然是C++20的一部分,也不会有任何C++20的实现。编写编程语言规范并不简单。你会惊讶地发现,要准确地表达一种语言应该如何以一种精确、明确且涵盖所有情况的方式来表现,是多么困难。当然,对编程语言有很好的理解,才能最终得到任何合理的(和可实现的)东西。但是,是的,您可以编写语言规范,而不必编写任何软件,在某个地方发布它,然后说您已经设计了一种语言。除非你有人想要实现它,否则这不是很有用。嗯,在某些情况下,它可以用于教育目的和/或作为思想实验。例如,您可以定义一种语言,然后证明它实际上是不可实现的。或者你可以定义一个,然后要求学生证明它是否是图灵完备的,等等,或者实现它。尽管为后一种目的而设计的语言通常都有一个参考实现。当人们说C++20已经发布时,这意味着语言标准的新版本已经发布。它没有提到编译器。@sepp2k这意味着没有发布任何软件(编译器或其他任何东西)?只是一份文件?是的,没错。请注意,有许多不同的C++编译器,它们往往在不同的时间添加对新语言版本的支持。它们都没有定义语言。就像我们说的“C++20添加了功能X”一样,这并不是关于编译器实现什么的陈述。据说功能X包含在C++20标准中。这意味着编译器必须支持该特性才能声称(完全)支持C++20,但即使没有编译器实现某个特性,该特性仍然是C++20的一部分,也不会有任何C++20的实现。编写编程语言规范并不简单。你会惊讶地发现,要准确地表达一种语言应该如何以一种精确、明确且涵盖所有情况的方式来表现,是多么困难。当然,对编程语言有很好的理解,才能最终得到任何合理的(和可实现的)东西。但是,是的,您可以编写语言规范,而不必编写任何软件,在某个地方发布它,然后说您已经设计了一种语言。除非你有人想要实现它,否则这不是很有用。嗯,在某些情况下,它可以用于教育目的和/或作为思想实验。比如你