是否有内置垃圾收集的编译语言?
据我所知,解释器或JVM的目的是使二进制平台独立。是不是因为GC?或者在编译代码中是否可以使用GC?
答案 0 :(得分:11)
SML,OCaml,Eiffel,D,Go和Haskell都是带有垃圾收集的静态类型语言,通常会提前编译为本机代码。
答案 1 :(得分:6)
正如您正确指出的那样,虚拟机主要用于抽象出基础平台的机器相关属性。垃圾收集是一种正交技术。通常它不是一种语言必需的,但被认为是运行时环境的理想属性。确实存在具有基元的语言来分配存储器(例如, Java 中的new
和 C#)但没有基元来释放它。它们可以被认为是内置GC的语言。
一种这样的编程语言是 Eiffel 。大多数 Eiffel 编译器出于可移植性原因生成 C 代码。此 C 代码用于通过标准 C 编译器生成机器代码。 Eiffel 实现为此编译代码提供GC(有时甚至是准确的GC),并且不需要VM。特别是, VisualEiffel 编译器直接使用完整的GC支持生成本机x86机器代码。
答案 2 :(得分:1)
可以用编译语言收集垃圾。
Boehm GC是众所周知的C& C垃圾收集器。 C ++ - Wikipedia article
另一个例子是D programming language有垃圾收集
答案 3 :(得分:0)
Nim语言在使用C(++),JS和ObjectiveC代码生成方面取得了一些进步并且具有良好的可移植性