【问题标题】:What is the technical term for C# or Java type languages?C# 或 Java 类型语言的技术术语是什么?
【发布时间】:2008-10-14 07:56:40
【问题描述】:

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

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

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

是否存在将 Java 和 C# 与 C++ 分开的技术术语?

【问题讨论】:

    标签: c# java programming-languages naming


    【解决方案1】:

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

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

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

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

    C#/Java/C++ 是图灵完备的,这意味着在实践中,它们可以产生任何计算。

    【讨论】:

    • 有人可能会说它们是基于http://en.wikipedia.org/wiki/ALGOL 的语言,因为这是它们派生的家族。
    • 托管代码比垃圾收集更多;例如,自动验证等证明代码不能以不允许的方式运行。垃圾收集平台只是被称为垃圾收集平台:)
    • Calum 是对的:“托管”与内存管理无关。
    • Java Turing 是如何完成的,而 C#/C++ 不是?根据Wikipedia article,条件分支是图灵完备所需要的,这不是Java独有的。我在这里错过了什么吗?
    • @Niels,已编辑以消除任何混乱。事实上,即使是 Windows 批处理文件也是图灵完备的,所以是的,当然 C# 也是。
    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

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

      【讨论】:

      • 我也见过“伪编译”这个词
      • 我同意你的观点。这一点在 .NET 环境中特别容易注意,在该环境中,运行时和可用于定位 RT 的语言显然是不同的东西。
      【解决方案4】:

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

      【讨论】:

        【解决方案5】:

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

        【讨论】:

          【解决方案6】:

          “托管”或“内存托管”或“垃圾收集”都是可以接受的术语,以根据内存的分配/收集方式来区分它们,尽管第一个可以说是当今最常见的。

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

          【讨论】:

            【解决方案7】:

            我相信它会是托管语言。

            【讨论】:

              【解决方案8】:

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

              如果你说的是垃圾回收,那么它们就简称为垃圾回收。

              这里的重点是这两个属性是分开的,垃圾回收语言不一定要有虚拟机,而基于虚拟机的语言不一定要被垃圾回收。

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

              【讨论】:

                【解决方案9】:

                中间“字节码”表示只是一个实现细节。 C++ 可以编译为 ANDF(架构中性分发格式)。 P-code 曾经非常流行。另一方面,JavaCard 通常是分发的,没有运行中间形式的能力,并且存在直接到机器码的 Java 编译器。

                C++ 可以被垃圾收集。这在 C++0x 中应该更明确。 Real-Time Java 限制了实时线程的内存使用。

                所以,Java/C# 类型语言的一个术语:Java 方言。

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

                【讨论】:

                  猜你喜欢
                  • 2011-03-13
                  • 1970-01-01
                  • 2016-12-05
                  • 1970-01-01
                  • 2011-10-08
                  • 1970-01-01
                  • 1970-01-01
                  • 2018-10-23
                  • 1970-01-01
                  相关资源
                  最近更新 更多