C#或Java类型语言的技术术语是什么?

时间:2008-10-14 07:56:40

标签: c# java programming-languages naming

这可能是一个非常简单的问题,但这类语言的技术术语是什么?

它们使用通过JVM或CLR发送的“中间”汇编类型语言。它们都是面向对象的,它们都依赖于诸如Java虚拟机或公共语言运行时之类的中介来编译成本机机器语言。

与Asm / C / C ++不同,它们不直接编译为本机机器语言,需要密集的内存分配知识。他们都使用垃圾收集。

是否有一个技术术语可以将C ++中的Java和C#分开?

9 个答案:

答案 0 :(得分:27)

C ++和.NET / Java之间的关键区别在于不再需要自动回收内存。这称为垃圾收集。对于此属性,它们称为托管平台。

Java / .NET都将字节码编译延迟到本机代码,直到最后一分钟。对于这个属性,它们被称为 JIT编译(及时)。

C#/ Java / C ++语言被称为命令式,面向对象的语言。

.NET和Java中的类型系统只允许可验证的方法调用。对于此属性,它们被称为静态类型

C#/ Java / C ++ 图灵完整,这意味着在实践中,他们可以进行任何计算。

答案 1 :(得分:5)

这些语言通常被称为“托管”语言。

答案 2 :(得分:4)

中间表示更多是运行时系统的属性而不是语言本身的属性。这些类型的系统通常称为Bytecode系统。

答案 3 :(得分:4)

它们有时被称为静态类型的托管编程语言。

答案 4 :(得分:3)

自从微软推出.NET以来,他们开始使用“托管”这个词来区分逻辑上至少在虚拟机上运行的语言和在原始金属上运行的语言。这个词大部分都流行起来。

答案 5 :(得分:1)

'托管'或'内存管理'或'垃圾收集'都是可接受的术语,用于区分内存的分配/收集方式,尽管第一种可以说是现在最常见的。

对于编译为中间语言(IL),它取决于它们运行的​​虚拟机(VM)的工作方式。在.NET中,公共语言运行库(CLR)VM在执行之前将IL编译为机器代码,这称为即时编译或“JIT编译”。其他环境实际上并没有将代码编译为机器代码,而是简单地解释它,这明显更慢,这被称为“解释”语言。

答案 6 :(得分:1)

我相信这将是托管语言。

答案 7 :(得分:0)

这取决于,如果你在谈论它们在虚拟机上运行的事实,那么它们被视为JIT编译(即时)或字节码(逻辑1/2编译和1/2解释)。 / p>

如果您正在谈论垃圾收集,那么它们简称为垃圾收集。

这里的关键点是两个属性是分开的,垃圾收集语言不必具有虚拟机,并且基于虚拟机的语言不必被垃圾收集。

作为示例,Python是一种具有垃圾收集的解释语言,但它被解释为与在虚拟机上运行相反。

答案 8 :(得分:0)

中间“字节码”表示只是一个实现细节。可以将C ++编译为ANDF(架构中性分布格式)。 P代码曾经很受欢迎。另一方面,JavaCards通常是在没有运行中间形式的情况下分发的,并且存在直接到机器代码的Java编译器。

C ++可以是Garbage Collected。这应该在C ++ 0x中更明确。实时Java限制了实时线程的内存使用。

因此,Java / C#类型语言的术语:Java方言。

(Java是Sun Microsystems的商标,JavaScript也是。)