问题描述
除了某些用于编写命令的语法和规则外,编程语言是不是什么都可以,编译器可以将它们翻译成机器代码吗?
如果是,那么编程语言的速度就没有意义,因为创建优化的机器代码是编译器的工作。这意味着,如果我们为所有编程语言创建最佳的编译器,它们将具有相同的性能,这是真的吗?
另一方面,当我们说发布c++20
时,这意味着发布了一个新的编译器,该编译器可以理解添加到c++
的一些新语法规则,是吗?
解决方法
这意味着如果我们为所有编程语言创建最佳的编译器,它们将具有相同的性能,这是真的吗?
不。优秀的优化编译器无法比未优化的好的算法更快地生成错误的算法。
另一方面,当我们说发布c ++ 20时,这意味着发布了一个新的编译器,它可以理解添加到c ++的一些新语法规则,是吗?
不一定。尽管几乎每种编程语言的新版本都可能具有一些新的语法,但没有统一的规则要求更新必须具有新的语法规则。
我目前主要在Prolog中编程,它基本上具有一些基本的语法规则。所有新版本通常都会添加库,补丁程序,修复程序,更改,但是自开始以来,unification的基本语法就一直坚不可摧。
尽管许多人不会将无类型的lambda calculus视为一种编程语言,但它只有抽象和应用程序;语法不会改变。