0

我在读一本关于编译器设计的书,里面有一段说,

不同语言的编译器的主要区别在于它们生成的代码。一般来说,可以说命令式和面向对象语言的编译器以汇编语言生成代码。而函数式语言编译器在 C 或 C++ 中生成。

关于 C/C++ 的最后一部分是否正确?我无法通过谷歌搜索找到任何东西,所以我在这里问。

4

1 回答 1

6

关于 C/C++ 的最后一部分是否正确?

不,这不对。

有些语言确实编译为 C,但这并不特定于函数式语言。如果这在函数式语言中比在非函数式语言中更常见,那么它肯定不会扩展到人们可能将其称为函数式语言的属性。

此外,大多数现实世界的函数式编程语言绝对不是编译成 C 的(通过它们的官方和/或最常用的实现)。如果我列出我能想到的前十种函数式编程语言/实现(Haskell(GHC、Hugs)、OCaml、F#、Scala、Clojure、Racket、Common Lisp(SBCL、CLisp)),它们都不能编译为 C(到据我所知)。GHC 确实有一个 C 后端,但它已经停止了。

我能想到的两种语言,它们的主要实现编译为 C 是 Vala 和 Haxe,它们都不是函数式语言。在其中一个链接线程中,提到了鸡计划。因此,这是一个使用 C 的相对知名的实现。这不足以证明“通常”是这种情况的说法。

于 2016-11-20T23:30:49.543 回答