是否有任何内置垃圾收集的编译语言?

时间:2014-01-10 06:04:13

标签: language-agnostic garbage-collection programming-languages

是否有内置垃圾收集的编译语言?

据我所知,解释器或JVM的目的是使二进制平台独立。是不是因为GC?或者在编译代码中是否可以使用GC?

4 个答案:

答案 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)

https://nim-lang.org

Nim语言在使用C(++),JS和ObjectiveC代码生成方面取得了一些进步并且具有良好的可移植性