【问题标题】:Which programming languages have JIT compilers?哪些编程语言有 JIT 编译器?
【发布时间】:2011-02-21 05:29:57
【问题描述】:

我知道 C# 和 Java。还有人知道其他人吗?

【问题讨论】:

    标签: compiler-construction programming-languages jit


    【解决方案1】:

    严格来说,JIT 是运行时的属性,而不是语言。迂腐的观点,但这意味着任何在 JVM 上运行的语言都可以利用 JVM 的 JIT。 Jython、JRuby、Groovy 等。

    Tamarin 也有 JIT。我认为这可以运行 JavaScript 和 ActionScript 吗?不积极...

    【讨论】:

    • 对。我更改了这个问题的标题以反映这一事实,谢谢!
    【解决方案2】:

    Lua 拥有令人印象深刻的LuaJIT

    PLT Scheme 的 JIT 已经有一段时间了。

    我相信这两者都仅限于 x86。

    【讨论】:

    • LuaJIT for x86-64 处于测试阶段,即将推出。
    【解决方案3】:

    维基百科上的Just-In-Time Compilation 文章列出了更多:

    • GNU 闪电 - 在运行时生成汇编语言代码的库
    • Mozilla nanojit - 一个小型、跨平台的 C++ 库,可发出机器代码。它被用作 Mozilla Tamarin 和 SpiderMonkey Javascript 引擎的 JIT

    还有几个 C++ 的汇编 emmiters。

    至于 C# - 所有 .NET 语言都使用相同的运行时和 jit。 VB.NET、C#、F#、IronPython、IronRuby、COBOL.NET 等等...

    【讨论】:

      【解决方案4】:

      对于 Python,有一个 PyPy 项目,其中包含 JIT(在许多情况下,使代码比 CPython 运行得更快)

      【讨论】:

        【解决方案5】:

        在定义/使用 JIT 编译器方面存在一些混淆:它是一种编程语言吗?它是一个程序吗?运行时环境?

        事实上,它是一种特定编程语言的实现,它为特定的目标指令集架构(x86、x86_64、PPC、...)提供 JIT 编译器。

        例如,SBCL 实现为 Common LISP 提供了 JIT 编译器,但该语言的其他实现不提供(例如 CLISP)。

        另一个例子,Java 虚拟机的 OpenJDK 实现为某些架构提供了 JIT,但不为仍然解释字节码的其他架构(例如 ARM)提供 JIT。

        附带说明:不要忘记 Factor 编程语言。该实现大量使用 JIT 编译器。

        【讨论】:

          【解决方案6】:

          我自己不是 Julia 专家,但它是一种严重依赖 JIT 的语言。许多人在这里断言 JIT 纯粹是语言的运行时实现方面。这就是它最初的构想。但据我所知,Julia 作为一门语言的设计深受 JIT 的影响和构建。

          【讨论】:

            【解决方案7】:

            带有额外库的 C++。

            【讨论】:

            【解决方案8】:

            .NET 运行时使用 JIT,因此任何语言都能满足这一要求。您可以找到更多信息here

            【讨论】:

              【解决方案9】:

              Smalltalk 有 JIT 编译器。

              【讨论】:

                【解决方案10】:

                C# 不使用 JIT。 C# 编译为 .NET 平台的 CIL,而 .NET 在执行时使用 JIT。

                .NET 不仅仅是 C#。还有 VB.NET、Delphi.NET、Fujitsu Cobol、IronRuby、IronPython、F# 等。所有面向 .NET 平台的语言都在运行时使用 .NET JIT 编译器。

                【讨论】:

                  【解决方案11】:

                  编程语言不使用 JIT。程序使用 JIT。

                  C# 没有 JIT C# 被翻译成 CIL 并且 CIL 'executable' 运行 JIT。

                  Dalvik 使用 Java 的语法,但被编译成它自己的字节码。 Dalvik VM 与 Java VM 完全不同。

                  【讨论】:

                  • +1 用于提及 Dalvik。这就是我最初提出这个问题的动机。
                  【解决方案12】:

                  Julia 的设计初衷就是为了工作 使用 JIT 编译器。

                  【讨论】:

                    猜你喜欢
                    • 1970-01-01
                    • 1970-01-01
                    • 1970-01-01
                    • 2023-04-09
                    • 2011-05-02
                    • 1970-01-01
                    • 1970-01-01
                    • 1970-01-01
                    • 2010-10-30
                    相关资源
                    最近更新 更多