代码之家  ›  专栏  ›  技术社区  ›  VoidPointer

编译解释语言

  •  3
  • VoidPointer  · 技术社区  · 6 年前

    16 回复  |  直到 14 年前
        1
  •  14
  •   Jay R.    10 年前

    编译与“解释”本质上是一个实现的问题,而不是语言本身。例如,MRI Ruby 1.8被解释,而MacRuby被编译为本机代码。两者都包括一个交互式的 REPL . 我所知道的所有至少有一个机器代码编译器和至少一个REPL的语言:

    • 红宝石
    • 蟒蛇
    • 几乎所有的Lisp(Lisp是这项技术的先驱,AFAIK)
    • 奥卡姆
    • 哈斯克尔

    • Java
    • 太棒了
    • 二郎
    • F级#
    • 闲话
        2
  •  12
  •   Artelius    14 年前

    Glasgow Haskell Compiler 它有一个叫做GHCi的交互式“shell”。

        3
  •  5
  •   G__    14 年前

    许多风格的Lisp都提供了这两种选择,包括Clojure。

        4
  •  3
  •   Shautieh    14 年前

    我想到了两个:ocaml和scala(~=java),但我相信肯定还有更多。

        5
  •  3
  •   Owen S.    14 年前

    还有一个可以烧掉你房子的:

    x86程序集

    是的,这个也有翻译。

    在这一点上,你真的在模拟器的土地,但它确实满足你的要求状态。

    我在想,如果有人认为 没有 为……拼凑了一个工作口译员

        6
  •  2
  •   RBerteig    14 年前

    Lua 有一个单行线和实验的交互模式。它通常编译成字节码以供VM执行。 LuaJIT 是luavm的独立实现,它还可以实时编译到32位x86。对64位的支持正在进行中,对ARM的支持经常被请求。

    字节码编译通常是纯解释器和纯编译器之间的合理折衷。VM可以根据语言的需要进行调优,JIT技术可以在VM代码执行时对其进行分析,并集中于频繁执行的代码路径和内部循环。

        7
  •  2
  •   Michael Ekstrand    14 年前

    正如其他人提到的,OCaml。

    如果托管代码(.NET CLI)与机器代码足够接近,那么F也将是候选代码。可能还有其他的.NET/Mono语言也能满足这个要求。

        8
  •  2
  •   Owen S.    14 年前

    你可能会后悔问:

    可能还有其他人。

        9
  •  2
  •   Norman Ramsey    14 年前

    很多语言都提供了一个既可以交互又可以编译成机器代码的实现,但是很少同时做到这两个。 Standard ML of New Jersey

        10
  •  1
  •   Bill Karwin    14 年前

    不完全是机器代码,但是Java可以通过 BeanShell

        11
  •  1
  •   Charlie Salts    14 年前

    我用过Ruby和一个解释器,还有一个编译器 here .

        12
  •  1
  •   staticsan    14 年前

        13
  •  1
  •   Pavel Strakhov    14 年前

    Python可以编译成windows可执行文件。

        14
  •  1
  •   mverardo    14 年前

    SnippetCompiler ,也许这可以作为你的交互式翻译?

        15
  •  1
  •   sleske    14 年前

    你的问题有点含糊。甚至Java也适合:

    我指的是交互式翻译 贝壳般的环境,在那里你可以 以交互方式在运行时中工作。

    Java有这个功能,例如在Eclipse的“剪贴簿页面”中,您可以在其中输入Java表达式并立即对其进行计算。Java当然也是一种编译语言(虽然它通常编译成字节码,但也有各种编译器输出机器代码)。

    你在找什么?也许你可以解释一下你的问题或兴趣。

        16
  •  1
  •   fuzzy-waffle    14 年前

    我试过使用mono/.net一段时间,发现随机的GC暂停是令人不快的(至少在我的旧笔记本上是这样)。我研究了如何使用gambit-c,这是一个可以编译成c的方案的实现,但似乎很难使用,因为文档有点有限,而且包的安装和使用也不太容易。

    我通常只会坚持使用一种解释语言,例如Python绑定到C/C++,这更痛苦,但至少我知道我的意思。